]> spindle.queued.net Git - midori/commitdiff
Imported Upstream version 0.2.0
authorRyan Niebur <ryanryan52@gmail.com>
Sun, 18 Oct 2009 21:45:13 +0000 (14:45 -0700)
committerRyan Niebur <ryanryan52@gmail.com>
Sun, 18 Oct 2009 21:45:13 +0000 (14:45 -0700)
49 files changed:
ChangeLog
data/autosuggestcontrol.css [new file with mode: 0644]
data/autosuggestcontrol.js [new file with mode: 0644]
data/extensions/adblock/config [new file with mode: 0644]
extensions/adblock.c
extensions/dnsprefetch.c [new file with mode: 0644]
extensions/formhistory.c [new file with mode: 0644]
extensions/mouse-gestures/main.c
extensions/tab-panel.c
extensions/toolbar-editor.c
extensions/wscript_build
katze/katze-array.c
katze/katze-array.h
katze/katze-http-auth.c
katze/katze-net.c
katze/katze-scrolled.c [new file with mode: 0644]
katze/katze-scrolled.h [new file with mode: 0644]
katze/katze-utils.c
katze/katze.h
midori/main.c
midori/midori-array.c
midori/midori-browser.c
midori/midori-extension.c
midori/midori-locationaction.c
midori/midori-locationaction.h
midori/midori-locationentry.c
midori/midori-locationentry.h
midori/midori-panel.c
midori/midori-preferences.c
midori/midori-stock.h
midori/midori-view.c
midori/midori-websettings.c
midori/midori-websettings.h
midori/sokoke.c
midori/sokoke.h
module.xml [new file with mode: 0644]
panels/midori-addons.c
po/LINGUAS
po/POTFILES.in
po/ca.po
po/de.po
po/el.po
po/id.po
po/ja.po
po/ko.po [new file with mode: 0644]
po/pt_BR.po
po/sk.po
tests/magic-uri.c
wscript

index baa1134c849751df4f975a86dc3c86bc883087ea..8a808deab864598f0f22f0bca8c76139c47c287c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
 This file is licensed under the terms of the expat license, see the file EXPAT.
 
+v0.2.0
+ + (Kinetic) drag scrolling on touchscreen devices
+ + Workaround a speed dial crasher
+ + Faster Adblock with element blocking, for all WebKitGTK+ versions
+ + Stripped menu, toolbar and tap on hold on Maemo, and 5.0 menu support
+ + Add a DNS prefetching extension
+ + Better IDN handling
+ + Add a form history extension
+ + Restore scrolling positions from the session
+ + Keep typed address when switching tabs
+ + Avoid storing duplicate history items per day
+ + Fix multiple duplicate HTTP authentication dialogs
+ + Pass mailto: links to the email client
+ + Improve context menu with WebKitGTK+ 1.1.15
+ + Checkbox "Remember password" in HTTP authentication
+ + Fix a crasher when modifying bookmarks
+ + Support page icons other than favicon.ico
+ + iPhone identity in Network preferences
+
 v0.1.10:
  + Fix freezing when opening multiple windows
  + Revamp Adblock with WebKitGTK+ 1.1.14 API
diff --git a/data/autosuggestcontrol.css b/data/autosuggestcontrol.css
new file mode 100644 (file)
index 0000000..a7ca89d
--- /dev/null
@@ -0,0 +1,16 @@
+div.suggestions {
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+    border: 1px solid #cccccc;
+    text-align: left;
+    background-color: #ffffff;
+    position: absolute;
+}
+div.suggestions div {
+    cursor: default;
+    padding: 0px 3px;
+}
+div.suggestions div.current {
+    background-color: #3366cc;
+    color: white;
+}
diff --git a/data/autosuggestcontrol.js b/data/autosuggestcontrol.js
new file mode 100644 (file)
index 0000000..fc0d251
--- /dev/null
@@ -0,0 +1,370 @@
+/**
+ * An autosuggest textbox control.
+ * from Nicholas C. Zakas (Author) example: http://www.nczonline.net/
+ * @class
+ * @scope public
+ */
+function AutoSuggestControl(oTextbox /*:HTMLInputElement*/,
+                            oProvider /*:SuggestionProvider*/) {
+    /**
+     * The currently selected suggestions.
+     * @scope private
+     */
+    this.cur /*:int*/ = -1;
+    /**
+     * The dropdown list layer.
+     * @scope private
+     */
+    this.layer = null;
+    /**
+     * Suggestion provider for the autosuggest feature.
+     * @scope private.
+     */
+    this.provider /*:SuggestionProvider*/ = oProvider;
+    /**
+     * The textbox to capture.
+     * @scope private
+     */
+    this.textbox /*:HTMLInputElement*/ = oTextbox;
+    //initialize the control
+    this.init();
+
+}
+
+/**
+ * Autosuggests one or more suggestions for what the user has typed.
+ * If no suggestions are passed in, then no autosuggest occurs.
+ * @scope private
+ * @param aSuggestions An array of suggestion strings.
+ * @param bTypeAhead If the control should provide a type ahead suggestion.
+ */
+AutoSuggestControl.prototype.autosuggest = function (aSuggestions /*:Array*/,
+                                                     bTypeAhead /*:boolean*/) {
+    //make sure theres at least one suggestion
+    if (aSuggestions.length > 0) {
+        if (bTypeAhead) {
+           this.typeAhead(aSuggestions[0]);
+        }
+        this.showSuggestions(aSuggestions);
+    } else {
+        this.hideSuggestions();
+    }
+};
+
+/**
+ * Creates the dropdown layer to display multiple suggestions.
+ * @scope private
+ */
+AutoSuggestControl.prototype.createDropDown = function () {
+
+    var oThis = this;
+
+    //create the layer and assign styles
+    this.layer = document.createElement("div");
+    this.layer.className = "suggestions";
+    this.layer.style.visibility = "hidden";
+    this.layer.style.width = this.textbox.offsetWidth + 10;
+
+    //when the user clicks on the a suggestion, get the text (innerHTML)
+    //and place it into a textbox
+    this.layer.onmousedown =
+    this.layer.onmouseup =
+    this.layer.onmouseover = function (oEvent) {
+        oEvent = oEvent || window.event;
+        oTarget = oEvent.target || oEvent.srcElement;
+
+        if (oEvent.type == "mousedown") {
+            oThis.textbox.value = oTarget.firstChild.nodeValue;
+            oThis.hideSuggestions();
+        } else if (oEvent.type == "mouseover") {
+            oThis.highlightSuggestion(oTarget);
+        } else {
+            oThis.textbox.focus();
+        }
+    };
+
+
+    document.body.appendChild(this.layer);
+};
+
+/**
+ * Gets the left coordinate of the textbox.
+ * @scope private
+ * @return The left coordinate of the textbox in pixels.
+ */
+AutoSuggestControl.prototype.getLeft = function () /*:int*/ {
+
+    var oNode = this.textbox;
+    var iLeft = 0;
+
+    while(oNode.tagName != "BODY") {
+        iLeft += oNode.offsetLeft;
+        oNode = oNode.offsetParent;
+    }
+
+    return iLeft;
+};
+
+/**
+ * Gets the top coordinate of the textbox.
+ * @scope private
+ * @return The top coordinate of the textbox in pixels.
+ */
+AutoSuggestControl.prototype.getTop = function () /*:int*/ {
+    var oNode = this.textbox;
+    var iTop = 0;
+    while(oNode.tagName != "BODY") {
+        iTop += oNode.offsetTop;
+        oNode = oNode.offsetParent;
+    }
+    return iTop;
+};
+
+/**
+ * Handles three keydown events.
+ * @scope private
+ * @param oEvent The event object for the keydown event.
+ */
+AutoSuggestControl.prototype.handleKeyDown = function (oEvent /*:Event*/) {
+    switch(oEvent.keyCode) {
+        case 38: //up arrow
+            this.previousSuggestion();
+            break;
+        case 40: //down arrow
+            this.nextSuggestion();
+            break;
+        case 13: //enter
+            this.hideSuggestions();
+            break;
+    }
+};
+
+/**
+ * Handles keyup events.
+ * @scope private
+ * @param oEvent The event object for the keyup event.
+ */
+AutoSuggestControl.prototype.handleKeyUp = function (oEvent /*:Event*/) {
+    var iKeyCode = oEvent.keyCode;
+    //for backspace (8) and delete (46), shows suggestions without typeahead
+    if (iKeyCode == 8 || iKeyCode == 46) {
+        this.provider.requestSuggestions(this, false);
+
+    //make sure not to interfere with non-character keys
+    } else if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode < 46) || (iKeyCode >= 112 && iKeyCode <= 123) ) {
+        //ignore
+    } else if (oEvent.ctrlKey) {
+       iKeyCode = 0;
+        this.hideSuggestions();
+    } else {
+        //request suggestions from the suggestion provider with typeahead
+        this.provider.requestSuggestions(this, true);
+    }
+
+
+
+};
+
+/**
+ * Hides the suggestion dropdown.
+ * @scope private
+ */
+AutoSuggestControl.prototype.hideSuggestions = function () {
+    this.layer.style.visibility = "hidden";
+};
+
+/**
+ * Highlights the given node in the suggestions dropdown.
+ * @scope private
+ * @param oSuggestionNode The node representing a suggestion in the dropdown.
+ */
+AutoSuggestControl.prototype.highlightSuggestion = function (oSuggestionNode) {
+    for (var i=0; i < this.layer.childNodes.length; i++) {
+        var oNode = this.layer.childNodes[i];
+        if (oNode == oSuggestionNode) {
+            oNode.className = "current"
+        } else if (oNode.className == "current") {
+            oNode.className = "";
+        }
+    }
+};
+
+/**
+ * Initializes the textbox with event handlers for
+ * auto suggest functionality.
+ * @scope private
+ */
+AutoSuggestControl.prototype.init = function () {
+
+    //save a reference to this object
+    var oThis = this;
+
+    //assign the onkeyup event handler
+    this.textbox.onkeyup = function (oEvent) {
+
+        //check for the proper location of the event object
+        if (!oEvent) {
+            oEvent = window.event;
+        }
+
+        //call the handleKeyUp() method with the event object
+        oThis.handleKeyUp(oEvent);
+    };
+
+    //assign onkeydown event handler
+    this.textbox.onkeydown = function (oEvent) {
+
+        //check for the proper location of the event object
+        if (!oEvent) {
+            oEvent = window.event;
+        }
+
+        //call the handleKeyDown() method with the event object
+        oThis.handleKeyDown(oEvent);
+    };
+
+    //assign onblur event handler (hides suggestions)
+    this.textbox.onblur = function () {
+        oThis.hideSuggestions();
+    };
+
+    this.textbox.onclick = function () {
+        oThis.hideSuggestions();
+    };
+
+
+    //create the suggestions dropdown
+    this.createDropDown();
+};
+
+/**
+ * Highlights the next suggestion in the dropdown and
+ * places the suggestion into the textbox.
+ * @scope private
+ */
+AutoSuggestControl.prototype.nextSuggestion = function () {
+    var cSuggestionNodes = this.layer.childNodes;
+
+    if (cSuggestionNodes.length > 0 && this.cur < cSuggestionNodes.length-1) {
+        var oNode = cSuggestionNodes[++this.cur];
+        this.highlightSuggestion(oNode);
+        this.textbox.value = oNode.firstChild.nodeValue;
+    }
+};
+
+/**
+ * Highlights the previous suggestion in the dropdown and
+ * places the suggestion into the textbox.
+ * @scope private
+ */
+AutoSuggestControl.prototype.previousSuggestion = function () {
+    var cSuggestionNodes = this.layer.childNodes;
+
+    if (cSuggestionNodes.length > 0 && this.cur > 0) {
+        var oNode = cSuggestionNodes[--this.cur];
+        this.highlightSuggestion(oNode);
+        this.textbox.value = oNode.firstChild.nodeValue;
+    }
+};
+
+/**
+ * Selects a range of text in the textbox.
+ * @scope public
+ * @param iStart The start index (base 0) of the selection.
+ * @param iLength The number of characters to select.
+ */
+AutoSuggestControl.prototype.selectRange = function (iStart /*:int*/, iLength /*:int*/) {
+
+    //use text ranges for Internet Explorer
+    if (this.textbox.createTextRange) {
+        var oRange = this.textbox.createTextRange();
+        oRange.moveStart("character", iStart);
+        oRange.moveEnd("character", iLength - this.textbox.value.length);
+        oRange.select();
+
+    //use setSelectionRange() for Mozilla
+    } else if (this.textbox.setSelectionRange) {
+        this.textbox.setSelectionRange(iStart, iLength);
+    }
+
+    //set focus back to the textbox
+    this.textbox.focus();
+};
+
+/**
+ * Builds the suggestion layer contents, moves it into position,
+ * and displays the layer.
+ * @scope private
+ * @param aSuggestions An array of suggestions for the control.
+ */
+AutoSuggestControl.prototype.showSuggestions = function (aSuggestions /*:Array*/) {
+
+    var oDiv = null;
+    this.layer.innerHTML = "";  //clear contents of the layer
+
+    for (var i=0; i < aSuggestions.length; i++) {
+        oDiv = document.createElement("div");
+        oDiv.appendChild(document.createTextNode(aSuggestions[i]));
+        this.layer.appendChild(oDiv);
+    }
+
+    this.layer.style.left = this.getLeft() + "px";
+    this.layer.style.top = (this.getTop()+this.textbox.offsetHeight) + "px";
+    this.layer.style.visibility = "visible";
+
+};
+
+/**
+ * Inserts a suggestion into the textbox, highlighting the
+ * suggested part of the text.
+ * @scope private
+ * @param sSuggestion The suggestion for the textbox.
+ */
+AutoSuggestControl.prototype.typeAhead = function (sSuggestion /*:String*/) {
+
+    //check for support of typeahead functionality
+    if (this.textbox.createTextRange || this.textbox.setSelectionRange){
+        var iLen = this.textbox.value.length;
+        this.textbox.value = sSuggestion;
+        this.selectRange(iLen, sSuggestion.length);
+    }
+};
+
+
+/**
+ * Request suggestions for the given autosuggest control.
+ * @scope protected
+ * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
+ */
+FormSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
+                                                          bTypeAhead /*:boolean*/) {
+    var aSuggestions = [];
+    var sTextboxValue = oAutoSuggestControl.textbox.value;
+
+    if (!this.suggestions)
+        return;
+
+    if (sTextboxValue.length > 0){
+        //search for matching suggestions
+        for (var i=0; i < this.suggestions.length; i++) {
+            if (this.suggestions[i].indexOf(sTextboxValue) == 0) {
+                aSuggestions.push(this.suggestions[i]);
+            }
+        }
+    }
+    //provide suggestions to the control
+    oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
+};
+
+function initSuggestions () {
+    var inputs = document.getElementsByTagName("input");
+    for (i=0;i<inputs.length;i++)
+    {
+        var ename = inputs[i].getAttribute("name");
+        var eid = inputs[i].getAttribute("id");
+        if (!ename && eid)
+                ename=eid;
+        if (inputs[i].type == "text")
+            var smth = new AutoSuggestControl(inputs[i], new FormSuggestions(ename));
+    }
+};
diff --git a/data/extensions/adblock/config b/data/extensions/adblock/config
new file mode 100644 (file)
index 0000000..8b1daa5
--- /dev/null
@@ -0,0 +1,2 @@
+[settings]
+filters=http://adblockplus.mozdev.org/easylist/easylist.txt
index 3624be9a50ef54828ad5e2fde12da6e1b3d4a98d..8305a1deb3ab54c42b14ffe409ccdbe0d2421d52 100644 (file)
     #include <unistd.h>
 #endif
 
-#if WEBKIT_CHECK_VERSION (1, 1, 14)
+#define HAVE_WEBKIT_RESOURCE_REQUEST WEBKIT_CHECK_VERSION (1, 1, 14)
 
-static GHashTable* pattern = NULL;
+#define ADBLOCK_FILTER_VALID(__filter) \
+    (__filter && (g_str_has_prefix (__filter, "http") \
+               || g_str_has_prefix (__filter, "file")))
+
+static GHashTable* pattern;
+static gchar* blockcss = NULL;
+static gchar* blockscript = NULL;
+
+static void
+adblock_parse_file (gchar* path);
 
 static gchar *
 adblock_fixup_regexp (gchar* src)
@@ -36,6 +45,10 @@ adblock_fixup_regexp (gchar* src)
     /* FIXME: Avoid always allocating twice the string */
     s = dst = g_malloc (strlen (src) * 2);
 
+    /* |http:// means ^http:// */
+    if (src[0] == '|')
+        src[0] = '^';
+
     while (*src)
     {
         switch (*src)
@@ -61,28 +74,87 @@ adblock_fixup_regexp (gchar* src)
 }
 
 static void
-adblock_browser_populate_tool_menu_cb (MidoriBrowser*   browser,
-                                       GtkWidget*       menu,
-                                       MidoriExtension* extension);
+adblock_download_notify_status_cb (WebKitDownload* download,
+                                   GParamSpec*     pspec,
+                                   gchar*          path)
+{
+    if (!g_file_test (path, G_FILE_TEST_EXISTS))
+       return;
+    adblock_parse_file (path);
+    g_free (path);
+    /* g_object_unref (download); */
+}
 
 static void
-adblock_app_add_browser_cb (MidoriApp*       app,
-                            MidoriBrowser*   browser,
-                            MidoriExtension* extension);
+adblock_reload_rules (MidoriExtension* extension)
+{
+    gchar** filters;
+    gchar* folder;
+    guint i = 0;
+    filters = midori_extension_get_string_list (extension, "filters", NULL);
+    folder = g_build_filename (g_get_user_cache_dir (), PACKAGE_NAME,
+                               "adblock", NULL);
+    g_mkdir_with_parents (folder, 0700);
+
+    if (!filters)
+        return;
+
+    pattern = g_hash_table_new_full (g_str_hash, g_str_equal,
+                   (GDestroyNotify)g_free,
+                   (GDestroyNotify)g_regex_unref);
+    katze_assign (blockcss, NULL);
+
+    while (filters[i++] != NULL)
+    {
+        gchar* filename = g_compute_checksum_for_string (G_CHECKSUM_MD5,
+                                                         filters[i - 1], -1);
+        gchar* path = g_build_filename (folder, filename, NULL);
+        if (!g_file_test (path, G_FILE_TEST_EXISTS))
+        {
+            WebKitNetworkRequest* request;
+            WebKitDownload* download;
+            gchar* destination = g_filename_to_uri (path, NULL, NULL);
+            request = webkit_network_request_new (filters[i -1]);
+            download = webkit_download_new (request);
+            g_object_unref (request);
+            webkit_download_set_destination_uri (download, destination);
+            g_free (destination);
+            g_signal_connect (download, "notify::status",
+                G_CALLBACK (adblock_download_notify_status_cb), path);
+            webkit_download_start (download);
+        }
+        else
+        {
+            adblock_parse_file (path);
+            g_free (path);
+        }
+        g_free (filename);
+    }
+    g_strfreev (filters);
+    g_free (folder);
+}
 
 static void
-adblock_deactivate_cb (MidoriExtension* extension,
-                       MidoriBrowser*   browser)
+adblock_browser_populate_tool_menu_cb (MidoriBrowser*   browser,
+                                       GtkWidget*       menu,
+                                       MidoriExtension* extension);
+static void
+adblock_preferences_render_tick_cb (GtkTreeViewColumn* column,
+                                    GtkCellRenderer*   renderer,
+                                    GtkTreeModel*      model,
+                                    GtkTreeIter*       iter,
+                                    MidoriExtension*   extension)
 {
-    MidoriApp* app = midori_extension_get_app (extension);
+    gchar* filter;
 
-    g_signal_handlers_disconnect_by_func (
-        browser, adblock_browser_populate_tool_menu_cb, extension);
-    g_signal_handlers_disconnect_by_func (
-        extension, adblock_deactivate_cb, browser);
-    g_signal_handlers_disconnect_by_func (
-        app, adblock_app_add_browser_cb, extension);
-    /* FIXME: Disconnect session callbacks */
+    gtk_tree_model_get (model, iter, 0, &filter, -1);
+
+    g_object_set (renderer,
+        "activatable", ADBLOCK_FILTER_VALID (filter),
+        "active", ADBLOCK_FILTER_VALID (filter) && filter[4] != '-',
+        NULL);
+
+    g_free (filter);
 }
 
 static void
@@ -97,6 +169,51 @@ adblock_preferences_renderer_text_edited_cb (GtkCellRenderer* renderer,
         gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, new_text, -1);
 }
 
+static void
+adblock_preferences_renderer_toggle_toggled_cb (GtkTreeViewColumn* column,
+                                                const gchar*       path,
+                                                GtkTreeModel*      model)
+{
+    GtkTreeIter iter;
+
+    if (gtk_tree_model_get_iter_from_string (model, &iter, path))
+    {
+        gchar* filter;
+
+        gtk_tree_model_get (model, &iter, 0, &filter, -1);
+
+        if (ADBLOCK_FILTER_VALID (filter))
+        {
+            filter[4] = filter[4] != '-' ? '-' : ':';
+
+            gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, filter, -1);
+
+            g_free (filter);
+        }
+    }
+}
+
+static void
+adblock_preferences_render_text_cb (GtkTreeViewColumn* column,
+                                    GtkCellRenderer*   renderer,
+                                    GtkTreeModel*      model,
+                                    GtkTreeIter*       iter,
+                                    MidoriExtension*   extension)
+{
+    gchar* filter;
+
+    gtk_tree_model_get (model, iter, 0, &filter, -1);
+
+    if (ADBLOCK_FILTER_VALID (filter))
+        filter[4] = ':';
+
+    g_object_set (renderer,
+        "text", filter,
+        NULL);
+
+    g_free (filter);
+}
+
 static void
 adblock_preferences_model_row_changed_cb (GtkTreeModel*    model,
                                           GtkTreePath*     path,
@@ -106,17 +223,27 @@ adblock_preferences_model_row_changed_cb (GtkTreeModel*    model,
     gsize length = gtk_tree_model_iter_n_children (model, NULL);
     gchar** filters = g_new (gchar*, length + 1);
     guint i = 0;
+    gboolean need_reload = FALSE;
 
     if (gtk_tree_model_iter_children (model, iter, NULL))
         do
         {
             gchar* filter;
             gtk_tree_model_get (model, iter, 0, &filter, -1);
-            filters[i++] = filter;
+            if (filter && *filter)
+            {
+                filters[i++] = filter;
+                need_reload = TRUE;
+            }
+            else
+                g_free (filter);
         }
         while (gtk_tree_model_iter_next (model, iter));
-    filters[length] = NULL;
-    midori_extension_set_string_list (extension, "filters", filters, length);
+    filters[i] = NULL;
+    midori_extension_set_string_list (extension, "filters", filters, i);
+    g_free (filters);
+    if (need_reload)
+        adblock_reload_rules (extension);
 }
 
 static void
@@ -132,8 +259,10 @@ static void
 adblock_preferences_add_clicked_cb (GtkWidget*    button,
                                     GtkTreeModel* model)
 {
+    GtkEntry* entry = g_object_get_data (G_OBJECT (button), "entry");
     gtk_list_store_insert_with_values (GTK_LIST_STORE (model),
-        NULL, 0, 0, "", -1);
+        NULL, 0, 0, gtk_entry_get_text (entry), -1);
+    gtk_entry_set_text (entry, "");
 }
 
 static void
@@ -146,6 +275,15 @@ adblock_preferences_remove_clicked_cb (GtkWidget*   button,
         gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
 }
 
+#if GTK_CHECK_VERSION (2, 18, 0)
+static gboolean
+adblock_activate_link_cb (GtkWidget*   label,
+                          const gchar* uri)
+{
+    return sokoke_show_uri (gtk_widget_get_screen (label), uri, GDK_CURRENT_TIME, NULL);
+}
+#endif
+
 static GtkWidget*
 adblock_get_preferences_dialog (MidoriExtension* extension)
 {
@@ -160,11 +298,13 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
     GtkWidget* treeview;
     GtkTreeViewColumn* column;
     GtkCellRenderer* renderer_text;
-    GtkCellRenderer* renderer_pixbuf;
+    GtkCellRenderer* renderer_toggle;
     GtkWidget* scrolled;
     gchar** filters;
     GtkWidget* vbox;
     GtkWidget* button;
+    gchar* description;
+    GtkWidget* entry;
     #if HAVE_OSX
     GtkWidget* icon;
     #endif
@@ -198,6 +338,28 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
     hbox = gtk_hbox_new (FALSE, 0);
     gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
                                  TRUE, TRUE, 12);
+    vbox = gtk_vbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 4);
+    button = gtk_label_new (NULL);
+    description = g_strdup_printf (_(
+        "Type the address of a preconfigured filter list in the text entry "
+        "and click \"Add\" to add it to the list. "
+        "You can find more lists at %s."),
+        #if GTK_CHECK_VERSION (2, 18, 0)
+        "<a href=\"http://easylist.adblockplus.org/\">easylist.adblockplus.org</a>");
+        #else
+        "<u>http://easylist.adblockplus.org/</u>");
+        #endif
+    #if GTK_CHECK_VERSION (2, 18, 0)
+    g_signal_connect (button, "activate-link",
+        G_CALLBACK (adblock_activate_link_cb), NULL);
+    #endif
+    gtk_label_set_markup (GTK_LABEL (button), description);
+    g_free (description);
+    gtk_label_set_line_wrap (GTK_LABEL (button), TRUE);
+    gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 4);
+    entry = gtk_entry_new ();
+    gtk_box_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 4);
     liststore = gtk_list_store_new (1, G_TYPE_STRING);
     g_object_connect (liststore,
         "signal::row-inserted",
@@ -210,15 +372,23 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
     treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (liststore));
     gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
     column = gtk_tree_view_column_new ();
-    renderer_pixbuf = gtk_cell_renderer_pixbuf_new ();
-    gtk_tree_view_column_pack_start (column, renderer_pixbuf, FALSE);
+    renderer_toggle = gtk_cell_renderer_toggle_new ();
+    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (column), renderer_toggle, FALSE);
+    gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (column), renderer_toggle,
+        (GtkCellLayoutDataFunc)adblock_preferences_render_tick_cb,
+        extension, NULL);
+    g_signal_connect (renderer_toggle, "toggled",
+        G_CALLBACK (adblock_preferences_renderer_toggle_toggled_cb), liststore);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+    column = gtk_tree_view_column_new ();
     renderer_text = gtk_cell_renderer_text_new ();
     gtk_tree_view_column_pack_start (column, renderer_text, TRUE);
-    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (column), renderer_text,
-        "text", 0, NULL);
     g_object_set (renderer_text, "editable", TRUE, NULL);
     g_signal_connect (renderer_text, "edited",
         G_CALLBACK (adblock_preferences_renderer_text_edited_cb), liststore);
+    gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (column), renderer_text,
+        (GtkCellLayoutDataFunc)adblock_preferences_render_text_cb,
+        extension, NULL);
     gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
     scrolled = gtk_scrolled_window_new (NULL, NULL);
     gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled),
@@ -226,7 +396,7 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
     gtk_container_add (GTK_CONTAINER (scrolled), treeview);
     gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled),
                                          GTK_SHADOW_IN);
-    gtk_box_pack_start (GTK_BOX (hbox), scrolled, TRUE, TRUE, 5);
+    gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 5);
 
     filters = midori_extension_get_string_list (extension, "filters", NULL);
     if (filters != NULL)
@@ -242,6 +412,7 @@ adblock_get_preferences_dialog (MidoriExtension* extension)
     vbox = gtk_vbox_new (FALSE, 4);
     gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 4);
     button = gtk_button_new_from_stock (GTK_STOCK_ADD);
+    g_object_set_data (G_OBJECT (button), "entry", entry);
     g_signal_connect (button, "clicked",
         G_CALLBACK (adblock_preferences_add_clicked_cb), liststore);
     gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
@@ -324,6 +495,7 @@ adblock_is_matched (const gchar*  patt,
     return g_regex_match_full (regex, uri, -1, 0, 0, NULL, NULL);
 }
 
+#if HAVE_WEBKIT_RESOURCE_REQUEST
 static void
 adblock_resource_request_starting_cb (WebKitWebView*         web_view,
                                       WebKitWebFrame*        web_frame,
@@ -333,21 +505,78 @@ adblock_resource_request_starting_cb (WebKitWebView*         web_view,
                                       MidoriView*            view)
 {
     const gchar* uri = webkit_network_request_get_uri (request);
+    if (!strncmp (uri, "data", 4))
+        return;
     if (g_hash_table_find (pattern, (GHRFunc) adblock_is_matched, (char*)uri))
     {
         webkit_network_request_set_uri (request, "about:blank");
         /* TODO: Need to figure out how to indicate what was blocked */
     }
 }
+#else
+static void
+adblock_session_request_queued_cb (SoupSession* session,
+                                   SoupMessage* msg)
+{
+    SoupURI* soup_uri = soup_message_get_uri (msg);
+    gchar* uri = soup_uri ? soup_uri_to_string (soup_uri, FALSE) : g_strdup ("");
+    if (g_hash_table_find (pattern, (GHRFunc) adblock_is_matched, uri))
+    {
+        soup_uri = soup_uri_new ("http://.invalid");
+        soup_message_set_uri (msg, soup_uri);
+        soup_uri_free (soup_uri);
+    }
+    g_free (uri);
+}
+#endif
 
+static gchar*
+adblock_build_js (gchar* style)
+{
+    return g_strdup_printf (
+        "window.addEventListener ('DOMContentLoaded',"
+        "function () {"
+        "var mystyle = document.createElement(\"style\");"
+        "mystyle.setAttribute(\"type\", \"text/css\");"
+        "mystyle.appendChild(document.createTextNode('%s'));"
+        "var head = document.getElementsByTagName(\"head\")[0];"
+        "if (head) head.appendChild(mystyle);"
+        "else document.documentElement.insertBefore(mystyle, document.documentElement.firstChild);"
+        "}, true);",
+        style);
+}
+
+static void
+adblock_window_object_cleared_cb (GtkWidget*      web_view,
+                                  WebKitWebFrame* web_frame,
+                                  JSContextRef    js_context,
+                                  JSObjectRef     js_window)
+{
+    webkit_web_view_execute_script (WEBKIT_WEB_VIEW (web_view), blockscript);
+}
 
 static void
 adblock_add_tab_cb (MidoriBrowser* browser,
                     MidoriView*    view)
 {
     GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    g_signal_connect (web_view, "window-object-cleared",
+        G_CALLBACK (adblock_window_object_cleared_cb), 0);
+    #if HAVE_WEBKIT_RESOURCE_REQUEST
     g_signal_connect (web_view, "resource-request-starting",
         G_CALLBACK (adblock_resource_request_starting_cb), view);
+    #endif
+}
+
+static void
+adblock_deactivate_cb (MidoriExtension* extension,
+                       MidoriBrowser*   browser);
+
+static void
+adblock_add_tab_foreach_cb (MidoriView*      view,
+                            MidoriBrowser*   browser)
+{
+    adblock_add_tab_cb (browser, view);
 }
 
 static void
@@ -355,54 +584,73 @@ adblock_app_add_browser_cb (MidoriApp*       app,
                             MidoriBrowser*   browser,
                             MidoriExtension* extension)
 {
-    if (pattern)
-        g_signal_connect (browser, "add-tab",
-            G_CALLBACK (adblock_add_tab_cb), 0);
+    midori_browser_foreach (browser,
+          (GtkCallback)adblock_add_tab_foreach_cb, browser);
+    g_signal_connect (browser, "add-tab", G_CALLBACK (adblock_add_tab_cb), 0);
     g_signal_connect (browser, "populate-tool-menu",
         G_CALLBACK (adblock_browser_populate_tool_menu_cb), extension);
     g_signal_connect (extension, "deactivate",
         G_CALLBACK (adblock_deactivate_cb), browser);
 }
 
+static void
+adblock_frame_add (gchar* line)
+{
+    gchar* new_blockcss;
+
+    (void)*line++;
+    (void)*line++;
+    new_blockcss = g_strdup_printf ("%s %s { display: none !important; }",
+                                    blockcss, line);
+    katze_assign (blockcss, new_blockcss);
+}
+
 static gchar*
 adblock_parse_line (gchar* line)
 {
     if (!line)
         return NULL;
-
+    g_strchomp (line);
     /* Ignore comments and new lines */
     if (line[0] == '!')
         return NULL;
     /* FIXME: No support for whitelisting */
     if (line[0] == '@' && line[1] == '@')
         return NULL;
-    /* FIXME: Differentiate # comments from element hiding */
-    /* FIXME: No support for element hiding */
+    /* FIXME: What is this? */
+    if (line[0] == '|' && line[1] == '|')
+        return NULL;
+    /* ditto */
+    if (strstr (line,"$"))
+        return NULL;
+    /* Got block hider */
+    if (line[0] == '#' && line[1] == '#' && (line[2] == '.'||line[2] == '#'||line[2] == 'a'))
+    {
+        adblock_frame_add (line);
+        return NULL;
+    }
+    /* FIXME: Do we have smth else starting with ##? */
     if (line[0] == '#' && line[1] == '#')
         return NULL;
+    /* FIXME: No support for per domain element hiding */
+    if (strstr (line,"##"))
+        return NULL;
     /* FIXME: No support for [include] and [exclude] tags */
     if (line[0] == '[')
         return NULL;
-    g_strchomp (line);
     return adblock_fixup_regexp (line);
 }
 
-static GHashTable*
+static void
 adblock_parse_file (gchar* path)
 {
     FILE* file;
-
     if ((file = g_fopen (path, "r")))
     {
-        GHashTable* patt = g_hash_table_new_full (g_str_hash, g_str_equal,
-                               (GDestroyNotify)g_free,
-                               (GDestroyNotify)g_regex_unref);
-
-        gboolean have_pattern = FALSE;
-        gchar line[255];
+        gchar line[500];
         GRegex* regex;
 
-        while (fgets (line, 255, file))
+        while (fgets (line, 500, file))
         {
             GError* error = NULL;
             gchar* parsed;
@@ -420,28 +668,47 @@ adblock_parse_file (gchar* path)
                 g_free (parsed);
             }
             else
-            {
-                have_pattern = TRUE;
-                g_hash_table_insert (patt, parsed, regex);
-            }
+                g_hash_table_insert (pattern, parsed, regex);
         }
+        katze_assign (blockscript, adblock_build_js (blockcss));
         fclose (file);
-
-        if (have_pattern)
-            return patt;
     }
-    /* FIXME: This should presumably be freed, but there's a possible crash
-       g_free (path); */
-    return NULL;
 }
 
 static void
-adblock_download_notify_status_cb (WebKitDownload* download,
-                                   GParamSpec*     pspec,
-                                   gchar*          path)
+adblock_deactivate_tabs (MidoriView*      view,
+                         MidoriBrowser*   browser)
 {
-    pattern = adblock_parse_file (path);
-    /* g_object_unref (download); */
+    GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    g_signal_handlers_disconnect_by_func (
+       browser, adblock_add_tab_cb, 0);
+    g_signal_handlers_disconnect_by_func (
+       web_view, adblock_window_object_cleared_cb, 0);
+    #if HAVE_WEBKIT_RESOURCE_REQUEST
+    g_signal_handlers_disconnect_by_func (
+       web_view, adblock_resource_request_starting_cb, view);
+    #else
+    g_signal_handlers_disconnect_by_func (
+       webkit_get_default_session (), adblock_session_request_queued_cb, NULL);
+    #endif
+}
+
+static void
+adblock_deactivate_cb (MidoriExtension* extension,
+                       MidoriBrowser*   browser)
+{
+    MidoriApp* app = midori_extension_get_app (extension);
+
+    g_signal_handlers_disconnect_by_func (
+        browser, adblock_browser_populate_tool_menu_cb, extension);
+    g_signal_handlers_disconnect_by_func (
+        extension, adblock_deactivate_cb, browser);
+    g_signal_handlers_disconnect_by_func (
+        app, adblock_app_add_browser_cb, extension);
+    midori_browser_foreach (browser, (GtkCallback)adblock_deactivate_tabs, browser);
+
+    katze_assign (blockcss, NULL);
+    g_hash_table_destroy (pattern);
 }
 
 static void
@@ -451,9 +718,14 @@ adblock_activate_cb (MidoriExtension* extension,
     KatzeArray* browsers;
     MidoriBrowser* browser;
     guint i;
-    gchar* folder;
-    gchar** filters;
-    SoupSession* session;
+    #if !HAVE_WEBKIT_RESOURCE_REQUEST
+    SoupSession* session = webkit_get_default_session ();
+
+    g_signal_connect (session, "request-queued",
+                      G_CALLBACK (adblock_session_request_queued_cb), NULL);
+    #endif
+
+    adblock_reload_rules (extension);
 
     browsers = katze_object_get_object (app, "browsers");
     i = 0;
@@ -461,43 +733,8 @@ adblock_activate_cb (MidoriExtension* extension,
         adblock_app_add_browser_cb (app, browser, extension);
     g_signal_connect (app, "add-browser",
         G_CALLBACK (adblock_app_add_browser_cb), extension);
-    g_object_unref (browsers);
 
-    session = webkit_get_default_session ();
-    folder = g_build_filename (g_get_user_cache_dir (), PACKAGE_NAME,
-                               "adblock", NULL);
-    g_mkdir_with_parents (folder, 0700);
-    filters = midori_extension_get_string_list (extension, "filters", NULL);
-    if (filters != NULL)
-    {
-        i = 0;
-        while (filters[i++] != NULL)
-        {
-            gchar* filename = g_compute_checksum_for_string (G_CHECKSUM_MD5,
-                                                             filters[i - 1], -1);
-            gchar* path = g_build_filename (folder, filename, NULL);
-            if (!g_file_test (path, G_FILE_TEST_EXISTS))
-            {
-                WebKitNetworkRequest* request;
-                WebKitDownload* download;
-                gchar* destination = g_filename_to_uri (path, NULL, NULL);
-
-                request = webkit_network_request_new (filters[i -1]);
-                download = webkit_download_new (request);
-                g_object_unref (request);
-                webkit_download_set_destination_uri (download, destination);
-                g_free (destination);
-                g_signal_connect (download, "notify::status",
-                    G_CALLBACK (adblock_download_notify_status_cb), path);
-                webkit_download_start (download);
-            }
-            else
-                pattern = adblock_parse_file (path);
-            g_free (filename);
-        }
-    }
-    g_strfreev (filters);
-    g_free (folder);
+    g_object_unref (browsers);
 }
 
 #if G_ENABLE_DEBUG
@@ -525,6 +762,10 @@ test_adblock_pattern (void)
     gint temp;
     gchar* filename;
 
+    pattern = g_hash_table_new_full (g_str_hash, g_str_equal,
+              (GDestroyNotify)g_free,
+              (GDestroyNotify)g_regex_unref);
+
     temp = g_file_open_tmp ("midori_adblock_match_test_XXXXXX", &filename, NULL);
 
     g_file_set_contents (filename,
@@ -533,7 +774,7 @@ test_adblock_pattern (void)
         "http://ads.bla.blub/*\n"
         "http://ads.blub.boing/*",
         -1, NULL);
-    pattern = adblock_parse_file (filename);
+    adblock_parse_file (filename);
 
     g_assert (g_hash_table_find (pattern, (GHRFunc) adblock_is_matched,
               "http://ads.foo.bar/teddy"));
@@ -548,9 +789,43 @@ test_adblock_pattern (void)
     g_assert (!g_hash_table_find (pattern, (GHRFunc) adblock_is_matched,
               "http://ads.foo.boing/beer"));
 
-    g_hash_table_destroy (pattern);
     close (temp);
     g_unlink (filename);
+
+    g_hash_table_destroy (pattern);
+}
+
+static void
+test_adblock_count (void)
+{
+    pattern = g_hash_table_new_full (g_str_hash, g_str_equal,
+              (GDestroyNotify)g_free,
+              (GDestroyNotify)g_regex_unref);
+
+        gchar* urls[6] = {
+            "https://bugs.webkit.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&query_based_on=gtkport&field0-0-0=keywords&type0-0-0=anywordssubstr&value0-0-0=Gtk%20Cairo%20soup&field0-0-1=short_desc&type0-0-1=anywordssubstr&value0-0-1=Gtk%20Cairo%20soup%20autoconf%20automake%20autotool&field0-0-2=component&type0-0-2=equals&value0-0-2=WebKit%20Gtk",
+            "http://www.engadget.com/2009/09/24/google-hits-android-rom-modder-with-a-cease-and-desist-letter/",
+            "http://karibik-invest.com/es/bienes_raices/search.php?sqT=19&sqN=&sqMp=&sqL=0&qR=1&sqMb=&searchMode=1&action=B%FAsqueda",
+            "http://google.com",
+            "http://ya.ru",
+            "http://google.com"
+        };
+        /* FIXME */
+        gchar* filename = "/home/avb/.cache/midori/adblock/bb6cd38a4579b3605946b1228fa65297";
+        gdouble elapsed = 0.0;
+        gchar* str;
+        int i;
+        adblock_parse_file (filename);
+        for (i = 0; i < 6; i++)
+        {
+            str = urls[i];
+            g_test_timer_start ();
+            g_hash_table_find (pattern, (GHRFunc) adblock_is_matched,str);
+            elapsed += g_test_timer_elapsed ();
+        }
+        g_print ("Search took %f seconds\n", elapsed);
+
+    g_hash_table_destroy (pattern);
 }
 
 void
@@ -558,28 +833,23 @@ extension_test (void)
 {
     g_test_add_func ("/extensions/adblock/parse", test_adblock_parse);
     g_test_add_func ("/extensions/adblock/pattern", test_adblock_pattern);
+    g_test_add_func ("/extensions/adblock/count", test_adblock_count);
 }
 #endif
 
-#endif
-
 MidoriExtension*
 extension_init (void)
 {
     MidoriExtension* extension = g_object_new (MIDORI_TYPE_EXTENSION,
         "name", _("Advertisement blocker"),
         "description", _("Block advertisements according to a filter list"),
-        #if WEBKIT_CHECK_VERSION (1, 1, 14)
         "version", "0.1",
-        #endif
         "authors", "Christian Dywan <christian@twotoasts.de>",
         NULL);
-    #if WEBKIT_CHECK_VERSION (1, 1, 14)
     midori_extension_install_string_list (extension, "filters", NULL, G_MAXSIZE);
 
     g_signal_connect (extension, "activate",
         G_CALLBACK (adblock_activate_cb), NULL);
-    #endif
 
     return extension;
 }
diff --git a/extensions/dnsprefetch.c b/extensions/dnsprefetch.c
new file mode 100644 (file)
index 0000000..0667534
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ Copyright (C) 2009 Alexander Butenko <a.butenka@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+*/
+
+#include <midori/midori.h>
+
+#include "config.h"
+
+#include <glib/gstdio.h>
+#if HAVE_UNISTD_H
+    #include <unistd.h>
+#endif
+
+#define MAXHOSTS 50
+static gchar* hosts = NULL;
+static int host_count;
+
+static bool
+dnsprefetch_do_prefetch (const char* uri)
+{
+     SoupURI* s_uri;
+
+     if (!uri)
+        return FALSE;
+     s_uri = soup_uri_new (uri);
+     if (!s_uri || !s_uri->host)
+         return FALSE;
+
+     #if GLIB_CHECK_VERSION (2, 22, 0)
+     if (g_hostname_is_ip_address (s_uri->host))
+     #else
+     if (g_ascii_isdigit (s_uri->host[0]) && g_strstr_len (s_uri->host, 4, "."))
+     #endif
+     {
+         soup_uri_free (s_uri);
+         return FALSE;
+     }
+     if (!g_str_has_prefix (uri, "http"))
+     {
+         soup_uri_free (s_uri);
+         return FALSE;
+     }
+
+     if (!g_regex_match_simple (s_uri->host, hosts,
+                                G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY))
+     {
+         SoupAddress* address;
+         gchar* new_hosts;
+
+         address = soup_address_new (s_uri->host, SOUP_ADDRESS_ANY_PORT);
+         soup_address_resolve_async (address, 0, 0, 0, 0);
+         g_object_unref (address);
+
+         if (host_count > MAXHOSTS)
+         {
+             katze_assign (hosts, g_strdup (""));
+             host_count = 0;
+         }
+         host_count++;
+         new_hosts = g_strdup_printf ("%s|%s", hosts, s_uri->host);
+         katze_assign (hosts, new_hosts);
+     }
+     soup_uri_free (s_uri);
+     return TRUE;
+}
+
+static void
+dnsprefetch_prefetch_cb (WebKitWebView* web_view,
+                         const gchar*   title,
+                         const char*    uri,
+                         gpointer       user_data)
+{
+     dnsprefetch_do_prefetch (uri);
+}
+
+static void
+dnsprefetch_add_tab_cb (MidoriBrowser* browser,
+                        MidoriView*    view)
+{
+    GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    g_signal_connect (web_view, "hovering-over-link",
+            G_CALLBACK (dnsprefetch_prefetch_cb), 0);
+}
+
+static void
+dnsprefetch_deactivate_cb (MidoriExtension* extension,
+                           MidoriBrowser*   browser);
+
+static void
+dnsprefetch_add_tab_foreach_cb (MidoriView*    view,
+                                MidoriBrowser* browser)
+{
+    dnsprefetch_add_tab_cb (browser, view);
+}
+
+static void
+dnsprefetch_app_add_browser_cb (MidoriApp*       app,
+                                MidoriBrowser*   browser,
+                                MidoriExtension* extension)
+{
+    midori_browser_foreach (browser,
+        (GtkCallback)dnsprefetch_add_tab_foreach_cb, browser);
+    g_signal_connect (browser, "add-tab",
+        G_CALLBACK (dnsprefetch_add_tab_cb), 0);
+    g_signal_connect (extension, "deactivate",
+        G_CALLBACK (dnsprefetch_deactivate_cb), browser);
+}
+
+static void
+dnsprefetch_deactivate_tabs (MidoriView*    view,
+                             MidoriBrowser* browser)
+{
+    GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    g_signal_handlers_disconnect_by_func (
+       browser, dnsprefetch_add_tab_cb, 0);
+    g_signal_handlers_disconnect_by_func (
+       web_view, dnsprefetch_do_prefetch, 0);
+}
+
+static void
+dnsprefetch_deactivate_cb (MidoriExtension* extension,
+                       MidoriBrowser*   browser)
+{
+    MidoriApp* app = midori_extension_get_app (extension);
+
+    katze_assign (hosts, g_strdup (""));
+    host_count = 0;
+
+    g_signal_handlers_disconnect_by_func (
+        extension, dnsprefetch_deactivate_cb, browser);
+    g_signal_handlers_disconnect_by_func (
+        app, dnsprefetch_app_add_browser_cb, extension);
+    midori_browser_foreach (browser, (GtkCallback)dnsprefetch_deactivate_tabs, browser);
+
+}
+
+static void
+dnsprefetch_activate_cb (MidoriExtension* extension,
+                         MidoriApp*       app)
+{
+    KatzeArray* browsers;
+    MidoriBrowser* browser;
+    guint i;
+
+    katze_assign (hosts, g_strdup (""));
+    host_count = 0;
+
+    browsers = katze_object_get_object (app, "browsers");
+    i = 0;
+    while ((browser = katze_array_get_nth_item (browsers, i++)))
+        dnsprefetch_app_add_browser_cb (app, browser, extension);
+    g_signal_connect (app, "add-browser",
+        G_CALLBACK (dnsprefetch_app_add_browser_cb), extension);
+
+    g_object_unref (browsers);
+}
+
+#if G_ENABLE_DEBUG
+static void
+dnsprefetch_parse (void)
+{
+    g_assert (!dnsprefetch_do_prefetch (NULL));
+    g_assert (dnsprefetch_do_prefetch ("http://google.com"));
+    g_assert (dnsprefetch_do_prefetch ("http://google.com"));
+    g_assert (dnsprefetch_do_prefetch ("http://googlecom"));
+    g_assert (dnsprefetch_do_prefetch ("http://1kino.com"));
+    g_assert (dnsprefetch_do_prefetch ("http://"));
+    g_assert (!dnsprefetch_do_prefetch ("http:/"));
+    g_assert (!dnsprefetch_do_prefetch ("http"));
+    g_assert (!dnsprefetch_do_prefetch ("ftp://ftphost.org"));
+    g_assert (!dnsprefetch_do_prefetch ("http://10.0.0.1"));
+    g_assert (!dnsprefetch_do_prefetch ("about:blank"));
+    g_assert (!dnsprefetch_do_prefetch ("javascript: alert()"));
+}
+
+void
+extension_test (void)
+{
+    katze_assign (hosts, g_strdup (""));
+    host_count = 0;
+    g_test_add_func ("/extensions/dnsprefetch/parse", dnsprefetch_parse);
+}
+#endif
+
+MidoriExtension*
+extension_init (void)
+{
+    MidoriExtension* extension = g_object_new (MIDORI_TYPE_EXTENSION,
+        "name", _("DNS prefetching"),
+        "description", _("Prefetch IP addresses of hovered links"),
+        "version", "0.1",
+        "authors", "Alexander V. Butenko <a.butenka@gmail.com>",
+        NULL);
+    g_signal_connect (extension, "activate",
+         G_CALLBACK (dnsprefetch_activate_cb), NULL);
+
+    return extension;
+}
diff --git a/extensions/formhistory.c b/extensions/formhistory.c
new file mode 100644 (file)
index 0000000..0cb119c
--- /dev/null
@@ -0,0 +1,308 @@
+/*
+ Copyright (C) 2009 Alexander Butenko <a.butenka@gmail.com>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+*/
+
+#define MAXCHARS 20
+#define MINCHARS 2
+
+#include <midori/midori.h>
+
+#include "config.h"
+
+#include <glib/gstdio.h>
+#if HAVE_UNISTD_H
+    #include <unistd.h>
+#endif
+
+static GHashTable* global_keys;
+static gchar* jsforms;
+
+static gboolean
+formhistory_prepare_js ()
+{
+   gchar* autosuggest;
+   gchar* style;
+   guint i;
+   gchar* file;
+
+   gchar* data_path = g_build_filename (MDATADIR, PACKAGE_NAME, NULL);
+   file = g_build_filename (data_path,"/autosuggestcontrol.js",NULL);
+   if (!g_file_test (file, G_FILE_TEST_EXISTS))
+       return FALSE;
+   g_file_get_contents (file, &autosuggest, NULL, NULL);
+   g_strchomp (autosuggest);
+
+   file = g_build_filename (data_path,"/autosuggestcontrol.css",NULL);
+   if (!g_file_test (file, G_FILE_TEST_EXISTS))
+       return FALSE;
+   g_file_get_contents (file, &style, NULL, NULL);
+   g_strchomp (style);
+   i = 0;
+   while (style[i])
+   {
+       if (style[i] == '\n')
+           style[i] = ' ';
+       i++;
+   }
+
+   jsforms = g_strdup_printf (
+        "%s"
+        "window.addEventListener (\"load\", function () { initSuggestions (); }, true);"
+        "window.addEventListener ('DOMContentLoaded',"
+        "function () {"
+        "var mystyle = document.createElement(\"style\");"
+        "mystyle.setAttribute(\"type\", \"text/css\");"
+        "mystyle.appendChild(document.createTextNode(\"%s\"));"
+        "var head = document.getElementsByTagName(\"head\")[0];"
+        "if (head) head.appendChild(mystyle);"
+        "else document.documentElement.insertBefore(mystyle, document.documentElement.firstChild);"
+        "}, true);",
+        autosuggest,
+        style);
+   g_strstrip (jsforms);
+   g_free (data_path);
+   g_free (file);
+   g_free (style);
+   g_free (autosuggest);
+   return TRUE;
+}
+
+static gchar*
+formhistory_build_js ()
+{
+    gchar* suggestions = g_strdup ("");
+    GHashTableIter iter;
+    gpointer key, value;
+    gchar* script;
+
+    g_hash_table_iter_init (&iter, global_keys);
+    while (g_hash_table_iter_next (&iter, &key, &value))
+    {
+       gchar* _suggestions = g_strdup_printf ("%s arr[\"%s\"] = [%s]; ",
+                                              suggestions, (char*)key, (char*)value);
+       katze_assign (suggestions, _suggestions);
+    }
+    script = g_strdup_printf ("function FormSuggestions(eid) { "
+                              "arr = new Array();"
+                              "%s"
+                              "this.suggestions = arr[eid]; }"
+                              "%s",
+                              suggestions,
+                              jsforms);
+    g_free (suggestions);
+   return script;
+}
+
+static void
+formhistory_update_main_hash (GHashTable* keys)
+{
+    GHashTableIter iter;
+    gchar* key;
+    gchar* value;
+
+    g_hash_table_iter_init (&iter, keys);
+    while (g_hash_table_iter_next (&iter, (gpointer)&key, (gpointer)&value))
+    {
+        guint length;
+        gchar* tmp;
+
+        if (!(value && *value))
+            continue;
+        length = strlen (value);
+        if (length > MAXCHARS || length < MINCHARS)
+            continue;
+
+        tmp = g_hash_table_lookup (global_keys, (gpointer)key);
+        if (tmp)
+        {
+            gchar* rvalue = g_strdup_printf ("\"%s\"",value);
+            if (!g_regex_match_simple (rvalue, tmp,
+                                       G_REGEX_CASELESS, G_REGEX_MATCH_NOTEMPTY))
+            {
+                gchar* new_value = g_strdup_printf ("%s%s,", tmp, rvalue);
+                g_hash_table_replace (global_keys, key, new_value);
+            }
+            g_free (rvalue);
+        }
+        else
+        {
+            gchar* new_value = g_strdup_printf ("\"%s\",",value);
+            g_hash_table_insert (global_keys, key, new_value);
+        }
+    }
+}
+
+static void
+formhistory_session_request_queued_cb (SoupSession* session,
+                                       SoupMessage* msg)
+{
+    gchar* method = katze_object_get_string (msg, "method");
+    if (method && !strncmp (method, "POST", 4))
+    {
+        /* SoupMessageHeaders* hdrs = msg->request_headers;
+        const gchar* referer; */
+        SoupMessageBody* body = msg->request_body;
+        if (soup_message_body_get_accumulate (body))
+        {
+            SoupBuffer* buffer = soup_message_body_flatten (body);
+            GHashTable* keys = soup_form_decode (body->data);
+            formhistory_update_main_hash (keys);
+            soup_buffer_free (buffer);
+        }
+        /* FIXME: Need a permanent storage implementation */
+        /* referer = soup_message_headers_get_one (hdrs, "Referer"); */
+    }
+    g_free (method);
+}
+
+
+static void
+formhistory_window_object_cleared_cb (GtkWidget*      web_view,
+                                      WebKitWebFrame* web_frame,
+                                      JSContextRef    js_context,
+                                      JSObjectRef     js_window)
+{
+    webkit_web_view_execute_script (WEBKIT_WEB_VIEW (web_view),
+                                    formhistory_build_js ());
+}
+
+static void
+formhistory_add_tab_cb (MidoriBrowser* browser,
+                        MidoriView*    view)
+{
+    GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    SoupSession *session = webkit_get_default_session ();
+    g_signal_connect (web_view, "window-object-cleared",
+            G_CALLBACK (formhistory_window_object_cleared_cb), 0);
+    g_signal_connect (session, "request-queued",
+       G_CALLBACK (formhistory_session_request_queued_cb), 0);
+}
+
+static void
+formhistory_deactivate_cb (MidoriExtension* extension,
+                           MidoriBrowser*   browser);
+
+static void
+formhistory_add_tab_foreach_cb (MidoriView*    view,
+                                MidoriBrowser* browser)
+{
+    formhistory_add_tab_cb (browser, view);
+}
+
+static void
+formhistory_app_add_browser_cb (MidoriApp*       app,
+                                MidoriBrowser*   browser,
+                                MidoriExtension* extension)
+{
+    midori_browser_foreach (browser,
+        (GtkCallback)formhistory_add_tab_foreach_cb, browser);
+    g_signal_connect (browser, "add-tab", G_CALLBACK (formhistory_add_tab_cb), 0);
+    g_signal_connect (extension, "deactivate",
+        G_CALLBACK (formhistory_deactivate_cb), browser);
+}
+
+static void
+formhistory_deactivate_tabs (MidoriView*    view,
+                             MidoriBrowser* browser)
+{
+    GtkWidget* web_view = gtk_bin_get_child (GTK_BIN (view));
+    SoupSession *session = webkit_get_default_session ();
+    g_signal_handlers_disconnect_by_func (
+       browser, formhistory_add_tab_cb, 0);
+    g_signal_handlers_disconnect_by_func (
+       web_view, formhistory_window_object_cleared_cb, 0);
+    g_signal_handlers_disconnect_by_func (
+       session, formhistory_session_request_queued_cb, 0);
+}
+
+static void
+formhistory_deactivate_cb (MidoriExtension* extension,
+                       MidoriBrowser*   browser)
+{
+    MidoriApp* app = midori_extension_get_app (extension);
+
+    g_signal_handlers_disconnect_by_func (
+        extension, formhistory_deactivate_cb, browser);
+    g_signal_handlers_disconnect_by_func (
+        app, formhistory_app_add_browser_cb, extension);
+    midori_browser_foreach (browser, (GtkCallback)formhistory_deactivate_tabs, browser);
+
+    jsforms = "";
+    if (global_keys)
+        g_hash_table_destroy (global_keys);
+}
+
+static void
+formhistory_activate_cb (MidoriExtension* extension,
+                         MidoriApp*       app)
+{
+    KatzeArray* browsers;
+    MidoriBrowser* browser;
+    guint i;
+
+    global_keys = g_hash_table_new_full (g_str_hash, g_str_equal,
+                               (GDestroyNotify)g_free,
+                               (GDestroyNotify)g_free);
+    browsers = katze_object_get_object (app, "browsers");
+    i = 0;
+    while ((browser = katze_array_get_nth_item (browsers, i++)))
+        formhistory_app_add_browser_cb (app, browser, extension);
+    g_signal_connect (app, "add-browser",
+        G_CALLBACK (formhistory_app_add_browser_cb), extension);
+
+    g_object_unref (browsers);
+}
+
+#if G_ENABLE_DEBUG
+/*
+<html>
+    <head>
+        <title>autosuggest testcase</title>
+    </head>
+    <body>
+        <form method=post>
+        <p><input type="text" id="txt1" /></p>
+        <p><input type="text" name="txt2" /></p>
+        <input type=submit>
+        </form>
+    </body>
+</html> */
+#endif
+
+MidoriExtension*
+extension_init (void)
+{
+    gboolean should_init = TRUE;
+    gchar* ver;
+    gchar* desc;
+    if (formhistory_prepare_js ())
+    {
+        ver = "0.1";
+        desc = g_strdup (_("Stores history of entered form data"));
+    }
+    else
+    {
+        desc = g_strdup_printf (_("Not available: %s"),
+                                _("Resource files not installed"));
+        ver = NULL;
+        should_init = FALSE;
+    }
+    MidoriExtension* extension = g_object_new (MIDORI_TYPE_EXTENSION,
+        "name", _("Form history filler"),
+        "description", desc,
+        "version", ver,
+        "authors", "Alexander V. Butenko <a.butenka@gmail.com>",
+        NULL);
+    g_free (desc);
+
+    if (should_init)
+        g_signal_connect (extension, "activate",
+            G_CALLBACK (formhistory_activate_cb), NULL);
+
+    return extension;
+}
index 1e8707b7eb916e80d88c645a0c680d506877be82..cd39a283865bb1eac4eb11ab2172cff870a0c40e 100644 (file)
@@ -220,8 +220,18 @@ static void mouse_gestures_deactivate (MidoriExtension *extension, MidoriApp *ap
 
 static void mouse_gestures_activate (MidoriExtension *extension, MidoriApp *app)
 {
+    KatzeArray* browsers;
+    MidoriBrowser* browser;
+    guint i;
+
     gesture = mouse_gesture_new ();
 
+    browsers = katze_object_get_object (app, "browsers");
+    i = 0;
+    while ((browser = katze_array_get_nth_item (browsers, i++)))
+        mouse_gestures_browser_cb (app, browser);
+    g_object_unref (browsers);
+
     g_signal_connect (app, "add-browser",
                       G_CALLBACK (mouse_gestures_browser_cb), NULL);
     g_signal_connect (extension, "deactivate",
index 0feb2c097ddecd34453a7486596c637673cc3d6d..df6c70d1c58952349bebf0d5309ce9f5612ae8bf 100644 (file)
@@ -34,6 +34,11 @@ tab_panel_browser_remove_tab_cb (MidoriBrowser*   browser,
                                  GtkWidget*       view,
                                  MidoriExtension* extension);
 
+static void
+tab_panel_browser_notify_tab_cb (MidoriBrowser* browser,
+                                 GParamSpec*    pspec,
+                                 GtkTreeView*   treeview);
+
 static void
 tab_panel_view_notify_minimized_cb (GtkWidget*       view,
                                     GParamSpec*      pspec,
@@ -67,28 +72,50 @@ tab_panel_get_toolitem_for_view (GtkWidget* view)
     return g_object_get_data (G_OBJECT (view), "tab-panel-ext-toolitem");
 }
 
+static gboolean
+tab_panel_get_iter_for_view (GtkTreeModel* model,
+                             GtkTreeIter*  iter,
+                             gpointer      view)
+{
+    guint i = 0;
+
+    while (gtk_tree_model_iter_nth_child (model, iter, NULL, i))
+    {
+        MidoriView* view_;
+
+        gtk_tree_model_get (model, iter, 0, &view_, -1);
+        g_object_unref (view_);
+        if (view_ == view)
+            return TRUE;
+        i++;
+    }
+
+    return FALSE;
+}
+
 static void
 tab_panel_deactivate_cb (MidoriExtension* extension,
-                         GtkWidget*       panel)
+                         GtkWidget*       treeview)
 {
     MidoriApp* app = midori_extension_get_app (extension);
     GtkTreeModel* model;
     MidoriBrowser* browser;
 
-    browser = midori_browser_get_for_widget (panel);
+    browser = midori_browser_get_for_widget (treeview);
     g_object_set (browser, "show-tabs", TRUE, NULL);
     model = tab_panel_get_model_for_browser (browser);
     g_object_unref (model);
 
-    gtk_widget_destroy (panel);
     g_signal_handlers_disconnect_by_func (
-        extension, tab_panel_deactivate_cb, panel);
+        extension, tab_panel_deactivate_cb, treeview);
     g_signal_handlers_disconnect_by_func (
         app, tab_panel_app_add_browser_cb, extension);
     g_signal_handlers_disconnect_by_func (
         browser, tab_panel_browser_add_tab_cb, extension);
     g_signal_handlers_disconnect_by_func (
         browser, tab_panel_browser_remove_tab_cb, extension);
+    g_signal_handlers_disconnect_by_func (
+        browser, tab_panel_browser_notify_tab_cb, treeview);
     g_signal_handlers_disconnect_by_func (
         browser, tab_panel_settings_notify_cb, model);
     g_signal_handlers_disconnect_by_func (
@@ -97,6 +124,8 @@ tab_panel_deactivate_cb (MidoriExtension* extension,
         browser, tab_panel_view_notify_icon_cb, extension);
     g_signal_handlers_disconnect_by_func (
         browser, tab_panel_view_notify_title_cb, extension);
+
+    gtk_widget_destroy (treeview);
 }
 
 static void
@@ -265,24 +294,8 @@ tab_panel_remove_view (MidoriBrowser* browser,
     {
         GtkTreeModel* model = tab_panel_get_model_for_browser (browser);
         GtkTreeIter iter;
-        guint i = 0;
-
-        while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i))
-        {
-            MidoriView* view_;
-
-            gtk_tree_model_get (model, &iter, 0, &view_, -1);
-
-            if ((MidoriView*)view == view_)
-            {
-                gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
-                g_object_unref (view_);
-                break;
-            }
-
-            g_object_unref (view_);
-            i++;
-        }
+        if (tab_panel_get_iter_for_view (model, &iter, view))
+            gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
     }
 }
 
@@ -317,24 +330,8 @@ tab_panel_view_notify_icon_cb (GtkWidget*       view,
     {
         GtkTreeModel* model = tab_panel_get_model_for_browser (browser);
         GtkTreeIter iter;
-        guint i = 0;
-
-        while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i))
-        {
-            MidoriView* view_;
-
-            gtk_tree_model_get (model, &iter, 0, &view_, -1);
-
-            if ((MidoriView*)view == view_)
-            {
-                gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 3, icon, -1);
-                g_object_unref (view_);
-                break;
-            }
-
-            g_object_unref (view_);
-            i++;
-        }
+        if (tab_panel_get_iter_for_view (model, &iter, view))
+            gtk_tree_store_set (GTK_TREE_STORE (model), &iter, 3, icon, -1);
     }
 }
 
@@ -356,24 +353,11 @@ tab_panel_view_notify_title_cb (GtkWidget*       view,
     {
         GtkTreeModel* model = tab_panel_get_model_for_browser (browser);
         GtkTreeIter iter;
-        guint i = 0;
-
-        while (gtk_tree_model_iter_nth_child (model, &iter, NULL, i))
+        if (tab_panel_get_iter_for_view (model, &iter, view))
         {
-            MidoriView* view_;
-
-            gtk_tree_model_get (model, &iter, 0, &view_, -1);
-
-            if ((MidoriView*)view == view_)
-            {
-                gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
-                    4, title, 5, midori_view_get_label_ellipsize (view_), -1);
-                g_object_unref (view_);
-                break;
-            }
-
-            g_object_unref (view_);
-            i++;
+            gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
+                4, title,
+                5, midori_view_get_label_ellipsize (MIDORI_VIEW (view)), -1);
         }
     }
 }
@@ -477,6 +461,26 @@ tab_panel_browser_remove_tab_cb (MidoriBrowser*   browser,
         tab_panel_remove_view (browser, view, minimized);
 }
 
+static void
+tab_panel_browser_notify_tab_cb (MidoriBrowser* browser,
+                                 GParamSpec*    pspec,
+                                 GtkTreeView*   treeview)
+{
+    GtkTreeModel* model = tab_panel_get_model_for_browser (browser);
+    GtkTreeIter iter;
+    GtkWidget* view;
+
+    if (GTK_OBJECT_FLAGS (browser) & GTK_IN_DESTRUCTION)
+        return;
+
+    view = midori_browser_get_current_tab (browser);
+    if (tab_panel_get_iter_for_view (model, &iter, view))
+    {
+        GtkTreeSelection* selection = gtk_tree_view_get_selection (treeview);
+        gtk_tree_selection_select_iter (selection, &iter);
+    }
+}
+
 static void
 tab_panel_app_add_browser_cb (MidoriApp*       app,
                               MidoriBrowser*   browser,
@@ -565,6 +569,8 @@ tab_panel_app_add_browser_cb (MidoriApp*       app,
         G_CALLBACK (tab_panel_browser_add_tab_cb), extension);
     g_signal_connect (browser, "remove-tab",
         G_CALLBACK (tab_panel_browser_remove_tab_cb), extension);
+    g_signal_connect (browser, "notify::tab",
+        G_CALLBACK (tab_panel_browser_notify_tab_cb), treeview);
     g_signal_connect (extension, "deactivate",
         G_CALLBACK (tab_panel_deactivate_cb), treeview);
 }
index 2a39057adec3938a3fe37c6adfc6413f8c02ddd6..13c51b8172c8cf65e6c97070a8a8a2d7b0fc384b 100644 (file)
@@ -610,9 +610,11 @@ MidoriExtension *extension_init(void)
 {
        MidoriExtension* extension = g_object_new(MIDORI_TYPE_EXTENSION,
                "name", _("Toolbar Editor"),
-               "description", _("Easily edit the toolbar layout"),
                #if !HAVE_HILDON
+               "description", _("Easily edit the toolbar layout"),
                "version", "0.1",
+               #else
+               "description", _("Not available on this platform"),
                #endif
                "authors", "Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>",
                NULL);
index 8f84a1735bdceca45073c58ac5b8c286196ee3a6..49c0247a3399be92808af19ad26b76fb051833be 100644 (file)
@@ -27,5 +27,5 @@ for extension in extensions:
     obj.target = target
     obj.includes = '..'
     obj.source = source
-    obj.uselib = 'UNIQUE LIBSOUP GIO GTK SQLITE WEBKIT LIBXML'
+    obj.uselib = 'UNIQUE LIBSOUP GIO GTK SQLITE WEBKIT LIBXML HILDON'
     obj.install_path = '${LIBDIR}/midori'
index 5df9291f40da4db89f6c6a9396197de6f5e18457..93a3f5697813fc907517b9d725b77f3db384fd48 100644 (file)
@@ -375,13 +375,56 @@ katze_array_find_token (KatzeArray*  array,
     i = 0;
     while ((item = g_list_nth_data (array->items, i++)))
     {
-        const gchar* found_token = katze_item_get_token ((KatzeItem*)item);
+        const gchar* found_token;
+
+        if (!KATZE_IS_ITEM (item))
+            continue;
+        found_token = ((KatzeItem*)item)->token;
         if (!g_strcmp0 (found_token, token))
             return item;
     }
     return NULL;
 }
 
+/**
+ * katze_array_find_uri:
+ * @array: a #KatzeArray
+ * @uri: an URI
+ *
+ * Looks up an item in the array which has the specified URI.
+ *
+ * This function will silently fail if the type of the list
+ * is not based on #GObject and only #KatzeItem children
+ * are checked for their token, any other objects are skipped.
+ *
+ * Return value: an item, or %NULL
+ *
+ * Since: 0.2.0
+ **/
+gpointer
+katze_array_find_uri (KatzeArray*  array,
+                      const gchar* uri)
+{
+    guint i;
+    gpointer item;
+
+    if (!katze_array_is_a (array, G_TYPE_OBJECT))
+        return NULL;
+
+    i = 0;
+    while ((item = g_list_nth_data (array->items, i++)))
+    {
+        const gchar* found_uri;
+
+        if (!KATZE_IS_ITEM (item))
+            continue;
+        found_uri = ((KatzeItem*)item)->uri;
+        if (!g_strcmp0 (found_uri, uri))
+            return item;
+    }
+    return NULL;
+}
+
 /**
  * katze_array_get_length:
  * @array: a #KatzeArray
index 89bfea9c6f10a62b29f5517afab22fe8da2eaa6d..af3370d5425da0fb5b22328caeba528d88d79ffa 100644 (file)
@@ -65,6 +65,10 @@ gpointer
 katze_array_find_token             (KatzeArray*   array,
                                     const gchar*  token);
 
+gpointer
+katze_array_find_uri               (KatzeArray*   array,
+                                    const gchar*  uri);
+
 guint
 katze_array_get_length             (KatzeArray*   array);
 
index fb02082237b91827718e8616b150cb9107158008..38c6ce5c927e87f9cffbad485ce7288ddf2285a4 100644 (file)
@@ -144,11 +144,12 @@ authentication_dialog_response_cb (GtkWidget*         dialog,
     {
         GtkEntry* username = g_object_get_data (G_OBJECT (dialog), "username");
         GtkEntry* password = g_object_get_data (G_OBJECT (dialog), "password");
+        GtkToggleButton* remember = g_object_get_data (G_OBJECT (dialog), "remember");
 
         soup_auth_authenticate (save->auth,
             gtk_entry_get_text (username), gtk_entry_get_text (password));
 
-        if (save->http_auth->filename)
+        if (gtk_toggle_button_get_active (remember) && save->http_auth->filename)
         {
             save->username = g_strdup (gtk_entry_get_text (username));
             save->password = g_strdup (gtk_entry_get_text (password));
@@ -261,6 +262,11 @@ katze_http_auth_session_authenticate_cb (SoupSession*   session,
     gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
     g_object_set_data (G_OBJECT (dialog), "password", entry);
     gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
+    hbox = gtk_hbox_new (FALSE, 6);
+    label = gtk_check_button_new_with_mnemonic (_("_Remember password"));
+    gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+    g_object_set_data (G_OBJECT (dialog), "remember", label);
+    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
     gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
     gtk_widget_show_all (GTK_DIALOG (dialog)->vbox);
 
@@ -289,7 +295,7 @@ katze_http_auth_session_request_queued_cb (SoupSession*   session,
     g_signal_connect (session, "authenticate",
         G_CALLBACK (katze_http_auth_session_authenticate_cb), http_auth);
     g_signal_handlers_disconnect_by_func (session,
-        katze_http_auth_session_request_queued_cb, NULL);
+        katze_http_auth_session_request_queued_cb, http_auth);
 }
 
 static void
index 8a82747b11f337834993113db8eabcf91b014caf..e445aa8d0b3c07cf29114ad334453045282d78f1 100644 (file)
@@ -525,7 +525,6 @@ katze_net_load_icon (KatzeNet*      net,
                      GtkWidget*     widget,
                      gpointer       user_data)
 {
-    guint i;
     KatzeNetIconPriv* priv;
     gchar* icon_uri;
     gchar* icon_file;
@@ -535,22 +534,28 @@ katze_net_load_icon (KatzeNet*      net,
 
     g_return_val_if_fail (KATZE_IS_NET (net), NULL);
     g_return_val_if_fail (!widget || GTK_IS_WIDGET (widget), NULL);
+    g_return_val_if_fail (uri != NULL, NULL);
 
     pixbuf = NULL;
-    if (uri && (g_str_has_prefix (uri, "http://") ||
-        g_str_has_prefix (uri, "https://")))
+    icon_uri = g_strdup (g_object_get_data (G_OBJECT (net), uri));
+    g_object_set_data (G_OBJECT (net), uri, NULL);
+    if ((icon_uri && g_str_has_prefix (icon_uri, "http"))
+        || g_str_has_prefix (uri, "http"))
     {
-        i = 8;
-        while (uri[i] != '\0' && uri[i] != '/')
-            i++;
-        if (uri[i] == '/')
+        if (!icon_uri)
         {
-            icon_uri = g_strdup (uri);
-            icon_uri[i] = '\0';
-            icon_uri = g_strdup_printf ("%s/favicon.ico", icon_uri);
+            guint i = 8;
+            while (uri[i] != '\0' && uri[i] != '/')
+                i++;
+            if (uri[i] == '/')
+            {
+                icon_uri = g_strdup (uri);
+                icon_uri[i] = '\0';
+                icon_uri = g_strdup_printf ("%s/favicon.ico", icon_uri);
+            }
+            else
+                icon_uri = g_strdup_printf ("%s/favicon.ico", uri);
         }
-        else
-            icon_uri = g_strdup_printf ("%s/favicon.ico", uri);
 
         icon_file = katze_net_get_cached_path (net, icon_uri, "icons");
 
diff --git a/katze/katze-scrolled.c b/katze/katze-scrolled.c
new file mode 100644 (file)
index 0000000..4923925
--- /dev/null
@@ -0,0 +1,1098 @@
+/*
+ Copyright (C) 2007 Henrik Hedberg <hhedberg@innologies.fi>
+ Copyright (C) 2009 Nadav Wiener <nadavwr@yahoo.com>
+ Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ See the file COPYING for the full license text.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "katze-scrolled.h"
+
+#define DEFAULT_INTERVAL 50
+#define DEFAULT_DECELERATION 0.7
+#define DEFAULT_DRAGGING_STOPPED_DELAY 100
+
+/**
+ * SECTION:katze-scrolled
+ * @short_description: Implements drag scrolling and kinetic scrolling
+ * @see_also: #GtkScrolledWindow
+ *
+ * A scrolled window derived from #GtkScrolledWindow that implements
+ * drag scrolling and kinetic scrolling. Can be used as a drop-in replacement
+ * for the existing #GtkScrolledWindow.
+ *
+ * If a direct child of the #KatzeScrolled has its own window
+ * (InputOnly is enough for events), it is automatically activated when added
+ * as a child. All motion events in that area will be used to scroll.
+ *
+ * If some descendant widgets capture button press, button release and/ or
+ * motion nofity events, the user can not scroll the area by pressing those
+ * widgets (unless the widget is activated). #GtkButton is a typical example
+ * of that. Usually that is the desired behaviour.
+ *
+ * Any widget can be registered to provide pointer events for the
+ * #KatzeScrolled by using the
+ * #katze_scrolled_activate_scrolling function.
+ *
+ **/
+
+G_DEFINE_TYPE (KatzeScrolled, katze_scrolled, GTK_TYPE_SCROLLED_WINDOW);
+
+enum
+{
+    PROP_0,
+
+    PROP_DRAG_SCROLLING,
+    PROP_KINETIC_SCROLLING
+};
+
+static void
+katze_scrolled_set_property (GObject* object,
+                             guint prop_id,
+                             const GValue* value,
+                             GParamSpec* pspec);
+
+static void
+katze_scrolled_get_property (GObject* object,
+                             guint prop_id,
+                             GValue* value,
+                             GParamSpec* pspec);
+
+static void
+katze_scrolled_dispose (GObject* object);
+
+static void
+katze_scrolled_activate_scrolling (KatzeScrolled* scrolled,
+                                   GtkWidget*     widget);
+
+static void
+katze_scrolled_set_drag_scrolling (KatzeScrolled* scrolled,
+                                   gboolean       drag_scrolling);
+
+struct _KatzeScrolledPrivate
+{
+    /* Settings */
+    guint interval;
+    gdouble deceleration;
+    gboolean drag_scrolling;
+    gboolean kinetic_scrolling;
+    guint32 dragging_stopped_delay;
+    gboolean scrolling_hints;
+
+    /* Temporary variables */
+    gboolean dragged;
+    gboolean press_received;
+    GdkWindow* synthetic_crossing_event_window;
+
+    /* Disabling twice happening scrolling adjustment */
+    GtkAdjustment* hadjustment;
+    GtkWidget* viewport;
+
+    /* Motion scrolling */
+    gint start_x;
+    gint start_y;
+    gint previous_x;
+    gint previous_y;
+    gint farest_x;
+    gint farest_y;
+    guint32 start_time;
+    guint32 previous_time;
+    guint32 farest_time;
+    gboolean going_right;
+    gboolean going_down;
+
+    /* Kinetic scrolling */
+    guint scrolling_timeout_id;
+    gdouble horizontal_speed;
+    gdouble vertical_speed;
+    gdouble horizontal_deceleration;
+    gdouble vertical_deceleration;
+
+    /* Internal scrollbars */
+    GdkWindow* vertical_scrollbar_window;
+    GdkWindow* horizontal_scrollbar_window;
+    gint vertical_scrollbar_size;
+    gint horizontal_scrollbar_size;
+    guint hide_scrollbars_timeout_id;
+    GdkGC* hilight_gc;
+    GdkGC* shadow_gc;
+};
+
+typedef struct _KatzeScrolledState KatzeScrolledState;
+typedef gboolean (*KatzeScrolledEventHandler)(GdkEvent*           event,
+                                              KatzeScrolledState* state,
+                                              gpointer            user_data);
+
+typedef struct
+{
+    KatzeScrolledEventHandler event_handler;
+    gpointer user_data;
+} EventHandlerData;
+
+struct _KatzeScrolledState
+{
+    GList* current_event_handler;
+};
+
+static GList* event_handlers = NULL;
+
+static void
+katze_scrolled_event_handler_func (GdkEvent* event,
+                                   gpointer  data);
+
+static void
+katze_scrolled_event_handler_append (KatzeScrolledEventHandler event_handler,
+                                     gpointer                  user_data)
+{
+    EventHandlerData* data;
+
+    data = g_new0 (EventHandlerData, 1);
+    data->event_handler = event_handler;
+    data->user_data = user_data;
+    event_handlers = g_list_append (event_handlers, data);
+
+    gdk_event_handler_set ((GdkEventFunc)katze_scrolled_event_handler_func, NULL, NULL);
+}
+
+static void
+katze_scrolled_event_handler_next (GdkEvent*           event,
+                                   KatzeScrolledState* state)
+{
+    EventHandlerData* data;
+    gboolean stop_propagating;
+
+    state->current_event_handler = g_list_next (state->current_event_handler);
+    if (state->current_event_handler)
+    {
+        data = (EventHandlerData*)state->current_event_handler->data;
+        stop_propagating = data->event_handler (event, state, data->user_data);
+        if (!stop_propagating && state->current_event_handler)
+            g_critical ("%s: handler returned FALSE without calling %s first",
+                        G_STRFUNC, G_STRFUNC);
+    }
+    else
+        gtk_main_do_event (event);
+}
+
+static void
+katze_scrolled_event_handler_func (GdkEvent* event,
+                                   gpointer  user_data)
+{
+    KatzeScrolledState* state;
+    EventHandlerData* data;
+    gboolean stop_propagating;
+
+    state = g_new0 (KatzeScrolledState, 1);
+    state->current_event_handler = g_list_first (event_handlers);
+    if (state->current_event_handler)
+    {
+        data = (EventHandlerData*)state->current_event_handler->data;
+        stop_propagating = data->event_handler (event, state, data->user_data);
+        if (!stop_propagating && state->current_event_handler)
+            g_critical ("%s: handler returned FALSE without calling %s first",
+                        G_STRFUNC, "katze_scrolled_event_handler_next");
+    }
+    else
+        gtk_main_do_event (event);
+
+    g_free (state);
+}
+
+static GdkWindow* current_gdk_window;
+static KatzeScrolled* current_scrolled_window;
+static GtkWidget* current_widget;
+static gboolean synthetized_crossing_event;
+
+static GTree* activated_widgets;
+
+static gint
+compare_pointers (gconstpointer a,
+                  gconstpointer b)
+{
+    return a - b;
+}
+
+static void
+disable_hadjustment (KatzeScrolled* scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    GtkAdjustment* hadjustment;
+    GtkWidget* viewport;
+
+    if ((hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (scrolled)))
+        && priv->hadjustment != hadjustment)
+    {
+        priv->hadjustment = hadjustment;
+        priv->viewport = NULL;
+        viewport = GTK_WIDGET (scrolled);
+        while (GTK_IS_BIN (viewport))
+        {
+            viewport = gtk_bin_get_child (GTK_BIN (viewport));
+            if (GTK_IS_VIEWPORT (viewport))
+            {
+                priv->viewport = viewport;
+                break;
+            }
+        }
+    }
+    g_signal_handlers_block_matched (priv->hadjustment, G_SIGNAL_MATCH_DATA,
+                                     0, 0, 0, 0, priv->viewport);
+}
+
+static void
+enable_hadjustment (KatzeScrolled* scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+
+    g_signal_handlers_unblock_matched (priv->hadjustment, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, priv->viewport);
+}
+
+static gboolean
+on_expose_event (GtkWidget*      widget,
+                 GdkEventExpose* event,
+                 KatzeScrolled*  scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    gboolean ret = FALSE;
+
+    if (GTK_WIDGET_DRAWABLE (widget))
+    {
+        if (event->window == priv->horizontal_scrollbar_window)
+        {
+            if (priv->horizontal_scrollbar_size)
+            {
+                gdk_draw_line (event->window, priv->hilight_gc, 0, 0, priv->horizontal_scrollbar_size - 1, 0);
+                gdk_draw_line (event->window, priv->hilight_gc, 0, 1, 0, 9);
+                gdk_draw_line (event->window, priv->shadow_gc, priv->horizontal_scrollbar_size - 1, 1, priv->horizontal_scrollbar_size - 1, 9);
+                gdk_draw_line (event->window, priv->shadow_gc, 0, 9, priv->horizontal_scrollbar_size - 1, 9);
+            }
+
+            ret = TRUE;
+        }
+        else if (event->window == priv->vertical_scrollbar_window)
+        {
+            if (priv->vertical_scrollbar_size)
+            {
+                gdk_draw_line (event->window, priv->hilight_gc, 0, 0, 9, 0);
+                gdk_draw_line (event->window, priv->hilight_gc, 0, 1, 0, priv->vertical_scrollbar_size - 1);
+                gdk_draw_line (event->window, priv->shadow_gc, 9, 1, 9, priv->vertical_scrollbar_size - 1);
+                gdk_draw_line (event->window, priv->shadow_gc, 0, priv->vertical_scrollbar_size - 1, 9, priv->vertical_scrollbar_size - 1);
+            }
+
+            ret = TRUE;
+        }
+    }
+
+    return ret;
+}
+
+static gboolean
+adjust_scrollbar (KatzeScrolled* scrolled,
+                  GdkWindow*     scrollbar_window,
+                  GtkAdjustment* adjustment,
+                  gint*          previous_size,
+                  gboolean       horizontal)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    GtkWidget* widget = GTK_WIDGET (scrolled);
+    gint x, y;
+    gint size;
+    double position;
+    GtkWidget* window;
+
+    if (adjustment->page_size >= adjustment->upper - adjustment->lower)
+    {
+        *previous_size = 0;
+        return FALSE;
+    }
+
+    size = ((double)adjustment->page_size) / (adjustment->upper - adjustment->lower) * (horizontal
+        ? widget->allocation.height : widget->allocation.width);
+    if (size != *previous_size)
+    {
+        *previous_size = size;
+        if (horizontal)
+        {
+            gdk_window_resize (scrollbar_window, 10, size);
+            gdk_window_clear (scrollbar_window);
+            gdk_draw_line (scrollbar_window, priv->hilight_gc, 0, 0, 9, 0);
+            gdk_draw_line (scrollbar_window, priv->hilight_gc, 0, 1, 0, size - 1);
+            gdk_draw_line (scrollbar_window, priv->shadow_gc, 9, 1, 9, size - 1);
+            gdk_draw_line (scrollbar_window, priv->shadow_gc, 0, size - 1, 9, size - 1);
+        }
+        else
+        {
+            gdk_window_resize (scrollbar_window, size, 10);
+            gdk_window_clear (scrollbar_window);
+            gdk_draw_line (scrollbar_window, priv->hilight_gc, 0, 0, size - 1, 0);
+            gdk_draw_line (scrollbar_window, priv->hilight_gc, 0, 1, 0, 9);
+            gdk_draw_line (scrollbar_window, priv->shadow_gc, size - 1, 1, size - 1, 9);
+            gdk_draw_line (scrollbar_window, priv->shadow_gc, 0, 9, size - 1, 9);
+        }
+    }
+
+    position = (adjustment->value - adjustment->lower) / (adjustment->upper - adjustment->lower);
+    window = gtk_widget_get_toplevel (widget);
+    if (horizontal)
+    {
+        gtk_widget_translate_coordinates (widget, window,
+            widget->allocation.width - 20, position * widget->allocation.height, &x, &y);
+        gdk_window_move (scrollbar_window, x, y);
+    }
+    else
+    {
+        gtk_widget_translate_coordinates (widget, window,
+            position * widget->allocation.width, widget->allocation.height - 20, &x, &y);
+        gdk_window_move (scrollbar_window, x, y);
+    }
+
+    return TRUE;
+}
+
+static gboolean
+hide_scrollbars_timeout (gpointer data)
+{
+    KatzeScrolled* scrolled = KATZE_SCROLLED (data);
+    KatzeScrolledPrivate* priv = scrolled->priv;
+
+    gdk_threads_enter ();
+    gdk_window_hide (priv->vertical_scrollbar_window);
+    gdk_window_hide (priv->horizontal_scrollbar_window);
+
+    priv->hide_scrollbars_timeout_id = 0;
+    gdk_threads_leave ();
+
+    return FALSE;
+}
+
+static gdouble
+calculate_timeout_scroll_values (gdouble  old_value,
+                                 gdouble  upper_limit,
+                                 gdouble* scrolling_speed_pointer,
+                                 gdouble  deceleration,
+                                 gdouble* other_deceleration,
+                                 gdouble normal_deceleration)
+{
+    gdouble new_value = old_value;
+
+    if (*scrolling_speed_pointer > deceleration ||
+        *scrolling_speed_pointer < -deceleration)
+    {
+        if (old_value + *scrolling_speed_pointer <= 0.0)
+        {
+            new_value = -1.0;
+            *scrolling_speed_pointer = 0.0;
+            *other_deceleration = normal_deceleration;
+        }
+        else if (old_value + *scrolling_speed_pointer >= upper_limit)
+        {
+            new_value = upper_limit;
+            *scrolling_speed_pointer = 0.0;
+            *other_deceleration = normal_deceleration;
+        }
+        else
+            new_value = old_value + *scrolling_speed_pointer;
+        if (*scrolling_speed_pointer > deceleration)
+            *scrolling_speed_pointer -= deceleration;
+        else if (*scrolling_speed_pointer < -deceleration)
+            *scrolling_speed_pointer += deceleration;
+    }
+
+    return new_value;
+}
+
+static void
+do_timeout_scroll (KatzeScrolled* scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    GtkScrolledWindow* gtk_scrolled = GTK_SCROLLED_WINDOW (scrolled);
+    GtkAdjustment* hadjustment;
+    GtkAdjustment* vadjustment;
+    gdouble hvalue;
+    gdouble vvalue;
+
+    hadjustment = gtk_scrolled_window_get_hadjustment (gtk_scrolled);
+    vadjustment = gtk_scrolled_window_get_vadjustment (gtk_scrolled);
+    hvalue = calculate_timeout_scroll_values (hadjustment->value,
+        hadjustment->upper - hadjustment->page_size,
+        &priv->horizontal_speed,
+        priv->horizontal_deceleration,
+        &priv->vertical_deceleration,
+        priv->deceleration);
+    vvalue = calculate_timeout_scroll_values (vadjustment->value,
+        vadjustment->upper - vadjustment->page_size,
+        &priv->vertical_speed,
+        priv->vertical_deceleration,
+        &priv->horizontal_deceleration,
+        priv->deceleration);
+    if (vvalue != vadjustment->value)
+    {
+        if (hvalue != hadjustment->value)
+        {
+            disable_hadjustment (scrolled);
+            gtk_adjustment_set_value (hadjustment, hvalue);
+            enable_hadjustment (scrolled);
+        }
+        gtk_adjustment_set_value (vadjustment, vvalue);
+    }
+    else if (hvalue != hadjustment->value)
+        gtk_adjustment_set_value (hadjustment, hvalue);
+
+    adjust_scrollbar (scrolled, priv->horizontal_scrollbar_window,
+                     gtk_scrolled_window_get_hadjustment (gtk_scrolled),
+                     &priv->horizontal_scrollbar_size, FALSE);
+    adjust_scrollbar (scrolled, priv->vertical_scrollbar_window,
+                     gtk_scrolled_window_get_vadjustment (gtk_scrolled),
+                     &priv->vertical_scrollbar_size, TRUE);
+}
+
+static gboolean
+timeout_scroll (gpointer data)
+{
+    gboolean ret = TRUE;
+    KatzeScrolled* scrolled = KATZE_SCROLLED (data);
+    KatzeScrolledPrivate* priv = scrolled->priv;
+
+    gdk_threads_enter ();
+    do_timeout_scroll (scrolled);
+
+    if (priv->vertical_speed < priv->deceleration &&
+        priv->vertical_speed > -priv->deceleration &&
+        priv->horizontal_speed < priv->deceleration &&
+        priv->horizontal_speed > -priv->deceleration)
+    {
+        priv->scrolling_timeout_id = 0;
+        if (!priv->hide_scrollbars_timeout_id)
+            priv->hide_scrollbars_timeout_id = g_timeout_add (500,
+                hide_scrollbars_timeout, scrolled);
+
+        ret = FALSE;
+    }
+    gdk_threads_leave ();
+
+    return ret;
+}
+
+static gdouble
+calculate_motion_scroll_values (gdouble old_value,
+                                gdouble upper_limit,
+                                gint    current_coordinate,
+                                gint    previous_coordinate)
+{
+    gdouble new_value = old_value;
+    gint movement;
+
+    movement = current_coordinate - previous_coordinate;
+
+    if (old_value - movement < upper_limit)
+        new_value = old_value - movement;
+    else
+        new_value = upper_limit;
+
+    return new_value;
+}
+
+static void
+do_motion_scroll (KatzeScrolled* scrolled,
+                  GtkWidget*     widget,
+                  gint           x,
+                  gint           y,
+                  guint32        timestamp)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    GtkAdjustment* hadjustment;
+    GtkAdjustment* vadjustment;
+    gdouble hvalue;
+    gdouble vvalue;
+
+    if (priv->dragged || gtk_drag_check_threshold (widget, priv->start_x, priv->start_y, x, y))
+    {
+        if (timestamp - priv->previous_time > priv->dragging_stopped_delay || !priv->dragged)
+        {
+            priv->dragged = TRUE;
+            priv->going_right = priv->start_x < x;
+            priv->going_down = priv->start_y < y;
+            priv->start_x = priv->farest_x = x;
+            priv->start_y = priv->farest_y = y;
+            priv->start_time = priv->farest_time = timestamp;
+        }
+        else
+        {
+            if ((priv->going_right && x > priv->farest_x)
+                || (!priv->going_right && x < priv->farest_x))
+            {
+                priv->farest_x = x;
+                priv->farest_time = timestamp;
+            }
+            if ((priv->going_down && y > priv->farest_y)
+                || (!priv->going_down && y < priv->farest_y))
+            {
+                priv->farest_y = y;
+                priv->farest_time = timestamp;
+            }
+            if (gtk_drag_check_threshold (widget, priv->farest_x, priv->farest_y, x, y))
+            {
+                priv->start_x = priv->farest_x;
+                priv->farest_x = x;
+                priv->start_y = priv->farest_y;
+                priv->farest_y = y;
+                priv->start_time = priv->farest_time;
+                priv->farest_time = timestamp;
+                priv->going_right = priv->start_x < x;
+                priv->going_down = priv->start_y < y;
+            }
+        }
+
+        hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (scrolled));
+        vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled));
+        hvalue = calculate_motion_scroll_values (hadjustment->value,
+            hadjustment->upper - hadjustment->page_size, x, priv->previous_x);
+        vvalue = calculate_motion_scroll_values (vadjustment->value,
+            vadjustment->upper - vadjustment->page_size, y, priv->previous_y);
+        if (vvalue != vadjustment->value)
+        {
+            if (hvalue != hadjustment->value)
+            {
+                disable_hadjustment (scrolled);
+                gtk_adjustment_set_value (hadjustment, hvalue);
+                enable_hadjustment (scrolled);
+            }
+            gtk_adjustment_set_value (vadjustment, vvalue);
+        }
+        else if (hvalue != hadjustment->value)
+            gtk_adjustment_set_value (hadjustment, hvalue);
+    }
+
+    priv->previous_y = y;
+    priv->previous_x = x;
+    priv->previous_time = timestamp;
+
+    adjust_scrollbar (scrolled, priv->horizontal_scrollbar_window,
+        gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (scrolled)),
+        &priv->horizontal_scrollbar_size, FALSE);
+    adjust_scrollbar (scrolled, priv->vertical_scrollbar_window,
+        gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled)),
+        &priv->vertical_scrollbar_size, TRUE);
+}
+
+static gboolean
+button_press_event (GtkWidget*      widget,
+                    GdkEventButton* event,
+                    KatzeScrolled*  scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    gint x;
+    gint y;
+    GdkModifierType mask;
+
+    if (!priv->drag_scrolling)
+        return FALSE;
+
+    if (event->button != 1)
+        return FALSE;
+
+    priv->press_received = TRUE;
+
+    if (event->time - priv->previous_time < priv->dragging_stopped_delay &&
+        gtk_drag_check_threshold (widget, priv->previous_x, priv->previous_y, x, y))
+    {
+        if (priv->scrolling_timeout_id)
+        {
+            g_source_remove (priv->scrolling_timeout_id);
+            priv->scrolling_timeout_id = 0;
+        }
+        gdk_window_get_pointer (GTK_WIDGET (scrolled)->window, &x, &y, &mask);
+        /* do_motion_scroll (scrolled, widget, x, y, event->time); */
+    }
+    else
+    {
+        if (priv->scrolling_timeout_id)
+        {
+            g_source_remove (priv->scrolling_timeout_id);
+            priv->scrolling_timeout_id = 0;
+            priv->previous_time = 0;
+        }
+        else
+        {
+            priv->dragged = FALSE;
+            priv->previous_time = event->time;
+        }
+        gdk_window_get_pointer (GTK_WIDGET (scrolled)->window, &x, &y, &mask);
+        priv->start_x = priv->previous_x = priv->farest_x = x;
+        priv->start_y = priv->previous_y = priv->farest_y = y;
+        priv->start_time  = event->time;
+    }
+
+    if (priv->scrolling_hints && !GTK_SCROLLED_WINDOW (scrolled)->hscrollbar_visible &&
+        adjust_scrollbar (scrolled, priv->horizontal_scrollbar_window,
+                     gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (scrolled)),
+                         &priv->horizontal_scrollbar_size, FALSE))
+    {
+        gdk_window_raise (priv->horizontal_scrollbar_window);
+        gdk_window_show (priv->horizontal_scrollbar_window);
+    }
+    if (priv->scrolling_hints && !GTK_SCROLLED_WINDOW (scrolled)->vscrollbar_visible &&
+        adjust_scrollbar (scrolled, priv->vertical_scrollbar_window,
+                     gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled)),
+                         &priv->vertical_scrollbar_size, TRUE))
+    {
+        gdk_window_raise (priv->vertical_scrollbar_window);
+        gdk_window_show (priv->vertical_scrollbar_window);
+    }
+    if (priv->hide_scrollbars_timeout_id)
+    {
+        g_source_remove (priv->hide_scrollbars_timeout_id);
+        priv->hide_scrollbars_timeout_id = 0;
+    }
+
+    return FALSE;
+}
+
+static gboolean
+button_release_event (GtkWidget*      widget,
+                      GdkEventButton* event,
+                      KatzeScrolled*  scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    gint x;
+    gint y;
+    GdkModifierType mask;
+
+    gdk_window_get_pointer (GTK_WIDGET (scrolled)->window, &x, &y, &mask);
+    if (priv->press_received &&
+        gtk_drag_check_threshold (widget, priv->start_x, priv->start_y, x, y)) {
+        priv->dragged = TRUE;
+    }
+
+    if (priv->press_received && priv->kinetic_scrolling &&
+        event->time - priv->previous_time < priv->dragging_stopped_delay) {
+        priv->vertical_speed = (gdouble)(priv->start_y - y) / (event->time - priv->start_time) * priv->interval;
+        priv->horizontal_speed = (gdouble)(priv->start_x - x) / (event->time - priv->start_time) * priv->interval;
+        if (ABS (priv->vertical_speed) > ABS (priv->horizontal_speed)) {
+            priv->vertical_deceleration = priv->deceleration;
+            priv->horizontal_deceleration = priv->deceleration * ABS (priv->horizontal_speed / priv->vertical_speed);
+        } else {
+            priv->horizontal_deceleration = priv->deceleration;
+            priv->vertical_deceleration = priv->deceleration * ABS (priv->vertical_speed / priv->horizontal_speed);
+        }
+        priv->scrolling_timeout_id = g_timeout_add (priv->interval, timeout_scroll, scrolled);
+
+        do_timeout_scroll (scrolled);
+    }
+    else if (!priv->hide_scrollbars_timeout_id) {
+        priv->hide_scrollbars_timeout_id = g_timeout_add (500, hide_scrollbars_timeout, scrolled);
+    }
+    priv->previous_x = x;
+    priv->previous_y = y;
+    priv->previous_time = event->time;
+
+    priv->press_received = FALSE;
+
+    return FALSE;
+}
+
+static gboolean
+motion_notify_event (GtkWidget*      widget,
+                     GdkEventMotion* event,
+                     KatzeScrolled*  scrolled)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    gint x;
+    gint y;
+    GdkModifierType mask;
+
+    if (priv->press_received)
+    {
+        gdk_window_get_pointer (GTK_WIDGET (scrolled)->window, &x, &y, &mask);
+        do_motion_scroll (scrolled, widget, x, y, event->time);
+    }
+
+    return FALSE;
+}
+
+static gboolean
+katze_scrolled_event_handler (GdkEvent*           event,
+                              KatzeScrolledState* state,
+                              gpointer            user_data)
+{
+    gboolean stop_propagating;
+    GdkEventCrossing crossing;
+
+    stop_propagating = FALSE;
+
+    if (event->type == GDK_BUTTON_PRESS)
+    {
+        gdk_window_get_user_data (event->button.window, (gpointer)&current_widget);
+
+        if ((current_scrolled_window = g_tree_lookup (activated_widgets, current_widget)))
+        {
+            current_gdk_window = event->button.window;
+            stop_propagating = button_press_event (current_widget, &event->button, current_scrolled_window);
+        }
+        else
+            current_gdk_window = NULL;
+    }
+    else if (event->any.window == current_gdk_window)
+    {
+        if (event->type == GDK_MOTION_NOTIFY)
+        {
+            if (current_scrolled_window->priv->dragged)
+                stop_propagating = motion_notify_event (current_widget, &event->motion, current_scrolled_window);
+            else
+            {
+                stop_propagating = motion_notify_event (current_widget, &event->motion, current_scrolled_window);
+                if (current_scrolled_window->priv->dragged)
+                {
+                    crossing.type = GDK_LEAVE_NOTIFY;
+                    crossing.window = event->motion.window;
+                    crossing.send_event = event->motion.send_event;
+                    crossing.subwindow = GTK_WIDGET (current_scrolled_window)->window;
+                    crossing.time = event->motion.time;
+                    crossing.x = event->motion.x;
+                    crossing.y = event->motion.y;
+                    crossing.x_root = event->motion.x_root;
+                    crossing.y_root = event->motion.y_root;
+                    crossing.mode = GDK_CROSSING_GRAB;
+                    crossing.detail = GDK_NOTIFY_ANCESTOR;
+                    crossing.focus = TRUE;
+                    crossing.state = event->motion.state;
+
+                    gtk_main_do_event ((GdkEvent*)&crossing);
+                    synthetized_crossing_event = TRUE;
+                }
+            }
+        }
+        else if ((event->type == GDK_ENTER_NOTIFY || event->type == GDK_LEAVE_NOTIFY) &&
+                   synthetized_crossing_event)
+            stop_propagating = TRUE;
+        else if (event->type == GDK_BUTTON_RELEASE)
+            stop_propagating = button_release_event (current_widget, &event->button, current_scrolled_window);
+    }
+
+    if (!stop_propagating)
+        katze_scrolled_event_handler_next (event, state);
+
+    if (event->type == GDK_BUTTON_RELEASE && event->button.window == current_gdk_window)
+    {
+        crossing.type = GDK_ENTER_NOTIFY;
+        crossing.window = event->button.window;
+        crossing.send_event = event->button.send_event;
+        crossing.subwindow = GTK_WIDGET (current_scrolled_window)->window;
+        crossing.time = event->button.time;
+        crossing.x = event->button.x;
+        crossing.y = event->button.y;
+        crossing.x_root = event->button.x_root;
+        crossing.y_root = event->button.y_root;
+        crossing.mode = GDK_CROSSING_UNGRAB;
+        crossing.detail = GDK_NOTIFY_ANCESTOR;
+        crossing.focus = TRUE;
+        crossing.state = event->button.state;
+
+        gtk_main_do_event ((GdkEvent*)&crossing);
+        synthetized_crossing_event = FALSE;
+    }
+
+    return stop_propagating;
+}
+
+static void
+katze_scrolled_add (GtkContainer* container,
+                    GtkWidget*    widget)
+{
+    katze_scrolled_activate_scrolling (KATZE_SCROLLED (container), widget);
+
+    (*GTK_CONTAINER_CLASS (katze_scrolled_parent_class)->add) (container, widget);
+}
+
+static void
+katze_scrolled_realize (GtkWidget* widget)
+{
+    KatzeScrolled* scrolled = KATZE_SCROLLED (widget);
+    KatzeScrolledPrivate* priv = scrolled->priv;
+    gboolean drag_scrolling;
+    GtkSettings* settings = gtk_widget_get_settings (widget);
+    GtkPolicyType policy;
+    GdkWindowAttr attr;
+    GdkColor color;
+
+    (*GTK_WIDGET_CLASS (katze_scrolled_parent_class)->realize) (widget);
+
+    g_object_get (settings, "gtk-touchscreen-mode", &drag_scrolling, NULL);
+    policy = drag_scrolling ? GTK_POLICY_NEVER : GTK_POLICY_AUTOMATIC;
+    g_object_set (scrolled, "drag-scrolling", drag_scrolling,
+        "hscrollbar-policy", policy, "vscrollbar-policy", policy, NULL);
+
+    widget->window = g_object_ref (gtk_widget_get_parent_window (widget));
+
+    attr.height = attr.width = 10;
+    attr.event_mask = GDK_EXPOSURE_MASK;
+    attr.wclass = GDK_INPUT_OUTPUT;
+    attr.window_type = GDK_WINDOW_CHILD;
+    attr.override_redirect = TRUE;
+    priv->vertical_scrollbar_window = gdk_window_new (widget->window, &attr, 0);
+    priv->horizontal_scrollbar_window = gdk_window_new (widget->window, &attr, 0);
+
+    gdk_window_set_user_data (priv->vertical_scrollbar_window, widget);
+    gdk_window_set_user_data (priv->horizontal_scrollbar_window, widget);
+    g_signal_connect (widget, "expose-event",
+                      G_CALLBACK (on_expose_event), scrolled);
+
+    color.red = color.green = color.blue = 0x9999;
+    gdk_rgb_find_color (gdk_colormap_get_system (), &color);
+    gdk_window_set_background (priv->vertical_scrollbar_window, &color);
+    gdk_window_set_background (priv->horizontal_scrollbar_window, &color);
+
+    priv->hilight_gc = gdk_gc_new (widget->window);
+    color.red = color.green = color.blue = 0xcccc;
+    gdk_gc_set_rgb_fg_color (priv->hilight_gc, &color);
+    priv->shadow_gc = gdk_gc_new (widget->window);
+    color.red = color.green = color.blue = 0x6666;
+    gdk_gc_set_rgb_fg_color (priv->shadow_gc, &color);
+
+    GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+}
+
+static void
+katze_scrolled_dispose (GObject* object)
+{
+    KatzeScrolled* scrolled = KATZE_SCROLLED (object);
+    KatzeScrolledPrivate* priv = scrolled->priv;
+
+    if (priv->scrolling_timeout_id)
+    {
+        g_source_remove (priv->scrolling_timeout_id);
+        priv->scrolling_timeout_id = 0;
+    }
+    if (priv->hide_scrollbars_timeout_id)
+    {
+        g_source_remove (priv->hide_scrollbars_timeout_id);
+        priv->hide_scrollbars_timeout_id = 0;
+    }
+
+    (*G_OBJECT_CLASS (katze_scrolled_parent_class)->dispose) (object);
+}
+
+static void
+katze_scrolled_class_init (KatzeScrolledClass* class)
+{
+    GObjectClass* gobject_class;
+    GtkWidgetClass* widget_class;
+    GtkContainerClass* container_class;
+    GParamFlags flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT;
+    GtkSettings* gtk_settings;
+
+    gobject_class = G_OBJECT_CLASS (class);
+    widget_class = GTK_WIDGET_CLASS (class);
+    container_class = GTK_CONTAINER_CLASS (class);
+
+    gobject_class->set_property = katze_scrolled_set_property;
+    gobject_class->get_property = katze_scrolled_get_property;
+    gobject_class->dispose = katze_scrolled_dispose;
+
+    widget_class->realize = katze_scrolled_realize;
+
+    container_class->add = katze_scrolled_add;
+
+    /**
+     * KatzeScrolled:drag-scrolling:
+     *
+     * Whether the widget can be scrolled by dragging its contents.
+     *
+     * If "gtk-touchscreen-mode" is enabled, drag scrolling is
+     * automatically enabled.
+     *
+     * Since: 0.2.0
+     */
+    g_object_class_install_property (gobject_class,
+                                     PROP_DRAG_SCROLLING,
+                                     g_param_spec_boolean (
+                                     "drag-scrolling",
+                                     "Drag Scrolling",
+                                     "Whether the widget can be scrolled by dragging its contents",
+                                     FALSE,
+                                     flags));
+
+    /**
+     * KatzeScrolled:kinetic-scrolling:
+     *
+     * Whether drag scrolling is kinetic, that is releasing the
+     * pointer keeps the contents scrolling further relative to
+     * the speed with which they were dragged.
+     *
+     * Since: 0.2.0
+     */
+    g_object_class_install_property (gobject_class,
+                                     PROP_KINETIC_SCROLLING,
+                                     g_param_spec_boolean (
+                                     "kinetic-scrolling",
+                                     "Kinetic Scrolling",
+                                     "Whether drag scrolling is kinetic",
+                                     TRUE,
+                                     flags));
+
+    activated_widgets = g_tree_new ((GCompareFunc)compare_pointers);
+    current_gdk_window = NULL;
+
+    /* Usually touchscreen mode is either always set or it isn't, so it
+      should be a safe optimization to not setup events if not needed. */
+    if ((gtk_settings = gtk_settings_get_default ()))
+    {
+        gboolean touchscreen;
+        g_object_get (gtk_settings, "gtk-touchscreen-mode", &touchscreen, NULL);
+        if (touchscreen)
+            katze_scrolled_event_handler_append (katze_scrolled_event_handler, NULL);
+    }
+
+    g_type_class_add_private (class, sizeof (KatzeScrolledPrivate));
+}
+
+static void
+katze_scrolled_init (KatzeScrolled* scrolled)
+{
+    KatzeScrolledPrivate* priv;
+
+    scrolled->priv = priv = G_TYPE_INSTANCE_GET_PRIVATE ((scrolled),
+        KATZE_TYPE_SCROLLED, KatzeScrolledPrivate);
+
+    priv->interval = DEFAULT_INTERVAL;
+    priv->deceleration = DEFAULT_DECELERATION;
+    priv->drag_scrolling = FALSE;
+    priv->kinetic_scrolling = TRUE;
+    priv->dragging_stopped_delay = DEFAULT_DRAGGING_STOPPED_DELAY;
+}
+
+static void
+katze_scrolled_set_property (GObject*      object,
+                             guint         prop_id,
+                             const GValue* value,
+                             GParamSpec*   pspec)
+{
+    KatzeScrolled* scrolled = KATZE_SCROLLED (object);
+
+    switch (prop_id)
+    {
+    case PROP_DRAG_SCROLLING:
+        katze_scrolled_set_drag_scrolling (scrolled, g_value_get_boolean (value));
+        break;
+    case PROP_KINETIC_SCROLLING:
+        scrolled->priv->kinetic_scrolling = g_value_get_boolean (value);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
+katze_scrolled_get_property (GObject*    object,
+                             guint       prop_id,
+                             GValue*     value,
+                             GParamSpec* pspec)
+{
+    KatzeScrolled* scrolled = KATZE_SCROLLED (object);
+
+    switch (prop_id)
+    {
+    case PROP_DRAG_SCROLLING:
+        g_value_set_boolean (value, scrolled->priv->drag_scrolling);
+        break;
+    case PROP_KINETIC_SCROLLING:
+        g_value_set_boolean (value, scrolled->priv->kinetic_scrolling);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+/**
+ * katze_scrolled_new:
+ * @hadjustment: a horizontal #GtkAdjustment, or %NULL
+ * @vadjustment: a vertical #GtkAdjustment, or %NULL
+ *
+ * Creates a new #KatzeScrolled.
+ *
+ * Since: 0.2.0
+ **/
+
+GtkWidget*
+katze_scrolled_new (GtkAdjustment* hadjustment,
+                            GtkAdjustment* vadjustment)
+{
+    if (hadjustment)
+        g_return_val_if_fail (GTK_IS_ADJUSTMENT (hadjustment), NULL);
+    if (vadjustment)
+        g_return_val_if_fail (GTK_IS_ADJUSTMENT (vadjustment), NULL);
+
+    return gtk_widget_new (KATZE_TYPE_SCROLLED,
+                           "hadjustment", hadjustment,
+                           "vadjustment", vadjustment, NULL);
+}
+
+/**
+ * katze_scrolled_activate_scrolling:
+ * @scrolled: a #KatzeScrolled
+ * @widget: a #GtkWidget of which area is made active event source for
+ * drag and kinetic scrolling.
+ *
+ * Activates the widget so that pointer motion events inside the widget are
+ * used to scroll the #KatzeScrolled. The widget can be a child of the
+ * #KatzeScrolled or even a separate widget ("touchpad" style).
+ *
+ * The direct child of the #KatzeScrolled (typically #GtkViewport) is
+ * activated automatically when added. This function has to be used if indirect
+ * descendant widgets are stopping propagation of the button press and release
+ * as well as motion events (for example GtkButton is doing so) but scrolling
+ * should be possible inside their area too.
+ *
+ * This function adds #GDK_BUTTON_PRESS_MASK, #GDK_BUTTON_RELEASE_MASK,
+ * #GDK_POINTER_MOTION_MASK, and #GDK_MOTION_HINT_MAKS into the widgets event mask.
+ */
+
+static void
+katze_scrolled_activate_scrolling (KatzeScrolled* scrolled,
+                                   GtkWidget*     widget)
+{
+    gtk_widget_add_events (widget,
+        GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+        | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
+    g_tree_insert (activated_widgets, widget, scrolled);
+}
+
+static void
+katze_scrolled_set_drag_scrolling (KatzeScrolled* scrolled,
+                                   gboolean       drag_scrolling)
+{
+    KatzeScrolledPrivate* priv = scrolled->priv;
+
+    if (priv->drag_scrolling && !drag_scrolling)
+    {
+        if (priv->scrolling_timeout_id)
+        {
+            g_source_remove (priv->scrolling_timeout_id);
+            priv->scrolling_timeout_id = 0;
+            priv->previous_time = 0;
+        }
+
+        gdk_window_hide (priv->vertical_scrollbar_window);
+        gdk_window_hide (priv->horizontal_scrollbar_window);
+        if (priv->hide_scrollbars_timeout_id)
+        {
+            g_source_remove (priv->hide_scrollbars_timeout_id);
+            priv->hide_scrollbars_timeout_id = 0;
+        }
+
+        priv->press_received = FALSE;
+    }
+
+    priv->drag_scrolling = drag_scrolling;
+}
diff --git a/katze/katze-scrolled.h b/katze/katze-scrolled.h
new file mode 100644 (file)
index 0000000..e8787f1
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ Copyright (C) 2007 Henrik Hedberg <hhedberg@innologies.fi>
+ Copyright (C) 2009 Nadav Wiener <nadavwr@yahoo.com>
+ Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ See the file COPYING for the full license text.
+ */
+
+#ifndef KATZE_SCROLLED_H
+#define KATZE_SCROLLED_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define KATZE_TYPE_SCROLLED (katze_scrolled_get_type())
+#define KATZE_SCROLLED(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), KATZE_TYPE_SCROLLED, KatzeScrolled))
+#define KATZE_SCROLLED_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), KATZE_TYPE_SCROLLED, KatzeScrolledClass))
+#define KATZE_IS_SCROLLED(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), KATZE_TYPE_SCROLLED))
+#define KATZE_IS_SCROLLED_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), KATZE_TYPE_SCROLLED))
+#define KATZE_SCROLLED_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), KATZE_TYPE_SCROLLED, KatzeScrolledClass))
+
+typedef struct _KatzeScrolled KatzeScrolled;
+typedef struct _KatzeScrolledClass KatzeScrolledClass;
+typedef struct _KatzeScrolledPrivate KatzeScrolledPrivate;
+
+struct _KatzeScrolled
+{
+    GtkScrolledWindow parent;
+
+    KatzeScrolledPrivate* priv;
+};
+
+struct _KatzeScrolledClass
+{
+    GtkScrolledWindowClass parent;
+
+    /* Padding for future expansion */
+    void (*_katze_reserved1) (void);
+    void (*_katze_reserved2) (void);
+    void (*_katze_reserved3) (void);
+    void (*_katze_reserved4) (void);
+};
+
+GType
+katze_scrolled_get_type         (void);
+
+GtkWidget*
+katze_scrolled_new              (GtkAdjustment* hadjustment,
+                                 GtkAdjustment* vadjustment);
+
+G_END_DECLS
+
+#endif /* __KATZE_SCROLLED_H__ */
index 253d895513b931b9a678defe2ec55d5584c87620..473d09136f5dda46209a1b46b667d51e6f6e3770 100644 (file)
@@ -165,11 +165,14 @@ proxy_widget_string_destroy_cb (GtkWidget* proxy,
  *     "uri": the widget created will be particularly suitable for
  *         choosing an existing filename, encoded as an URI.
  *     "font": the widget created will be particularly suitable for
- *         choosing a font from installed fonts.
+ *         choosing a variable-width font from installed fonts.
  *     Since 0.1.6 the following hints are also supported:
  *     "toggle": the widget created will be an empty toggle button. This
  *         is only supported with boolean properties.
  *         Since 0.1.8 "toggle" creates GtkCheckButton widgets without checkmarks.
+ *     Since 0.2.0 the following hints are also supported:
+ *     "font-monospace": the widget created will be particularly suitable for
+ *         choosing a fixed-width font from installed fonts.
  *
  * Any other values for @hint are silently ignored.
  *
@@ -276,28 +279,38 @@ katze_property_proxy (gpointer     object,
                               G_CALLBACK (proxy_uri_file_set_cb), object);
         #endif
     }
-    else if (type == G_TYPE_PARAM_STRING && _hint == g_intern_string ("font"))
+    else if (type == G_TYPE_PARAM_STRING && (_hint == g_intern_string ("font")
+        || _hint == g_intern_string ("font-monospace")))
     {
-        int n_families, i;
+        GtkComboBox* combo;
+        gint n_families, i;
         PangoContext* context;
         PangoFontFamily** families;
+        gboolean monospace = _hint == g_intern_string ("font-monospace");
         string = katze_object_get_string (object, property);
 
         widget = gtk_combo_box_new_text ();
+        combo = GTK_COMBO_BOX (widget);
         context = gtk_widget_get_pango_context (widget);
         pango_context_list_families (context, &families, &n_families);
         if (!string)
             string = g_strdup (G_PARAM_SPEC_STRING (pspec)->default_value);
-        for (i = 0; i < n_families; i++)
+        if (string)
         {
-            const gchar* font = pango_font_family_get_name (families[i]);
-            gtk_combo_box_append_text (GTK_COMBO_BOX (widget), font);
-            if (string && !strcmp (font, string))
-                gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i);
+            gint j = 0;
+            for (i = 0; i < n_families; i++)
+            {
+                const gchar* font = pango_font_family_get_name (families[i]);
+                if (monospace != pango_font_family_is_monospace (families[i]))
+                    continue;
+                gtk_combo_box_append_text (combo, font);
+                if (!g_ascii_strcasecmp (font, string))
+                    gtk_combo_box_set_active (combo, j);
+                j++;
+            }
         }
         gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (
-            gtk_combo_box_get_model (GTK_COMBO_BOX (widget))),
-                                     0, GTK_SORT_ASCENDING);
+            gtk_combo_box_get_model (combo)), 0, GTK_SORT_ASCENDING);
         g_signal_connect (widget, "changed",
                           G_CALLBACK (proxy_combo_box_text_changed_cb), object);
         g_free (families);
index 8dd286bfbde4506fe5c0b7035e5b80a9c94da67a..ab85d27b096fb2feebd0359422d1867933fb7209 100644 (file)
@@ -21,5 +21,6 @@
 #include "katze-arrayaction.h"
 #include "katze-separatoraction.h"
 #include "katze-net.h"
+#include "katze-scrolled.h"
 
 #endif /* __KATZE_H__ */
index 109b5a70ee2c61274f30fcd16ef79c8b78addaf9..b4ed755ba0ccf229dd2c3acbc12194128c746cbc 100644 (file)
@@ -94,7 +94,7 @@ settings_new_from_file (const gchar* filename,
     {
         if (error->code == G_FILE_ERROR_NOENT)
         {
-            gchar* config_file = sokoke_find_config_filename ("config");
+            gchar* config_file = sokoke_find_config_filename (NULL, "config");
             g_key_file_load_from_file (key_file, config_file,
                                        G_KEY_FILE_KEEP_COMMENTS, NULL);
         }
@@ -960,11 +960,6 @@ midori_app_add_browser_cb (MidoriApp*     app,
     gtk_widget_show (addon);
     midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
 
-    /* Userstyles */
-    addon = midori_addons_new (MIDORI_ADDON_USER_STYLES, GTK_WIDGET (browser));
-    gtk_widget_show (addon);
-    midori_panel_append_page (MIDORI_PANEL (panel), MIDORI_VIEWABLE (addon));
-
     /* Plugins */
     addon = g_object_new (MIDORI_TYPE_PLUGINS, "app", app, NULL);
     gtk_widget_show (addon);
@@ -1155,6 +1150,17 @@ static void
 button_reset_session_clicked_cb (GtkWidget*  button,
                                  KatzeArray* session)
 {
+    gchar* config_file;
+    GError* error;
+
+    config_file = build_config_filename ("session.old.xbel");
+    error = NULL;
+    if (!midori_array_to_file (session, config_file, "xbel", &error))
+    {
+        g_warning (_("The session couldn't be saved. %s"), error->message);
+        g_error_free (error);
+    }
+    g_free (config_file);
     katze_array_clear (session);
     gtk_widget_set_sensitive (button, FALSE);
 }
@@ -1179,7 +1185,16 @@ midori_create_diagnostic_dialog (MidoriWebSettings* settings,
     MidoriApp* app = katze_item_get_parent (KATZE_ITEM (_session));
 
     dialog = gtk_message_dialog_new (
-        NULL, 0, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK,
+        NULL, 0, GTK_MESSAGE_WARNING,
+        #if HAVE_HILDON
+        #if HILDON_CHECK_VERSION (2, 2, 0)
+        GTK_BUTTONS_NONE,
+        #else
+        GTK_BUTTONS_OK,
+        #endif
+        #else
+        GTK_BUTTONS_OK,
+        #endif
         _("Midori seems to have crashed the last time it was opened. "
           "If this happened repeatedly, try one of the following options "
           "to solve the problem."));
@@ -1213,6 +1228,19 @@ midori_create_diagnostic_dialog (MidoriWebSettings* settings,
     gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 4);
     gtk_widget_show_all (box);
     gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), box);
+    #if HAVE_HILDON
+    #if HILDON_CHECK_VERSION (2, 2, 0)
+    box = gtk_hbox_new (FALSE, 4);
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), box, TRUE, FALSE, 4);
+    button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_HALFSCREEN_WIDTH);
+    gtk_button_set_label (GTK_BUTTON (button), GTK_STOCK_OK);
+    gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
+    g_signal_connect_swapped (button, "clicked",
+        G_CALLBACK (gtk_widget_destroy), dialog);
+    gtk_box_pack_start (GTK_BOX (box), button, TRUE, FALSE, 4);
+    gtk_widget_show_all (box);
+    #endif
+    #endif
     if (1)
     {
         /* GtkLabel can't wrap the text properly. Until some day
@@ -1344,6 +1372,32 @@ midori_load_extensions (gpointer data)
     return FALSE;
 }
 
+static void
+midori_browser_action_last_session_activate_cb (GtkAction*     action,
+                                                MidoriBrowser* browser)
+{
+    KatzeArray* old_session = katze_array_new (KATZE_TYPE_ITEM);
+    gchar* config_file = build_config_filename ("session.old.xbel");
+    GError* error = NULL;
+    if (midori_array_from_file (old_session, config_file, "xbel", &error))
+    {
+        guint i = 0;
+        KatzeItem* item;
+        while ((item = katze_array_get_nth_item (old_session, i++)))
+            midori_browser_add_item (browser, item);
+    }
+    else
+    {
+        g_warning (_("The session couldn't be loaded: %s\n"), error->message);
+        /* FIXME: Show a graphical dialog */
+        g_error_free (error);
+    }
+    g_free (config_file);
+    gtk_action_set_sensitive (action, FALSE);
+    g_signal_handlers_disconnect_by_func (action,
+        midori_browser_action_last_session_activate_cb, browser);
+}
+
 static gboolean
 midori_load_session (gpointer data)
 {
@@ -1358,10 +1412,19 @@ midori_load_session (gpointer data)
     gchar** command = g_object_get_data (G_OBJECT (app), "execute-command");
 
     browser = midori_app_create_browser (app);
+    config_file = build_config_filename ("session.old.xbel");
+    if (g_file_test (config_file, G_FILE_TEST_EXISTS))
+    {
+        GtkActionGroup* action_group = midori_browser_get_action_group (browser);
+        GtkAction* action = gtk_action_group_get_action (action_group, "LastSession");
+        g_signal_connect (action, "activate",
+            G_CALLBACK (midori_browser_action_last_session_activate_cb), browser);
+        gtk_action_set_sensitive (action, TRUE);
+    }
     midori_app_add_browser (app, browser);
     gtk_widget_show (GTK_WIDGET (browser));
 
-    config_file = build_config_filename ("accels");
+    katze_assign (config_file, build_config_filename ("accels"));
     if (is_writable (config_file))
         g_signal_connect_after (gtk_accel_map_get (), "changed",
             G_CALLBACK (accel_map_changed_cb), NULL);
@@ -1571,8 +1634,8 @@ main (int    argc,
 
     #if ENABLE_NLS
     setlocale (LC_ALL, "");
-    if (g_getenv ("NLSPATH"))
-        bindtextdomain (GETTEXT_PACKAGE, g_getenv ("NLSPATH"));
+    if (g_getenv ("MIDORI_NLSPATH"))
+        bindtextdomain (GETTEXT_PACKAGE, g_getenv ("MIDORI_NLSPATH"));
     else
     #ifdef G_OS_WIN32
     {
@@ -1731,6 +1794,14 @@ main (int    argc,
         {
             /* TODO: Open a tab per URI, seperated by pipes */
             /* FIXME: Handle relative files or magic URI here */
+            /* Encode any IDN addresses because libUnique doesn't like them */
+            i = 0;
+            while (uris[i] != NULL)
+            {
+                gchar* new_uri = sokoke_uri_to_ascii (uris[i]);
+                katze_assign (uris[i], new_uri);
+                i++;
+            }
             result = midori_app_instance_send_uris (app, uris);
         }
         else
@@ -1777,7 +1848,7 @@ main (int    argc,
         search_engines = search_engines_new_from_file (config_file, NULL);
         #else
         katze_assign (config_file,
-            sokoke_find_config_filename ("search"));
+            sokoke_find_config_filename (NULL, "search"));
         search_engines = search_engines_new_from_file (config_file, NULL);
         #endif
     }
@@ -1798,7 +1869,7 @@ main (int    argc,
         if (error->code == G_FILE_ERROR_NOENT)
         {
             katze_assign (config_file,
-                sokoke_find_config_filename ("bookmarks.xbel"));
+                sokoke_find_config_filename (NULL, "bookmarks.xbel"));
             midori_array_from_file (bookmarks, config_file, "xbel", NULL);
         }
         else
index 4ea123b2c33fdc8aea2916fb43477f39c3276fce..7004bea1f5298f12c1df0e260a38dd788967adac 100644 (file)
@@ -364,8 +364,13 @@ katze_item_metadata_to_xbel (KatzeItem* item)
     i = 0;
     while ((key = g_list_nth_data (keys, i++)))
         if (katze_item_get_meta_string (item, key))
+        {
+            gchar* escaped =
+                g_markup_escape_text (katze_item_get_meta_string (item, key), -1);
             g_string_append_printf (markup, " %s:%s=\"%s\"", namespace, key,
-                katze_item_get_meta_string (item, key));
+                escaped);
+            g_free (escaped);
+        }
     g_string_append_printf (markup, "/>\n</info>\n");
     return g_string_free (markup, FALSE);
 }
index ac58f11fb2bb08df24d1375c38a9fdd031494b67..03ffd13585803ad684ec0f84034a41ece897c272 100644 (file)
@@ -160,7 +160,7 @@ midori_browser_get_property (GObject*    object,
 
 static void
 midori_browser_new_history_item (MidoriBrowser* browser,
-                                 KatzeItem*     item);
+                                 KatzeItem**    item);
 
 static void
 _midori_browser_set_toolbar_style (MidoriBrowser*     browser,
@@ -262,54 +262,48 @@ midori_browser_view_can_set_encoding (MidoriView* view)
 static void
 _midori_browser_update_interface (MidoriBrowser* browser)
 {
-    GtkWidget* view;
+    GtkWidget* widget;
+    MidoriView* view;
     gboolean loading;
     gboolean can_reload;
     GtkAction* action;
 
-    view = midori_browser_get_current_tab (browser);
-    loading = midori_view_get_load_status (MIDORI_VIEW (view))
-        != MIDORI_LOAD_FINISHED;
-    can_reload = midori_view_can_reload (MIDORI_VIEW (view));
+    widget = midori_browser_get_current_tab (browser);
+    view = MIDORI_VIEW (widget);
+    loading = midori_view_get_load_status (view) != MIDORI_LOAD_FINISHED;
+    can_reload = midori_view_can_reload (view);
 
     _action_set_sensitive (browser, "Reload", can_reload && !loading);
     _action_set_sensitive (browser, "Stop", can_reload && loading);
-    _action_set_sensitive (browser, "Back",
-        midori_view_can_go_back (MIDORI_VIEW (view)));
-    _action_set_sensitive (browser, "Forward",
-        midori_view_can_go_forward (MIDORI_VIEW (view)));
+    _action_set_sensitive (browser, "Back", midori_view_can_go_back (view));
+    _action_set_sensitive (browser, "Forward", midori_view_can_go_forward (view));
 
     gtk_action_set_visible (_action_by_name (browser, "AddSpeedDial"),
-        browser->speed_dial_in_new_tabs && !midori_view_is_blank (MIDORI_VIEW (view)));
+        browser->speed_dial_in_new_tabs && !midori_view_is_blank (view));
     /* Currently views that don't support source, don't support
        saving either. If that changes, we need to think of something. */
-    _action_set_sensitive (browser, "SaveAs",
-        midori_view_can_view_source (MIDORI_VIEW (view)));
-    _action_set_sensitive (browser, "Print",
-        midori_view_can_print (MIDORI_VIEW (view)));
-    _action_set_sensitive (browser, "ZoomIn",
-        midori_view_can_zoom_in (MIDORI_VIEW (view)));
-    _action_set_sensitive (browser, "ZoomOut",
-        midori_view_can_zoom_out (MIDORI_VIEW (view)));
+    _action_set_sensitive (browser, "SaveAs", midori_view_can_view_source (view));
+    _action_set_sensitive (browser, "Print", midori_view_can_print (view));
+    _action_set_sensitive (browser, "ZoomIn", midori_view_can_zoom_in (view));
+    _action_set_sensitive (browser, "ZoomOut", midori_view_can_zoom_out (view));
     _action_set_sensitive (browser, "ZoomNormal",
-        midori_view_get_zoom_level (MIDORI_VIEW (view)) != 1.0f);
+        midori_view_get_zoom_level (view) != 1.0f);
     _action_set_sensitive (browser, "Encoding",
-        midori_browser_view_can_set_encoding (MIDORI_VIEW (view)));
+        midori_browser_view_can_set_encoding (view));
     _action_set_sensitive (browser, "SourceView",
-        midori_view_can_view_source (MIDORI_VIEW (view)));
+        midori_view_can_view_source (view));
     _action_set_sensitive (browser, "Find",
-        midori_view_can_find (MIDORI_VIEW (view)));
+        midori_view_can_find (view));
     _action_set_sensitive (browser, "FindNext",
-        midori_view_can_find (MIDORI_VIEW (view)));
+        midori_view_can_find (view));
     _action_set_sensitive (browser, "FindPrevious",
-        midori_view_can_find (MIDORI_VIEW (view)));
+        midori_view_can_find (view));
     gtk_widget_set_sensitive (GTK_WIDGET (browser->find_highlight),
-        midori_view_can_find (MIDORI_VIEW (view)));
+        midori_view_can_find (view));
 
     action = gtk_action_group_get_action (browser->action_group, "ReloadStop");
     if (!loading)
     {
-        gtk_widget_set_sensitive (browser->throbber, FALSE);
         g_object_set (action,
                       "stock-id", GTK_STOCK_REFRESH,
                       "tooltip", _("Reload the current page"),
@@ -320,7 +314,6 @@ _midori_browser_update_interface (MidoriBrowser* browser)
     }
     else
     {
-        gtk_widget_set_sensitive (browser->throbber, TRUE);
         g_object_set (action,
                       "stock-id", GTK_STOCK_STOP,
                       "tooltip", _("Stop loading the current page"), NULL);
@@ -334,27 +327,49 @@ _midori_browser_update_interface (MidoriBrowser* browser)
         {
             action = _action_by_name (browser, "Location");
             midori_location_action_set_progress (MIDORI_LOCATION_ACTION (action),
-                midori_view_get_progress (MIDORI_VIEW (view)));
+                midori_view_get_progress (view));
         }
     }
+
+    #if HAVE_HILDON
+    #if HILDON_CHECK_VERSION (2, 2, 0)
+    hildon_gtk_window_set_progress_indicator (GTK_WINDOW (browser), loading);
+    #endif
+    #else
+    gtk_widget_set_sensitive (browser->throbber, loading);
     katze_throbber_set_animated (KATZE_THROBBER (browser->throbber), loading);
+    #endif
 
     action = _action_by_name (browser, "Location");
     if (g_object_get_data (G_OBJECT (view), "news-feeds"))
+    {
         midori_location_action_set_secondary_icon (
             MIDORI_LOCATION_ACTION (action), STOCK_NEWS_FEED);
+        #if HAVE_HILDON
+        gtk_action_set_sensitive (_action_by_name (browser, "AddNewsFeed"), TRUE);
+        #endif
+    }
     else
+    {
         midori_location_action_set_secondary_icon (
             MIDORI_LOCATION_ACTION (action), GTK_STOCK_JUMP_TO);
+        #if HAVE_HILDON
+        gtk_action_set_sensitive (_action_by_name (browser, "AddNewsFeed"), FALSE);
+        #endif
+    }
 }
 
 static void
 _midori_browser_set_statusbar_text (MidoriBrowser* browser,
                                     const gchar*   text)
 {
-    katze_assign (browser->statusbar_text, g_strdup (text));
+    GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
+    gboolean is_location = widget ?
+        MIDORI_IS_LOCATION_ENTRY (gtk_widget_get_parent (widget)) : FALSE;
+
+    katze_assign (browser->statusbar_text, sokoke_format_uri_for_display (text));
 
-    if (!GTK_WIDGET_VISIBLE (browser->statusbar))
+    if (!GTK_WIDGET_VISIBLE (browser->statusbar) && !is_location)
     {
         GtkAction* action = _action_by_name (browser, "Location");
         MidoriLocationAction* location_action = MIDORI_LOCATION_ACTION (action);
@@ -458,27 +473,26 @@ midori_view_notify_icon_cb (MidoriView*    view,
 }
 
 static void
-midori_view_notify_load_status_cb (GtkWidget*      view,
+midori_view_notify_load_status_cb (GtkWidget*      widget,
                                    GParamSpec*     pspec,
                                    MidoriBrowser*  browser)
 {
+    MidoriView* view = MIDORI_VIEW (widget);
     const gchar* uri;
     GtkAction* action;
 
-    uri = midori_view_get_display_uri (MIDORI_VIEW (view));
+    uri = midori_view_get_display_uri (view);
     action = _action_by_name (browser, "Location");
 
-    if (midori_view_get_load_status (MIDORI_VIEW (view))
-        == MIDORI_LOAD_COMMITTED)
+    if (midori_view_get_load_status (view) == MIDORI_LOAD_COMMITTED)
     {
         if (browser->remember_last_visited_pages)
             midori_location_action_add_uri (MIDORI_LOCATION_ACTION (action), uri);
     }
 
-    if (view == midori_browser_get_current_tab (browser))
+    if (widget == midori_browser_get_current_tab (browser))
     {
-        if (midori_view_get_load_status (MIDORI_VIEW (view))
-            == MIDORI_LOAD_COMMITTED)
+        if (midori_view_get_load_status (view) == MIDORI_LOAD_COMMITTED)
         {
             midori_location_action_set_uri (
                 MIDORI_LOCATION_ACTION (action), uri);
@@ -492,7 +506,7 @@ midori_view_notify_load_status_cb (GtkWidget*      view,
 
         /* This is a hack to ensure that the address entry is focussed
            with speed dial open. */
-        if (midori_view_is_blank (MIDORI_VIEW (view)))
+        if (midori_view_is_blank (view))
             gtk_action_activate (_action_by_name (browser, "Location"));
     }
 
@@ -531,22 +545,23 @@ midori_view_notify_uri_cb (GtkWidget*     view,
 }
 
 static void
-midori_view_notify_title_cb (GtkWidget*     view,
+midori_view_notify_title_cb (GtkWidget*     widget,
                              GParamSpec*    pspec,
                              MidoriBrowser* browser)
 {
+    MidoriView* view = MIDORI_VIEW (widget);
     const gchar* uri;
     const gchar* title;
     GtkAction* action;
     gchar* window_title;
 
-    uri = midori_view_get_display_uri (MIDORI_VIEW (view));
-    title = midori_view_get_display_title (MIDORI_VIEW (view));
+    uri = midori_view_get_display_uri (view);
+    title = midori_view_get_display_title (view);
     action = _action_by_name (browser, "Location");
     if (browser->remember_last_visited_pages)
         midori_location_action_set_title_for_uri (
         MIDORI_LOCATION_ACTION (action), title, uri);
-    if (midori_view_get_load_status (MIDORI_VIEW (view)) == MIDORI_LOAD_COMMITTED)
+    if (midori_view_get_load_status (view) == MIDORI_LOAD_COMMITTED)
     {
         KatzeItem* item;
         KatzeItem* proxy;
@@ -554,20 +569,21 @@ midori_view_notify_title_cb (GtkWidget*     view,
         if (browser->history && browser->remember_last_visited_pages)
         {
             item = g_object_get_data (G_OBJECT (view), "history-item-added");
-            proxy = midori_view_get_proxy_item (MIDORI_VIEW (view));
+            proxy = midori_view_get_proxy_item (view);
             if (item && katze_item_get_added (item) == katze_item_get_added (proxy))
                 katze_item_set_name (item, katze_item_get_name (proxy));
             else
             {
                 katze_object_assign (item, katze_item_copy (proxy));
-                midori_browser_new_history_item (browser, g_object_ref (item));
+                midori_browser_new_history_item (browser, &item);
+                g_object_ref (item);
                 g_object_set_data_full (G_OBJECT (view), "history-item-added",
                                         item, (GDestroyNotify)g_object_unref);
             }
         }
     }
 
-    if (view == midori_browser_get_current_tab (browser))
+    if (widget == midori_browser_get_current_tab (browser))
     {
         window_title = g_strconcat (title, " - ",
             g_get_application_name (), NULL);
@@ -587,13 +603,13 @@ midori_view_notify_zoom_level_cb (GtkWidget*     view,
 }
 
 static void
-midori_view_notify_statusbar_text_cb (MidoriView*    view,
+midori_view_notify_statusbar_text_cb (GtkWidget*     view,
                                       GParamSpec*    pspec,
                                       MidoriBrowser* browser)
 {
     gchar* text;
 
-    if ((GtkWidget*)view == midori_browser_get_current_tab (browser))
+    if (view == midori_browser_get_current_tab (browser))
     {
         g_object_get (view, "statusbar-text", &text, NULL);
         _midori_browser_set_statusbar_text (browser, text);
@@ -601,6 +617,17 @@ midori_view_notify_statusbar_text_cb (MidoriView*    view,
     }
 }
 
+static void
+midori_browser_edit_bookmark_uri_changed_cb (GtkEntry*      entry,
+                                             GtkDialog*     dialog)
+{
+    const gchar* uri = gtk_entry_get_text (entry);
+    gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_ACCEPT,
+        uri && (g_str_has_prefix (uri, "http://")
+        || g_str_has_prefix (uri, "https://")
+        || g_str_has_prefix (uri, "file://")));
+}
+
 /* Private function, used by MidoriBookmarks and MidoriHistory */
 /* static */ void
 midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
@@ -694,6 +721,10 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
         entry_uri = gtk_entry_new ();
         gtk_entry_set_activates_default (GTK_ENTRY (entry_uri), TRUE);
         gtk_entry_set_text (GTK_ENTRY (entry_uri), katze_item_get_uri (bookmark));
+        midori_browser_edit_bookmark_uri_changed_cb (GTK_ENTRY (entry_uri),
+                                                     GTK_DIALOG (dialog));
+        g_signal_connect (entry_uri, "changed",
+            G_CALLBACK (midori_browser_edit_bookmark_uri_changed_cb), dialog);
         gtk_box_pack_start (GTK_BOX (hbox), entry_uri, TRUE, TRUE, 0);
         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
         gtk_widget_show_all (hbox);
@@ -1532,13 +1563,11 @@ static void
 _midori_browser_add_tab (MidoriBrowser* browser,
                          GtkWidget*     view)
 {
+    GtkNotebook* notebook = GTK_NOTEBOOK (browser->notebook);
     GtkWidget* tab_label;
     KatzeItem* item;
     guint n;
 
-    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view),
-                                    GTK_POLICY_AUTOMATIC,
-                                    GTK_POLICY_AUTOMATIC);
     GTK_WIDGET_SET_FLAGS (view, GTK_CAN_FOCUS);
     gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (view),
                                          GTK_SHADOW_ETCHED_IN);
@@ -1596,18 +1625,14 @@ _midori_browser_add_tab (MidoriBrowser* browser,
         browser->settings &&
         katze_object_get_boolean (browser->settings, "open-tabs-next-to-current"))
     {
-        n = gtk_notebook_get_current_page (GTK_NOTEBOOK (browser->notebook));
-        gtk_notebook_insert_page (GTK_NOTEBOOK (browser->notebook), view,
-                                  tab_label, n + 1);
+        n = gtk_notebook_get_current_page (notebook);
+        gtk_notebook_insert_page (notebook, view, tab_label, n + 1);
     }
     else
-        gtk_notebook_append_page (GTK_NOTEBOOK (browser->notebook), view,
-                                  tab_label);
+        gtk_notebook_append_page (notebook, view, tab_label);
 
-    gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (browser->notebook),
-                                      view, TRUE);
-    gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (browser->notebook),
-                                     view, TRUE);
+    gtk_notebook_set_tab_reorderable (notebook, view, TRUE);
+    gtk_notebook_set_tab_detachable (notebook, view, TRUE);
 
     /* We want the tab to be removed if the widget is destroyed */
     g_signal_connect (view, "destroy",
@@ -2116,6 +2141,92 @@ _action_add_speed_dial_activate (GtkAction*     action,
     midori_browser_add_speed_dial (browser);
 }
 
+static void
+_action_add_desktop_shortcut_activate (GtkAction*     action,
+                                       MidoriBrowser* browser)
+{
+    #if defined (GDK_WINDOWING_X11)
+    /* TODO: Implement */
+    #elif defined(GDK_WINDOWING_QUARTZ)
+    /* TODO: Implement */
+    #elif defined (GDK_WINDOWING_WIN32)
+    /* TODO: Implement */
+    #elif HAVE_HILDON
+    /* TODO: Implement */
+    #endif
+}
+
+static void
+_action_add_news_feed_activate (GtkAction*     action,
+                                MidoriBrowser* browser)
+{
+    GtkWidget* view;
+    const gchar* uri;
+
+    if (!(view = midori_browser_get_current_tab (browser)))
+        return;
+    if (!(uri = g_object_get_data (G_OBJECT (view), "news-feeds")))
+        return;
+
+    if (browser->news_aggregator && *browser->news_aggregator)
+        sokoke_spawn_program (browser->news_aggregator, uri, TRUE);
+    else
+    {
+        GtkWidget* dialog = gtk_message_dialog_new (
+            GTK_WINDOW (browser), 0, GTK_MESSAGE_INFO,
+            GTK_BUTTONS_OK, "%s", _("New feed"));
+        gtk_message_dialog_format_secondary_text (
+            GTK_MESSAGE_DIALOG (dialog), "%s", uri);
+        gtk_widget_show (dialog);
+        g_signal_connect_swapped (dialog, "response",
+            G_CALLBACK (gtk_widget_destroy), dialog);
+    }
+}
+
+static void
+_action_compact_add_activate (GtkAction*     action,
+                              MidoriBrowser* browser)
+{
+    GtkStockItem item;
+    GtkWidget* dialog;
+    GtkBox* box;
+    gchar* label = NULL;
+    GtkWidget* button;
+
+    if (!GTK_WIDGET_VISIBLE (browser))
+        return;
+
+    gtk_stock_lookup (GTK_STOCK_ADD, &item);
+    dialog = g_object_new (GTK_TYPE_DIALOG,
+        "transient-for", browser, "title", item.label, NULL); /* Add a new bookmark */
+    box = GTK_BOX (GTK_DIALOG (dialog)->vbox);
+
+    action = _action_by_name (browser, "BookmarkAdd");
+    katze_assign (label, katze_object_get_string (action, "label"));
+    button = gtk_button_new_with_mnemonic (label);
+    gtk_box_pack_start (box, button, TRUE, TRUE, 4);
+    gtk_action_connect_proxy (action, button);
+    action = _action_by_name (browser, "AddSpeedDial");
+    katze_assign (label, katze_object_get_string (action, "label"));
+    button = gtk_button_new_with_mnemonic (label);
+    gtk_box_pack_start (box, button, TRUE, TRUE, 4);
+    gtk_action_connect_proxy (action, button);
+    action = _action_by_name (browser, "AddDesktopShortcut");
+    katze_assign (label, katze_object_get_string (action, "label"));
+    button = gtk_button_new_with_mnemonic (label);
+    gtk_box_pack_start (box, button, TRUE, TRUE, 4);
+    gtk_action_connect_proxy (action, button);
+    action = _action_by_name (browser, "AddNewsFeed");
+    katze_assign (label, katze_object_get_string (action, "label"));
+    button = gtk_button_new_with_mnemonic (label);
+    gtk_box_pack_start (box, button, TRUE, TRUE, 4);
+    gtk_action_connect_proxy (action, button);
+
+    g_free (label);
+
+    gtk_dialog_run (GTK_DIALOG (dialog));
+}
+
 static void
 _action_tab_close_activate (GtkAction*     action,
                             MidoriBrowser* browser)
@@ -2512,13 +2623,48 @@ midori_browser_toolbar_popup_context_menu_cb (GtkWidget*     widget,
     return TRUE;
 }
 
+static void
+midori_browser_menu_item_select_cb (GtkWidget*     menuitem,
+                                    MidoriBrowser* browser)
+{
+    GtkAction* action = gtk_widget_get_action (menuitem);
+    gchar* tooltip = action ? katze_object_get_string (action, "tooltip") : NULL;
+    if (!tooltip)
+    {
+        /* This is undocumented object data, used by KatzeArrayAction. */
+        KatzeItem* item = g_object_get_data (G_OBJECT (menuitem), "KatzeItem");
+        if (item)
+            tooltip = g_strdup (katze_item_get_uri (item));
+    }
+    _midori_browser_set_statusbar_text (browser, tooltip);
+    g_free (tooltip);
+}
+
+static void
+midori_browser_menu_item_deselect_cb (GtkWidget*     menuitem,
+                                      MidoriBrowser* browser)
+{
+    _midori_browser_set_statusbar_text (browser, NULL);
+}
+
 static void
 _action_trash_populate_popup (GtkAction*     action,
                               GtkMenu*       menu,
                               MidoriBrowser* browser)
 {
+    GList* children = gtk_container_get_children (GTK_CONTAINER (menu));
+    guint i = 0;
     GtkWidget* menuitem;
 
+    while ((menuitem = g_list_nth_data (children, i++)))
+    {
+        g_signal_connect (menuitem, "select",
+            G_CALLBACK (midori_browser_menu_item_select_cb), browser);
+        g_signal_connect (menuitem, "deselect",
+            G_CALLBACK (midori_browser_menu_item_deselect_cb), browser);
+    }
+    g_list_free (children);
+
     menuitem = gtk_separator_menu_item_new ();
     gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
     gtk_widget_show (menuitem);
@@ -2566,7 +2712,18 @@ _action_history_populate_popup (GtkAction*     action,
                                 GtkMenu*       menu,
                                 MidoriBrowser* browser)
 {
-    /* Nothing to do */
+    GList* children = gtk_container_get_children (GTK_CONTAINER (menu));
+    guint i = 0;
+    GtkWidget* menuitem;
+
+    while ((menuitem = g_list_nth_data (children, i++)))
+    {
+        g_signal_connect (menuitem, "select",
+            G_CALLBACK (midori_browser_menu_item_select_cb), browser);
+        g_signal_connect (menuitem, "deselect",
+            G_CALLBACK (midori_browser_menu_item_deselect_cb), browser);
+    }
+    g_list_free (children);
 }
 
 static void
@@ -2582,8 +2739,19 @@ _action_bookmarks_populate_popup (GtkAction*     action,
                                   GtkMenu*       menu,
                                   MidoriBrowser* browser)
 {
+    GList* children = gtk_container_get_children (GTK_CONTAINER (menu));
+    guint i = 0;
     GtkWidget* menuitem;
 
+    while ((menuitem = g_list_nth_data (children, i++)))
+    {
+        g_signal_connect (menuitem, "select",
+            G_CALLBACK (midori_browser_menu_item_select_cb), browser);
+        g_signal_connect (menuitem, "deselect",
+            G_CALLBACK (midori_browser_menu_item_deselect_cb), browser);
+    }
+    g_list_free (children);
+
     if (katze_array_get_nth_item (browser->bookmarks, 0))
     {
         menuitem = gtk_separator_menu_item_new ();
@@ -2684,7 +2852,28 @@ _action_window_populate_popup (GtkAction*     action,
                                GtkMenu*       menu,
                                MidoriBrowser* browser)
 {
-    GtkWidget* menuitem = gtk_separator_menu_item_new ();
+    GList* children = gtk_container_get_children (GTK_CONTAINER (menu));
+    guint i = 0;
+    GtkWidget* menuitem;
+
+    while ((menuitem = g_list_nth_data (children, i++)))
+    {
+        g_signal_connect (menuitem, "select",
+            G_CALLBACK (midori_browser_menu_item_select_cb), browser);
+        g_signal_connect (menuitem, "deselect",
+            G_CALLBACK (midori_browser_menu_item_deselect_cb), browser);
+    }
+    g_list_free (children);
+
+    menuitem = gtk_separator_menu_item_new ();
+    gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
+    gtk_widget_show (menuitem);
+    menuitem = gtk_action_create_menu_item (
+        _action_by_name (browser, "LastSession"));
+    gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
+    gtk_widget_show (menuitem);
+    menuitem = gtk_action_create_menu_item (
+        _action_by_name (browser, "TabCurrent"));
     gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
     gtk_widget_show (menuitem);
     menuitem = gtk_action_create_menu_item (
@@ -2716,13 +2905,18 @@ _action_window_activate_item (GtkAction*     action,
 
 static void
 _action_compact_menu_populate_popup (GtkAction*     action,
-                                     GtkMenu*       menu,
+                                     GtkWidget*     menu,
                                      MidoriBrowser* browser)
 {
     static const GtkActionEntry actions[] = {
       { "TabNew" },
       { "WindowNew" },
       { "Open" },
+      #if HAVE_HILDON
+      { "Find" },
+      { "Homepage" },
+      { "ManageSearchEngines" },
+      #else
       { "Print" },
       { "PrivateBrowsing" },
       { NULL },
@@ -2731,14 +2925,39 @@ _action_compact_menu_populate_popup (GtkAction*     action,
       { "Statusbar" },
       { NULL },
       { "-" },
+      #endif
       { "ClearPrivateData" },
+      #if !HAVE_HILDON
       { "Fullscreen" },
+      #endif
       { "Preferences" },
     };
     guint i;
 
     for (i = 0; i < G_N_ELEMENTS (actions); i++)
     {
+        #if HAVE_HILDON
+        #if HILDON_CHECK_VERSION (2, 2, 0)
+        #define HAVE_APP_MENU 1
+        #endif
+        #endif
+        #ifdef HAVE_APP_MENU
+        GtkAction* _action;
+        gchar* label;
+        GtkWidget* button;
+
+        if (!actions[i].name)
+            continue;
+        _action = _action_by_name (browser, actions[i].name);
+        label = katze_object_get_string (_action, "label");
+        button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
+        gtk_widget_show (button);
+        gtk_button_set_label (GTK_BUTTON (button), label);
+        g_free (label);
+        g_signal_connect_swapped (button, "clicked",
+            G_CALLBACK (gtk_action_activate), _action);
+        hildon_app_menu_append (HILDON_APP_MENU (menu), GTK_BUTTON (button));
+        #else
         GtkWidget* menuitem;
         if (actions[i].name != NULL)
         {
@@ -2754,6 +2973,7 @@ _action_compact_menu_populate_popup (GtkAction*     action,
             menuitem = gtk_separator_menu_item_new ();
         gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
         gtk_widget_show (menuitem);
+        #endif
     }
 }
 
@@ -2831,6 +3051,11 @@ _action_menubar_activate (GtkToggleAction* action,
             _midori_browser_save_toolbar_items (browser);
         }
     }
+
+    g_object_set_data (G_OBJECT (browser), "midori-toolbars-visible",
+        GTK_WIDGET_VISIBLE (browser->menubar)
+        || GTK_WIDGET_VISIBLE (browser->navigationbar)
+        ? (void*)0xdeadbeef : NULL);
     #endif
 }
 
@@ -2842,6 +3067,11 @@ _action_navigationbar_activate (GtkToggleAction* action,
     if (browser->settings)
         g_object_set (browser->settings, "show-navigationbar", active, NULL);
     sokoke_widget_set_visible (browser->navigationbar, active);
+
+    g_object_set_data (G_OBJECT (browser), "midori-toolbars-visible",
+        GTK_WIDGET_VISIBLE (browser->menubar)
+        || GTK_WIDGET_VISIBLE (browser->navigationbar)
+        ? (void*)0xdeadbeef : NULL);
 }
 
 static void
@@ -3070,10 +3300,23 @@ _action_source_view_activate (GtkAction*     action,
         text_editor = NULL;
     uri = midori_view_get_display_uri (MIDORI_VIEW (view));
 
-    if (!g_strcmp0 (text_editor, ""))
+    if (!(text_editor && *text_editor))
     {
-        GFile* file = g_file_new_for_uri (uri);
+        #if WEBKIT_CHECK_VERSION (1, 1, 14)
+        GtkWidget* source;
+        GtkWidget* web_view;
 
+        source = midori_view_new (browser->net);
+        midori_view_set_settings (MIDORI_VIEW (source), browser->settings);
+        midori_view_set_uri (MIDORI_VIEW (source), "");
+        web_view = gtk_bin_get_child (GTK_BIN (source));
+        webkit_web_view_set_view_source_mode (WEBKIT_WEB_VIEW (web_view), TRUE);
+        webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), uri);
+        gtk_widget_show (source);
+        midori_browser_add_tab (browser, source);
+        return;
+        #else
+        GFile* file = g_file_new_for_uri (uri);
         gchar* content_type;
         GAppInfo* app_info;
         GList* files;
@@ -3104,8 +3347,16 @@ _action_source_view_activate (GtkAction*     action,
             g_free (text_editor);
             return;
         }
+        #endif
     }
 
+    if (g_str_has_prefix (uri, "file://"))
+    {
+        gchar* filename = g_filename_from_uri (uri, NULL, NULL);
+        sokoke_spawn_program (text_editor, filename, TRUE);
+        g_free (filename);
+        return;
+    }
     katze_net_load_uri (browser->net, uri, NULL,
         (KatzeNetTransferCb)midori_browser_source_transfer_cb, browser);
     g_free (text_editor);
@@ -3289,21 +3540,7 @@ _action_location_secondary_icon_released (GtkAction*     action,
         if (gtk_window_get_focus (GTK_WINDOW (browser)) == widget)
             _action_location_submit_uri (action, uri, FALSE, browser);
         else if ((uri = g_object_get_data (G_OBJECT (view), "news-feeds")))
-        {
-            if (browser->news_aggregator && *browser->news_aggregator)
-                sokoke_spawn_program (browser->news_aggregator, uri, TRUE);
-            else
-            {
-                GtkWidget* dialog = gtk_message_dialog_new (
-                    GTK_WINDOW (browser), 0, GTK_MESSAGE_INFO,
-                    GTK_BUTTONS_OK, "%s", _("New feed"));
-                    gtk_message_dialog_format_secondary_text (
-                        GTK_MESSAGE_DIALOG (dialog), "%s", uri);
-                 gtk_widget_show (dialog);
-                 g_signal_connect_swapped (dialog, "response",
-                     G_CALLBACK (gtk_widget_destroy), dialog);
-            }
-        }
+            _action_add_news_feed_activate (action, browser);
         else
             _action_location_submit_uri (action, uri, FALSE, browser);
         return TRUE;
@@ -3966,6 +4203,15 @@ _action_tab_next_activate (GtkAction*     action,
     gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), n + 1);
 }
 
+static void
+_action_tab_current_activate (GtkAction*     action,
+                              MidoriBrowser* browser)
+{
+    GtkWidget* view = midori_browser_get_current_tab (browser);
+    GtkWidget* child = gtk_bin_get_child (GTK_BIN (view));
+    gtk_widget_grab_focus (child ? child : view);
+}
+
 static const gchar* credits_authors[] = {
     "Christian Dywan <christian@twotoasts.de>", NULL };
 static const gchar* credits_documenters[] = {
@@ -4186,22 +4432,45 @@ gtk_notebook_switch_page_cb (GtkWidget*       notebook,
                              guint            page_num,
                              MidoriBrowser*   browser)
 {
-    GtkWidget* view;
+    GtkWidget* widget;
+    GtkAction* action;
+    const gchar* text;
+
+    if (!(widget = midori_browser_get_current_tab (browser)))
+        return;
+
+    action = _action_by_name (browser, "Location");
+    text = midori_location_action_get_text (MIDORI_LOCATION_ACTION (action));
+    g_object_set_data_full (G_OBJECT (widget), "midori-browser-typed-text",
+                            g_strdup (text), g_free);
+}
+
+static void
+gtk_notebook_switch_page_after_cb (GtkWidget*       notebook,
+                                   GtkNotebookPage* page,
+                                   guint            page_num,
+                                   MidoriBrowser*   browser)
+{
+    GtkWidget* widget;
+    MidoriView* view;
     const gchar* uri;
     GtkAction* action;
     const gchar* title;
     gchar* window_title;
 
-    if (!(view = midori_browser_get_current_tab (browser)))
+    if (!(widget = midori_browser_get_current_tab (browser)))
         return;
 
-    uri = midori_view_get_display_uri (MIDORI_VIEW (view));
+    view = MIDORI_VIEW (widget);
+    uri = g_object_get_data (G_OBJECT (widget), "midori-browser-typed-text");
+    if (!uri)
+        uri = midori_view_get_display_uri (view);
     action = _action_by_name (browser, "Location");
-    midori_location_action_set_uri (MIDORI_LOCATION_ACTION (action), uri);
+    midori_location_action_set_text (MIDORI_LOCATION_ACTION (action), uri);
     midori_location_action_set_icon (MIDORI_LOCATION_ACTION (action),
-        midori_view_get_icon (MIDORI_VIEW (view)));
+                                     midori_view_get_icon (view));
 
-    title = midori_view_get_display_title (MIDORI_VIEW (view));
+    title = midori_view_get_display_title (view);
     window_title = g_strconcat (title, " - ", g_get_application_name (), NULL);
     gtk_window_set_title (GTK_WINDOW (browser), window_title);
     g_free (window_title);
@@ -4209,11 +4478,14 @@ gtk_notebook_switch_page_cb (GtkWidget*       notebook,
     if (browser->proxy_array)
         katze_item_set_meta_integer (KATZE_ITEM (browser->proxy_array), "current",
                                      midori_browser_get_current_page (browser));
+    g_object_freeze_notify (G_OBJECT (browser));
     g_object_notify (G_OBJECT (browser), "uri");
+    g_object_notify (G_OBJECT (browser), "tab");
+    g_object_thaw_notify (G_OBJECT (browser));
 
     _midori_browser_set_statusbar_text (browser, NULL);
     _midori_browser_update_interface (browser);
-    _midori_browser_update_progress (browser, MIDORI_VIEW (view));
+    _midori_browser_update_progress (browser, view);
 }
 
 static void
@@ -4225,7 +4497,10 @@ midori_browser_notebook_page_reordered_cb (GtkNotebook*   notebook,
     KatzeItem* item = midori_view_get_proxy_item (view);
     katze_array_move_item (browser->proxy_array, item, page_num);
 
+    g_object_freeze_notify (G_OBJECT (browser));
     g_object_notify (G_OBJECT (browser), "uri");
+    g_object_notify (G_OBJECT (browser), "tab");
+    g_object_thaw_notify (G_OBJECT (browser));
 }
 
 static gboolean
@@ -4311,6 +4586,15 @@ static const GtkActionEntry entries[] = {
  { "AddSpeedDial", NULL,
    N_("Add to Speed _dial"), "<Ctrl>h",
    N_("Add shortcut to speed dial"), G_CALLBACK (_action_add_speed_dial_activate) },
+ { "AddDesktopShortcut", NULL,
+   N_("Add Shortcut to the _desktop"), "<Ctrl>h",
+   N_("Add shortcut to the desktop"), G_CALLBACK (_action_add_desktop_shortcut_activate) },
+ { "AddNewsFeed", NULL,
+   N_("Subscribe to News _feed"), NULL,
+   N_("Subscribe to this news feed"), G_CALLBACK (_action_add_news_feed_activate) },
+ { "CompactAdd", GTK_STOCK_ADD,
+  NULL, NULL,
+  NULL, G_CALLBACK (_action_compact_add_activate) },
  { "TabClose", GTK_STOCK_CLOSE,
    N_("_Close Tab"), "<Ctrl>w",
    N_("Close the current tab"), G_CALLBACK (_action_tab_close_activate) },
@@ -4387,7 +4671,7 @@ static const GtkActionEntry entries[] = {
    N_("Reset the zoom level"), G_CALLBACK (_action_zoom_normal_activate) },
  { "Encoding", NULL, N_("_Encoding") },
  { "SourceView", NULL,
-   N_("View So_urce"), "<Ctrl>U",
+   N_("View So_urce"), "<Ctrl><Alt>U",
    N_("View the source code of the page"), G_CALLBACK (_action_source_view_activate) },
  { "SelectionSourceView", NULL,
     N_("View Selection Source"), "",
@@ -4435,6 +4719,12 @@ static const GtkActionEntry entries[] = {
  { "TabNext", GTK_STOCK_GO_FORWARD,
    N_("_Next Tab"), "<Ctrl>Page_Down",
    N_("Switch to the next tab"), G_CALLBACK (_action_tab_next_activate) },
+ { "TabCurrent", NULL,
+   N_("Focus _Current Tab"), "<Ctrl>Home",
+   N_("Focus the current tab"), G_CALLBACK (_action_tab_current_activate) },
+ { "LastSession", NULL,
+   N_("Open last _session"), NULL,
+   N_("Open the tabs saved in the last session"), NULL },
 
  { "Help", NULL, N_("_Help") },
  { "HelpContents", GTK_STOCK_HELP,
@@ -4613,6 +4903,7 @@ static const gchar* ui_markup =
     "<separator/>"
     "<menuitem action='SaveAs'/>"
     "<menuitem action='AddSpeedDial'/>"
+    "<menuitem action='AddDesktopShortcut'/>"
     "<separator/>"
     "<menuitem action='TabClose'/>"
     "<menuitem action='WindowClose'/>"
@@ -4700,6 +4991,8 @@ static const gchar* ui_markup =
     "<menuitem action='ClearPrivateData'/>"
     "<menuitem action='TabPrevious'/>"
     "<menuitem action='TabNext'/>"
+    "<menuitem action='TabCurrent'/>"
+    "<menuitem action='LastSession'/>"
     "<menuitem action='UndoTabClose'/>"
     "<menuitem action='TrashEmpty'/>"
     "<menuitem action='Preferences'/>"
@@ -4739,31 +5032,33 @@ midori_browser_entry_clear_icon_released_cb (GtkIconEntry* entry,
 
 static void
 midori_browser_new_history_item (MidoriBrowser* browser,
-                                 KatzeItem*     item)
+                                 KatzeItem**    item)
 {
     KatzeArray* parent;
     gint i;
     gboolean found;
     time_t now;
     gint64 day;
-    gint64 pday;
-    gint64 newage;
     gchar token[50];
 
     now = time (NULL);
-    katze_item_set_added (item, now);
+    katze_item_set_added (*item, now);
     day = sokoke_time_t_to_julian (&now);
 
     found = FALSE;
     i = 0;
     while ((parent = katze_array_get_nth_item (browser->history, i++)))
     {
-        pday = katze_item_get_added (KATZE_ITEM (parent));
-        newage = day - pday;
-        if (newage == 0)
+        gint64 pday = katze_item_get_added (KATZE_ITEM (parent));
+        if (day - pday == 0)
         {
+            KatzeItem* _item;
+
             found = TRUE;
-            katze_array_add_item (parent, item);
+            if ((_item = katze_array_find_uri (parent, katze_item_get_uri (*item))))
+                *item = g_object_ref (_item);
+            else
+                katze_array_add_item (parent, *item);
         }
     }
     if (!found)
@@ -4773,7 +5068,7 @@ midori_browser_new_history_item (MidoriBrowser* browser,
         katze_item_set_added (KATZE_ITEM (parent), day);
         katze_item_set_name (KATZE_ITEM (parent), token);
         katze_array_add_item (browser->history, parent);
-        katze_array_add_item (parent, item);
+        katze_array_add_item (parent, *item);
     }
 }
 
@@ -4865,6 +5160,36 @@ midori_browser_accel_switch_tab_activate_cb (GtkAccelGroup*  accel_group,
     }
 }
 
+static void
+midori_browser_ui_manager_connect_proxy_cb (GtkUIManager*  ui_manager,
+                                            GtkAction*     action,
+                                            GtkWidget*     proxy,
+                                            MidoriBrowser* browser)
+{
+    if (GTK_IS_MENU_ITEM (proxy))
+    {
+        g_signal_connect (proxy, "select",
+            G_CALLBACK (midori_browser_menu_item_select_cb), browser);
+        g_signal_connect (proxy, "deselect",
+            G_CALLBACK (midori_browser_menu_item_deselect_cb), browser);
+    }
+}
+
+static void
+midori_browser_ui_manager_disconnect_proxy_cb (GtkUIManager*  ui_manager,
+                                               GtkAction*     action,
+                                               GtkWidget*     proxy,
+                                               MidoriBrowser* browser)
+{
+    if (GTK_IS_MENU_ITEM (proxy))
+    {
+        g_signal_handlers_disconnect_by_func (proxy,
+            midori_browser_menu_item_select_cb, browser);
+        g_signal_handlers_disconnect_by_func (proxy,
+            midori_browser_menu_item_deselect_cb, browser);
+    }
+}
+
 static void
 midori_browser_init (MidoriBrowser* browser)
 {
@@ -4874,14 +5199,12 @@ midori_browser_init (MidoriBrowser* browser)
     guint i;
     GError* error;
     GtkAction* action;
+    #if !HAVE_HILDON
     GtkWidget* menuitem;
+    #endif
     GtkWidget* homepage;
     GtkWidget* back;
     GtkWidget* forward;
-    #if HAVE_HILDON
-    GtkWidget* menu;
-    GList* children;
-    #endif
     GtkSettings* gtk_settings;
     GtkWidget* hpaned;
     GtkWidget* vpaned;
@@ -4925,6 +5248,10 @@ midori_browser_init (MidoriBrowser* browser)
         encoding_entries, encoding_entries_n, 0,
         G_CALLBACK (_action_view_encoding_activate), browser);
     ui_manager = gtk_ui_manager_new ();
+    g_signal_connect (ui_manager, "connect-proxy",
+        G_CALLBACK (midori_browser_ui_manager_connect_proxy_cb), browser);
+    g_signal_connect (ui_manager, "disconnect-proxy",
+        G_CALLBACK (midori_browser_ui_manager_disconnect_proxy_cb), browser);
     gtk_ui_manager_insert_action_group (ui_manager, browser->action_group, 0);
     accel_group = gtk_ui_manager_get_accel_group (ui_manager);
     gtk_window_add_accel_group (GTK_WINDOW (browser), accel_group);
@@ -5100,36 +5427,34 @@ midori_browser_init (MidoriBrowser* browser)
     g_object_unref (action);
 
     /* Create the menubar */
-    browser->menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
     #if HAVE_HILDON
-    menu = gtk_menu_new ();
-    children = gtk_container_get_children (GTK_CONTAINER (browser->menubar));
-    while (children)
-    {
-        menuitem = GTK_WIDGET (children->data);
-        gtk_widget_reparent (menuitem, menu);
-        children = g_list_next (children);
-    }
-    browser->menubar = menu;
+    #if HILDON_CHECK_VERSION (2, 2, 0)
+    browser->menubar = hildon_app_menu_new ();
+    _action_compact_menu_populate_popup (NULL, browser->menubar, browser);
+    hildon_window_set_app_menu (HILDON_WINDOW (browser), HILDON_APP_MENU (browser->menubar));
+    #else
+    browser->menubar = gtk_menu_new ();
+    _action_compact_menu_populate_popup (NULL, browser->menubar, browser);
     hildon_window_set_menu (HILDON_WINDOW (browser), GTK_MENU (browser->menubar));
+    #endif
     hildon_program_add_window (hildon_program_get_instance (),
                                HILDON_WINDOW (browser));
     #else
+    browser->menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
     gtk_box_pack_start (GTK_BOX (vbox), browser->menubar, FALSE, FALSE, 0);
     gtk_widget_hide (browser->menubar);
     g_signal_connect (browser->menubar, "button-press-event",
         G_CALLBACK (midori_browser_menu_button_press_event_cb), browser);
-    #endif
+
     menuitem = gtk_menu_item_new ();
-    #if !HAVE_HILDON
     gtk_widget_show (menuitem);
-    #endif
     browser->throbber = katze_throbber_new ();
     gtk_widget_show (browser->throbber);
     gtk_container_add (GTK_CONTAINER (menuitem), browser->throbber);
     gtk_widget_set_sensitive (menuitem, FALSE);
     gtk_menu_item_set_right_justified (GTK_MENU_ITEM (menuitem), TRUE);
     gtk_menu_shell_append (GTK_MENU_SHELL (browser->menubar), menuitem);
+    #endif
     browser->menu_tools = gtk_menu_new ();
 
     gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (
@@ -5158,6 +5483,9 @@ midori_browser_init (MidoriBrowser* browser)
     #endif
     _action_set_sensitive (browser, "EncodingCustom", FALSE);
     _action_set_sensitive (browser, "SelectionSourceView", FALSE);
+    _action_set_sensitive (browser, "LastSession", FALSE);
+    /* FIXME: Enable once implemented */
+    _action_set_sensitive (browser, "AddDesktopShortcut", FALSE);
 
     /* Create the navigationbar */
     browser->navigationbar = gtk_ui_manager_get_widget (
@@ -5237,8 +5565,11 @@ midori_browser_init (MidoriBrowser* browser)
     g_object_unref (rcstyle);
     gtk_notebook_set_scrollable (GTK_NOTEBOOK (browser->notebook), TRUE);
     gtk_paned_pack2 (GTK_PANED (vpaned), browser->notebook, FALSE, FALSE);
+    g_signal_connect (browser->notebook, "switch-page",
+                      G_CALLBACK (gtk_notebook_switch_page_cb),
+                      browser);
     g_signal_connect_after (browser->notebook, "switch-page",
-                            G_CALLBACK (gtk_notebook_switch_page_cb),
+                            G_CALLBACK (gtk_notebook_switch_page_after_cb),
                             browser);
     g_signal_connect (browser->notebook, "page-reordered",
                       G_CALLBACK (midori_browser_notebook_page_reordered_cb),
@@ -5484,7 +5815,7 @@ _midori_browser_set_toolbar_items (MidoriBrowser* browser,
     GtkWidget* toolitem;
 
     #if HAVE_HILDON
-    items = "Bookmarks,Window,Back,Forward,ReloadStop,Location,Panel,Trash";
+    items = "Bookmarks,CompactAdd,ReloadStop,Location,Back,Fullscreen";
     #endif
 
     gtk_container_foreach (GTK_CONTAINER (browser->navigationbar),
@@ -5794,7 +6125,7 @@ midori_browser_set_bookmarks (MidoriBrowser* browser,
         g_signal_handlers_disconnect_by_func (
             browser->bookmarks, browser_bookmarks_add_item_cb, browser->bookmarkbar);
         g_signal_handlers_disconnect_by_func (
-            browser->bookmarks, browser_bookmarks_remove_item_cb, browser->bookmarkbar);
+            browser->bookmarks, browser_bookmarks_remove_item_cb, browser);
     }
 
     if (bookmarks)
@@ -6225,12 +6556,15 @@ midori_browser_set_current_page (MidoriBrowser* browser,
                                  gint           n)
 {
     GtkWidget* view;
+    GtkWidget* web_view;
 
     gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), n);
     view = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), n);
     if (view && midori_view_is_blank (MIDORI_VIEW (view)))
         gtk_action_activate (_action_by_name (browser, "Location"));
-    else if (view)
+    else if ((web_view = gtk_bin_get_child (GTK_BIN (view))))
+        gtk_widget_grab_focus (web_view);
+    else
         gtk_widget_grab_focus (view);
 }
 
@@ -6288,6 +6622,7 @@ midori_browser_set_current_tab (MidoriBrowser* browser,
                                 GtkWidget*     view)
 {
     gint n;
+    GtkWidget* web_view;
 
     g_return_if_fail (MIDORI_IS_BROWSER (browser));
     g_return_if_fail (GTK_IS_WIDGET (view));
@@ -6296,6 +6631,8 @@ midori_browser_set_current_tab (MidoriBrowser* browser,
     gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), n);
     if (view && midori_view_is_blank (MIDORI_VIEW (view)))
         gtk_action_activate (_action_by_name (browser, "Location"));
+    else if ((web_view = gtk_bin_get_child (GTK_BIN (view))))
+        gtk_widget_grab_focus (web_view);
     else
         gtk_widget_grab_focus (view);
 }
index ece419fdda65108262acf930fac41284286912a8..9eceea8b2d776291140b3a246af79d5a98aa0d74 100644 (file)
@@ -272,11 +272,22 @@ midori_extension_activate_cb (MidoriExtension* extension,
         if (!g_key_file_load_from_file (extension->priv->key_file, config_file,
                                         G_KEY_FILE_KEEP_COMMENTS, &error))
         {
-            if (error->code != G_FILE_ERROR_NOENT)
+            if (error->code == G_FILE_ERROR_NOENT)
+            {
+                gchar* filename = g_object_get_data (G_OBJECT (extension), "filename");
+                gchar* folder = g_strconcat ("extensions/", filename, NULL);
+                katze_assign (config_file,
+                    sokoke_find_config_filename (folder, "config"));
+                g_free (folder);
+                g_key_file_load_from_file (extension->priv->key_file, config_file,
+                                           G_KEY_FILE_KEEP_COMMENTS, NULL);
+            }
+            else
                 printf (_("The configuration of the extension '%s' couldn't be loaded: %s\n"),
                         extension->priv->name, error->message);
             g_error_free (error);
         }
+        g_free (config_file);
     }
 
     while (lsettings)
index 0270f9c31afb7d68e0b8d804f4b801bd15fa2595..60e36cff5959d0e8eac08870921b6879388f7b9e 100644 (file)
@@ -26,6 +26,7 @@ struct _MidoriLocationAction
 {
     GtkAction parent_instance;
 
+    gchar* text;
     gchar* uri;
     KatzeArray* search_engines;
     gdouble progress;
@@ -352,7 +353,7 @@ midori_location_action_create_model (void)
 static void
 midori_location_action_init (MidoriLocationAction* location_action)
 {
-    location_action->uri = NULL;
+    location_action->text = location_action->uri = NULL;
     location_action->search_engines = NULL;
     location_action->progress = 0.0;
     location_action->secondary_icon = NULL;
@@ -374,6 +375,7 @@ midori_location_action_finalize (GObject* object)
 {
     MidoriLocationAction* location_action = MIDORI_LOCATION_ACTION (object);
 
+    katze_assign (location_action->text, NULL);
     katze_assign (location_action->uri, NULL);
     katze_assign (location_action->search_engines, NULL);
 
@@ -551,8 +553,15 @@ midori_location_action_create_tool_item (GtkAction* action)
     return toolitem;
 }
 
+static void
+midori_location_action_changed_cb (GtkEntry*             entry,
+                                   MidoriLocationAction* location_action)
+{
+    katze_assign (location_action->text, g_strdup (gtk_entry_get_text (entry)));
+}
+
 static gboolean
-midori_location_action_key_press_event_cb (GtkWidget*   widget,
+midori_location_action_key_press_event_cb (GtkEntry*    entry,
                                            GdkEventKey* event,
                                            GtkAction*   action)
 {
@@ -564,7 +573,7 @@ midori_location_action_key_press_event_cb (GtkWidget*   widget,
     case GDK_KP_Enter:
     case GDK_Return:
     {
-        if ((uri = gtk_entry_get_text (GTK_ENTRY (widget))) && *uri)
+        if ((uri = gtk_entry_get_text (entry)) && *uri)
         {
             g_signal_emit (action, signals[SUBMIT_URI], 0, uri,
                 (event->state & GDK_MOD1_MASK) ? TRUE : FALSE);
@@ -582,8 +591,8 @@ midori_location_action_key_press_event_cb (GtkWidget*   widget,
 
 static gboolean
 midori_location_action_focus_in_event_cb (GtkWidget*   widget,
-                                           GdkEventKey* event,
-                                           GtkAction*   action)
+                                          GdkEventKey* event,
+                                          GtkAction*   action)
 {
     g_signal_emit (action, signals[FOCUS_IN], 0);
     return FALSE;
@@ -733,10 +742,11 @@ midori_location_entry_completion_match_cb (GtkEntryCompletion* completion,
             temp = g_utf8_casefold (title, -1);
             match = (strstr (temp, key) != NULL);
             g_free (temp);
-            g_free (title);
         }
     }
 
+    g_free (title);
+
     return match;
 }
 
@@ -825,42 +835,52 @@ midori_location_action_iter_insert (MidoriLocationAction* location_action,
 }
 
 static void
-midori_location_action_set_item (MidoriLocationAction*    location_action,
-                                 MidoriLocationEntryItem* item,
-                                 gboolean                 increment_visits,
-                                 gboolean                 filter)
+midori_location_action_set_item (MidoriLocationAction* location_action,
+                                 GdkPixbuf*            icon,
+                                 const gchar*          uri,
+                                 const gchar*          title,
+                                 gboolean              increment_visits,
+                                 gboolean              filter)
 {
     GtkTreeModel* model;
     GtkTreeModel* filter_model;
     GtkTreeIter iter;
-    GdkPixbuf* icon;
     GdkPixbuf* new_icon;
     gint visits = 0;
+    gchar* _title = NULL;
+    GdkPixbuf* original_icon = NULL;
 
     model = location_action->model;
 
-    if (midori_location_action_iter_insert (location_action,
-        item->uri, &iter, G_MAXINT))
+    if (midori_location_action_iter_insert (location_action, uri, &iter, G_MAXINT))
         gtk_tree_model_get (model, &iter, VISITS_COL, &visits, -1);
 
+    gtk_tree_model_get (model, &iter, FAVICON_COL, &original_icon, -1);
+
     if (increment_visits)
         gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                             VISITS_COL, ++visits, VISIBLE_COL, TRUE, -1);
 
     /* Ensure we keep the title if we added the same URI with a title before */
-    if (!item->title)
-        gtk_tree_model_get (model, &iter, TITLE_COL, &item->title, -1);
+    if (!title)
+    {
+        gtk_tree_model_get (model, &iter, TITLE_COL, &_title, -1);
+        title = _title;
+    }
 
     gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-        URI_COL, item->uri, TITLE_COL, item->title, YALIGN_COL, 0.25, -1);
+        URI_COL, uri, TITLE_COL, title, YALIGN_COL, 0.25, -1);
+    g_free (_title);
 
-    gtk_tree_model_get (model, &iter, FAVICON_COL, &icon, -1);
-    if (item->favicon)
-        new_icon = item->favicon;
-    else if (!icon)
-        new_icon = location_action->default_icon;
-    else
+    if (icon)
+        new_icon = icon;
+    else if (original_icon)
+    {
         new_icon = NULL;
+        g_object_unref (original_icon);
+    }
+    else
+        new_icon = location_action->default_icon;
     if (new_icon)
         gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                             FAVICON_COL, new_icon, -1);
@@ -896,7 +916,7 @@ midori_location_entry_match_selected_cb (GtkEntryCompletion*   completion,
     gchar* uri;
     gtk_tree_model_get (model, iter, URI_COL, &uri, -1);
 
-    midori_location_action_set_uri (location_action, uri);
+    midori_location_action_set_text (location_action, uri);
     g_signal_emit (location_action, signals[SUBMIT_URI], 0, uri, FALSE);
     g_free (uri);
 
@@ -919,7 +939,7 @@ midori_location_entry_action_activated_cb (GtkEntryCompletion*   completion,
         if (!item)
             return;
         search = sokoke_search_uri (uri, keywords);
-        midori_location_action_set_uri (location_action, search);
+        midori_location_action_set_text (location_action, search);
         g_signal_emit (location_action, signals[SUBMIT_URI], 0, search, FALSE);
         g_free (search);
     }
@@ -1018,10 +1038,13 @@ midori_location_action_entry_changed_cb (GtkComboBox*          combo_box,
             gtk_tree_model_get (model, &iter, FAVICON_COL, &pixbuf,
                 URI_COL, &uri, -1);
 
+            #if !HAVE_HILDON
             gtk_icon_entry_set_icon_from_pixbuf (GTK_ICON_ENTRY (entry),
                                                  GTK_ICON_ENTRY_PRIMARY, pixbuf);
+            #endif
             g_object_unref (pixbuf);
-            katze_assign (location_action->uri, uri);
+            katze_assign (location_action->text, uri);
+            katze_assign (location_action->uri, g_strdup (uri));
 
             g_signal_emit (location_action, signals[ACTIVE_CHANGED], 0,
                            gtk_combo_box_get_active (combo_box));
@@ -1074,6 +1097,8 @@ midori_location_action_connect_proxy (GtkAction* action,
             G_CALLBACK (midori_location_action_entry_changed_cb), action);
 
         g_object_connect (gtk_bin_get_child (GTK_BIN (entry)),
+                      "signal::changed",
+                      midori_location_action_changed_cb, action,
                       "signal::key-press-event",
                       midori_location_action_key_press_event_cb, action,
                       "signal::focus-in-event",
@@ -1098,6 +1123,14 @@ midori_location_action_disconnect_proxy (GtkAction* action,
         (action, proxy);
 }
 
+/**
+ * midori_location_action_get_uri:
+ * @location_action: a #MidoriLocationAction
+ *
+ * Retrieves the current URI. See also midori_location_action_get_text().
+ *
+ * Return value: the current URI
+ **/
 const gchar*
 midori_location_action_get_uri (MidoriLocationAction* location_action)
 {
@@ -1106,14 +1139,35 @@ midori_location_action_get_uri (MidoriLocationAction* location_action)
     return location_action->uri;
 }
 
+/**
+ * midori_location_action_get_text:
+ * @location_action: a #MidoriLocationAction
+ *
+ * Retrieves the current text, which may be the current URI or
+ * anything typed in the entry.
+ *
+ * Return value: the current text
+ *
+ * Since: 0.2.0
+ **/
+const gchar*
+midori_location_action_get_text (MidoriLocationAction* location_action)
+{
+    g_return_val_if_fail (MIDORI_IS_LOCATION_ACTION (location_action), NULL);
+
+    return location_action->text;
+}
+
 /**
  * midori_location_action_set_text:
  * @location_action: a #MidoriLocationAction
  * @text: a string
  *
  * Sets the entry text to @text and, if applicable, updates the icon.
+ *
+ * Since: 0.2.0
  **/
-static void
+void
 midori_location_action_set_text (MidoriLocationAction* location_action,
                                  const gchar*          text)
 {
@@ -1123,12 +1177,20 @@ midori_location_action_set_text (MidoriLocationAction* location_action,
     GtkTreeIter iter;
     GdkPixbuf* icon;
 
+    g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
+    g_return_if_fail (text != NULL);
+
+    katze_assign (location_action->text, g_strdup (text));
+
     if (!(proxies = gtk_action_get_proxies (GTK_ACTION (location_action))))
         return;
 
     if (midori_location_action_iter_lookup (location_action, text, &iter))
+    {
         gtk_tree_model_get (location_action->model,
                             &iter, FAVICON_COL, &icon, -1);
+        katze_assign (location_action->uri, g_strdup (text));
+    }
     else
         icon = g_object_ref (location_action->default_icon);
 
@@ -1139,14 +1201,25 @@ midori_location_action_set_text (MidoriLocationAction* location_action,
         entry = gtk_bin_get_child (GTK_BIN (location_entry));
 
         gtk_entry_set_text (GTK_ENTRY (entry), text);
+        #if !HAVE_HILDON
         gtk_icon_entry_set_icon_from_pixbuf (GTK_ICON_ENTRY (entry),
             GTK_ICON_ENTRY_PRIMARY, icon);
+        #endif
     }
 
     if (icon)
         g_object_unref (icon);
 }
 
+/**
+ * midori_location_action_set_uri:
+ * @location_action: a #MidoriLocationAction
+ * @uri: an URI string
+ *
+ * Sets the entry URI to @uri and, if applicable, updates the icon.
+ *
+ * Deprecated: 0.2.0
+ **/
 void
 midori_location_action_set_uri (MidoriLocationAction* location_action,
                                 const gchar*          uri)
@@ -1177,6 +1250,7 @@ midori_location_action_set_icon (MidoriLocationAction* location_action,
     GtkWidget* location_entry;
     GtkWidget* entry;
 
+    #if !HAVE_HILDON
     g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
     g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
 
@@ -1195,24 +1269,20 @@ midori_location_action_set_icon (MidoriLocationAction* location_action,
             gtk_icon_entry_set_icon_from_stock (GTK_ICON_ENTRY (entry),
                 GTK_ICON_ENTRY_PRIMARY, GTK_STOCK_JUMP_TO);
     }
+    #endif
 }
 
 void
 midori_location_action_add_uri (MidoriLocationAction* location_action,
                                 const gchar*          uri)
 {
-    MidoriLocationEntryItem item;
-
     g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
     g_return_if_fail (uri != NULL);
 
     if (midori_location_action_is_frozen (location_action))
         return;
 
-    item.favicon = NULL;
-    item.uri = uri;
-    item.title = NULL;
-    midori_location_action_set_item (location_action, &item, TRUE, TRUE);
+    midori_location_action_set_item (location_action, NULL, uri, NULL, TRUE, TRUE);
 
     katze_assign (location_action->uri, g_strdup (uri));
 }
@@ -1226,28 +1296,23 @@ midori_location_action_add_item (MidoriLocationAction* location_action,
     GSList* proxies;
     GtkWidget* location_entry;
     GtkWidget* entry;
-    MidoriLocationEntryItem item;
 
     g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
     g_return_if_fail (uri != NULL);
     g_return_if_fail (title != NULL);
     g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
 
-    item.favicon = icon;
-    item.uri = uri;
-    item.title = title;
-    midori_location_action_set_item (location_action, &item, TRUE, FALSE);
+    midori_location_action_set_item (location_action, icon, uri, title, TRUE, FALSE);
 
+    #if !HAVE_HILDON
     if (midori_location_action_is_frozen (location_action))
         return;
 
-    katze_assign (location_action->uri, g_strdup (uri));
-
     proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
 
+    if (!g_strcmp0 (location_action->uri, uri))
     for (; proxies != NULL; proxies = g_slist_next (proxies))
-    if (GTK_IS_TOOL_ITEM (proxies->data) &&
-        !strcmp (location_action->uri, uri))
+    if (GTK_IS_TOOL_ITEM (proxies->data))
     {
         location_entry = midori_location_action_entry_for_proxy (proxies->data);
         entry = gtk_bin_get_child (GTK_BIN (location_entry));
@@ -1255,6 +1320,7 @@ midori_location_action_add_item (MidoriLocationAction* location_action,
         gtk_icon_entry_set_icon_from_pixbuf (GTK_ICON_ENTRY (entry),
             GTK_ICON_ENTRY_PRIMARY, icon);
     }
+    #endif
 }
 
 void
@@ -1265,22 +1331,19 @@ midori_location_action_set_icon_for_uri (MidoriLocationAction* location_action,
     GSList* proxies;
     GtkWidget* location_entry;
     GtkWidget* entry;
-    MidoriLocationEntryItem item;
 
     g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
     g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
     g_return_if_fail (uri != NULL);
 
-    item.favicon = icon;
-    item.uri = uri;
-    item.title = NULL;
-    midori_location_action_set_item (location_action, &item, FALSE, TRUE);
+    midori_location_action_set_item (location_action, icon, uri, NULL, FALSE, TRUE);
 
+    #if !HAVE_HILDON
     proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
 
+    if (!g_strcmp0 (location_action->uri, uri))
     for (; proxies != NULL; proxies = g_slist_next (proxies))
-    if (GTK_IS_TOOL_ITEM (proxies->data) &&
-        !g_strcmp0 (location_action->uri, uri))
+    if (GTK_IS_TOOL_ITEM (proxies->data))
     {
         location_entry = midori_location_action_entry_for_proxy (proxies->data);
         entry = gtk_bin_get_child (GTK_BIN (location_entry));
@@ -1288,6 +1351,7 @@ midori_location_action_set_icon_for_uri (MidoriLocationAction* location_action,
         gtk_icon_entry_set_icon_from_pixbuf (GTK_ICON_ENTRY (entry),
             GTK_ICON_ENTRY_PRIMARY, icon);
     }
+    #endif
 }
 
 void
@@ -1295,16 +1359,11 @@ midori_location_action_set_title_for_uri (MidoriLocationAction* location_action,
                                           const gchar*          title,
                                           const gchar*          uri)
 {
-    MidoriLocationEntryItem item;
-
     g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
     g_return_if_fail (title != NULL);
     g_return_if_fail (uri != NULL);
 
-    item.favicon = NULL;
-    item.uri = uri;
-    item.title = title;
-    midori_location_action_set_item (location_action, &item, FALSE, TRUE);
+    midori_location_action_set_item (location_action, NULL, uri, title, FALSE, TRUE);
 }
 
 /**
@@ -1400,6 +1459,7 @@ midori_location_action_set_secondary_icon (MidoriLocationAction* location_action
 
     katze_assign (location_action->secondary_icon, g_strdup (stock_id));
 
+    #if !HAVE_HILDON
     proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
 
     for (; proxies != NULL; proxies = g_slist_next (proxies))
@@ -1411,6 +1471,7 @@ midori_location_action_set_secondary_icon (MidoriLocationAction* location_action
         gtk_icon_entry_set_icon_from_stock (GTK_ICON_ENTRY (child),
             GTK_ICON_ENTRY_SECONDARY, stock_id);
     }
+    #endif
 }
 
 /**
index 593d55df5d19842ed1ff857d1174822aa04fb33c..b3f1781f1f3c9cbfe84356e43a28737e68095c40 100644 (file)
@@ -1,5 +1,5 @@
 /*
- Copyright (C) 2008 Christian Dywan <christian@twotoasts.de>
+ Copyright (C) 2008-2009 Christian Dywan <christian@twotoasts.de>
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
@@ -34,13 +34,6 @@ G_BEGIN_DECLS
 typedef struct _MidoriLocationAction         MidoriLocationAction;
 typedef struct _MidoriLocationActionClass    MidoriLocationActionClass;
 
-struct _MidoriLocationEntryItem
-{
-    GdkPixbuf* favicon;
-    const gchar* uri;
-    const gchar* title;
-};
-
 GType
 midori_location_action_get_type             (void);
 
@@ -50,6 +43,13 @@ midori_location_action_freeze              (MidoriLocationAction* location_actio
 void
 midori_location_action_thaw                (MidoriLocationAction* location_action);
 
+const gchar*
+midori_location_action_get_text             (MidoriLocationAction* location_action);
+
+void
+midori_location_action_set_text             (MidoriLocationAction* location_action,
+                                             const gchar*          text);
+
 const gchar*
 midori_location_action_get_uri              (MidoriLocationAction* location_action);
 
index 7d0b95e0a914c538c7c2df119952b0297367fc49..eba3477caf89675c839de3946c191dfb194f07bd 100644 (file)
@@ -379,10 +379,12 @@ midori_location_entry_init (MidoriLocationEntry* location_entry)
     location_entry->progress = 0.0;
 
     entry = gtk_icon_entry_new ();
+    #if !HAVE_HILDON
     gtk_icon_entry_set_icon_from_stock (GTK_ICON_ENTRY (entry),
          GTK_ICON_ENTRY_PRIMARY, GTK_STOCK_FILE);
     gtk_icon_entry_set_icon_highlight (GTK_ICON_ENTRY (entry),
          GTK_ICON_ENTRY_SECONDARY, TRUE);
+    #endif
     g_signal_connect_after (entry, "key-press-event",
         G_CALLBACK (entry_key_press_event), location_entry);
     #if !GTK_CHECK_VERSION (2, 16, 0)
@@ -407,6 +409,11 @@ entry_key_press_event (GtkWidget*           widget,
                 gtk_combo_box_popup (GTK_COMBO_BOX (location_entry));
             return TRUE;
         }
+        case GDK_Page_Up:
+        case GDK_Page_Down:
+        {
+            return TRUE;
+        }
     }
 
     return FALSE;
index f84d0b292b939e0769586e877f164017defbbcb3..7a2317f4fa1a9357cb0817dfa8abf55d96eb9df4 100644 (file)
@@ -25,7 +25,6 @@ G_BEGIN_DECLS
 
 typedef struct _MidoriLocationEntry         MidoriLocationEntry;
 typedef struct _MidoriLocationEntryClass    MidoriLocationEntryClass;
-typedef struct _MidoriLocationEntryItem     MidoriLocationEntryItem;
 
 GType
 midori_location_entry_get_type             (void);
index 6ae27e1ce02bbda110c1e94892c530b8629c6451..1368017515125cb1a8eaa9199ae22adc27639b47 100644 (file)
@@ -356,8 +356,7 @@ midori_panel_init (MidoriPanel* panel)
     gtk_toolbar_set_style (GTK_TOOLBAR (panel->toolbar), GTK_TOOLBAR_BOTH);
     gtk_toolbar_set_icon_size (GTK_TOOLBAR (panel->toolbar),
                                GTK_ICON_SIZE_BUTTON);
-    gtk_toolbar_set_orientation (GTK_TOOLBAR (panel->toolbar),
-                                 GTK_ORIENTATION_VERTICAL);
+    g_object_set (panel->toolbar, "orientation", GTK_ORIENTATION_VERTICAL, NULL);
     gtk_box_pack_start (GTK_BOX (panel), panel->toolbar, FALSE, FALSE, 0);
     gtk_widget_show_all (panel->toolbar);
     vbox = gtk_vbox_new (FALSE, 0);
index 751ba9063751146e03ac41921bf074fe74f83558..82c19c454d7c3a4174a66bfc7d6c78c7a019e1ff 100644 (file)
@@ -315,6 +315,9 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     GtkWidget* header;
     GtkWindow* parent;
     const gchar* icon_name;
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    GtkSettings* gtk_settings;
+    #endif
     GtkSizeGroup* sizegroup;
     GtkWidget* toolbar;
     GtkWidget* toolbutton;
@@ -341,6 +344,9 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
         gtk_window_get_title (GTK_WINDOW (preferences)))))
         gtk_box_pack_start (GTK_BOX (GTK_DIALOG (preferences)->vbox),
             header, FALSE, FALSE, 0);
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    gtk_settings = parent ? gtk_widget_get_settings (GTK_WIDGET (parent)) : NULL;
+    #endif
 
     preferences->notebook = gtk_notebook_new ();
     gtk_container_set_border_width (GTK_CONTAINER (preferences->notebook), 6);
@@ -429,7 +435,6 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     button = katze_property_proxy (settings, "download-folder", "folder");
     FILLED_ADD (button, 1, 2, 0, 1);
     label = katze_property_proxy (settings, "ask-for-destination-folder", NULL);
-    gtk_widget_set_sensitive (label, FALSE);
     INDENTED_ADD (label, 0, 1, 1, 2);
     button = katze_property_proxy (settings, "notify-transfer-completed", NULL);
     /* FIXME: Disable the option if notifications presumably cannot be sent
@@ -453,7 +458,7 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     label = gtk_label_new (_("Fixed-width Font Family"));
     INDENTED_ADD (label, 0, 1, 1, 2);
     hbox = gtk_hbox_new (FALSE, 4);
-    button = katze_property_proxy (settings, "monospace-font-family", "font");
+    button = katze_property_proxy (settings, "monospace-font-family", "font-monospace");
     gtk_widget_set_tooltip_text (button, _("The font family used to display fixed-width text"));
     gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
     entry = katze_property_proxy (settings, "default-monospace-font-size", NULL);
@@ -487,10 +492,15 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
     gtk_button_set_label (GTK_BUTTON (button), _("Load images automatically"));
     gtk_widget_set_tooltip_text (button, _("Load and display images automatically"));
     INDENTED_ADD (button, 0, 1, 0, 1);
-    #if 0
-    button = katze_property_proxy (settings, "auto-shrink-images", NULL);
-    gtk_button_set_label (GTK_BUTTON (button), _("Shrink images automatically"));
-    gtk_widget_set_tooltip_text (button, _("Automatically shrink standalone images to fit"));
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    if (katze_object_get_boolean (gtk_settings, "gtk-touchscreen-mode"))
+        button = katze_property_proxy (settings, "kinetic-scrolling", NULL);
+    else
+    {
+        button = katze_property_proxy (settings, "auto-shrink-images", NULL);
+        gtk_button_set_label (GTK_BUTTON (button), _("Shrink images automatically"));
+        gtk_widget_set_tooltip_text (button, _("Automatically shrink standalone images to fit"));
+    }
     #else
     button = katze_property_proxy (settings, "middle-click-opens-selection", NULL);
     #endif
index 2ee090d07e6be43f2a1ce80cd6da2670d577603c..5e5f86aa33a792991a82eeb0381dd47ce2752fdb 100644 (file)
@@ -28,7 +28,6 @@
 #define STOCK_WEB_BROWSER        "web-browser"
 #define STOCK_NEWS_FEED          "news-feed"
 #define STOCK_STYLE              "gnome-settings-theme"
-#define STOCK_STYLES             "gnome-settings-theme"
 #define STOCK_TRANSFER           "package"
 #define STOCK_TRANSFERS          "package"
 #define STOCK_PLUGINS            GTK_STOCK_CONVERT
@@ -38,7 +37,7 @@
 #define STOCK_IMAGE              "gnome-mime-image"
 #define STOCK_NETWORK_OFFLINE    "network-offline"
 #define STOCK_SCRIPT             "stock_script"
-#define STOCK_SCRIPTS            "stock_script"
+#define STOCK_SCRIPTS            "gnome-settings-theme"
 #define STOCK_SEND               "stock_mail-send"
 #define STOCK_TAB_NEW            "stock_new-tab"
 #define STOCK_USER_TRASH         "gnome-stock-trash"
index efb037cb976fed19abca864bd703370c42b3b0ff..0890abf0f95e461742ff5c2381bd283aa8f0d88b 100644 (file)
@@ -59,7 +59,7 @@ midori_view_item_meta_data_changed (KatzeItem*   item,
 
 struct _MidoriView
 {
-    GtkScrolledWindow parent_instance;
+    KatzeScrolled parent_instance;
 
     gchar* uri;
     gchar* title;
@@ -69,16 +69,21 @@ struct _MidoriView
     MidoriLoadStatus load_status;
     gboolean minimized;
     gchar* statusbar_text;
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    WebKitHitTestResult* hit_test;
+    #endif
     gchar* link_uri;
     gboolean has_selection;
     gchar* selected_text;
     MidoriWebSettings* settings;
     GtkWidget* web_view;
+    GtkWidget* thumb_view;
     KatzeArray* news_feeds;
 
     gboolean speed_dial_in_new_tabs;
     gchar* download_manager;
     gchar* news_aggregator;
+    gboolean ask_for_destination_folder;
     gboolean middle_click_opens_selection;
     gboolean open_tabs_in_the_background;
     gboolean close_buttons_on_tabs;
@@ -92,16 +97,18 @@ struct _MidoriView
     GtkWidget* tab_title;
     GtkWidget* tab_close;
     KatzeItem* item;
+    gint scrollh, scrollv;
+    gboolean back_forward_set;
 
     KatzeNet* net;
 };
 
 struct _MidoriViewClass
 {
-    GtkScrolledWindowClass parent_class;
+    KatzeScrolledClass parent_class;
 };
 
-G_DEFINE_TYPE (MidoriView, midori_view, GTK_TYPE_SCROLLED_WINDOW)
+G_DEFINE_TYPE (MidoriView, midori_view, KATZE_TYPE_SCROLLED);
 
 GType
 midori_load_status_get_type (void)
@@ -206,7 +213,6 @@ static void
 midori_view_speed_dial_save (GtkWidget*   web_view,
                              const gchar* message);
 
-
 static void
 midori_view_class_init (MidoriViewClass* class)
 {
@@ -696,9 +702,26 @@ midori_view_update_load_status (MidoriView*      view,
     if (view->tab_icon)
         katze_throbber_set_animated (KATZE_THROBBER (view->tab_icon),
             view->load_status != MIDORI_LOAD_FINISHED);
+}
 
-    if (view->web_view && view->load_status == MIDORI_LOAD_COMMITTED)
-        _midori_web_view_load_icon (view);
+static gboolean
+midori_view_web_view_navigation_decision_cb (WebKitWebView*             web_view,
+                                             WebKitWebFrame*            web_frame,
+                                             WebKitNetworkRequest*      request,
+                                             WebKitWebNavigationAction* action,
+                                             WebKitWebPolicyDecision*   decision,
+                                             MidoriView*                view)
+{
+    const gchar* uri = webkit_network_request_get_uri (request);
+    if (g_str_has_prefix (uri, "mailto:"))
+    {
+        webkit_web_policy_decision_ignore (decision);
+        sokoke_show_uri (gtk_widget_get_screen (GTK_WIDGET (web_view)),
+                         uri, GDK_CURRENT_TIME, NULL);
+        return TRUE;
+    }
+    /* TODO: Handle more external protocols */
+    return FALSE;
 }
 
 static void
@@ -726,9 +749,52 @@ webkit_web_view_load_committed_cb (WebKitWebView*  web_view,
 
     uri = webkit_web_frame_get_uri (web_frame);
     g_return_if_fail (uri != NULL);
-    katze_assign (view->uri, g_strdup (uri));
+    katze_assign (view->uri, sokoke_format_uri_for_display (uri));
     if (view->item)
     {
+        #if 0
+        /* Load back forward history from meta data. WebKit does not seem to
+          respect the order of items, so the feature is unusable. */
+        if (!view->back_forward_set)
+        {
+            WebKitWebBackForwardList* list;
+            gchar* key;
+            guint i;
+            const gchar* data;
+            WebKitWebHistoryItem* item;
+
+            list = webkit_web_view_get_back_forward_list (web_view);
+
+            key = g_strdup ("back4");
+            for (i = 4; i > 0; i--)
+            {
+                key[4] = 48 + i;
+                if ((data = katze_item_get_meta_string (view->item, key)))
+                {
+                    item = webkit_web_history_item_new_with_data (data, NULL);
+                    webkit_web_back_forward_list_add_item (list, item);
+                    g_object_unref (item);
+                }
+            }
+
+            #if 0
+            key[0] = 'f';
+            key[1] = 'o';
+            key[2] = 'r';
+            key[3] = 'e';
+            for (i = 4; i > 0; i--)
+            {
+                key[4] = 48 + i;
+                item = webkit_web_history_item_new_with_data (data, NULL);
+                webkit_web_back_forward_list_add_item (list, item);
+                g_object_unref (item);
+            }
+            #endif
+            g_free (key);
+            view->back_forward_set = TRUE;
+        }
+        #endif
+
         katze_item_set_uri (view->item, uri);
         katze_item_set_added (view->item, time (NULL));
     }
@@ -839,6 +905,31 @@ webkit_web_frame_load_done_cb (WebKitWebFrame* web_frame,
 }
 #endif
 
+static void
+midori_view_apply_scroll_position (MidoriView* view)
+{
+    if (view->scrollh > -2)
+    {
+        if (view->scrollh > 0)
+        {
+            GtkAdjustment* adjustment = katze_object_get_object (view, "hadjustment");
+            gtk_adjustment_set_value (adjustment, view->scrollh);
+            g_object_unref (adjustment);
+        }
+        view->scrollh = -3;
+    }
+    if (view->scrollv > -2)
+    {
+        if (view->scrollv > 0)
+        {
+            GtkAdjustment* adjustment = katze_object_get_object (view, "vadjustment");
+            gtk_adjustment_set_value (adjustment, view->scrollv);
+            g_object_unref (adjustment);
+        }
+        view->scrollv = -3;
+    }
+}
+
 static void
 webkit_web_view_load_finished_cb (WebKitWebView*  web_view,
                                   WebKitWebFrame* web_frame,
@@ -846,6 +937,10 @@ webkit_web_view_load_finished_cb (WebKitWebView*  web_view,
 {
     g_object_freeze_notify (G_OBJECT (view));
 
+    /* TODO: Find a better condition than a finished load.
+      Apparently WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT is too early. */
+    midori_view_apply_scroll_position (view);
+
     view->progress = 1.0;
     g_object_notify (G_OBJECT (view), "progress");
     midori_view_update_load_status (view, MIDORI_LOAD_FINISHED);
@@ -857,11 +952,13 @@ webkit_web_view_load_finished_cb (WebKitWebView*  web_view,
            URI1|title1,URI2|title2
            FIXME: Ensure separators contained in the string can't break it */
         gchar* value = sokoke_js_script_eval (js_context,
-        "function feeds (l) { var f = new Array (); for (i in l) "
-        "{ var t = l[i].type; "
+        "function links (l) { var f = new Array (); for (i in l) "
+        "{ var t = l[i].type; var r = l[i].rel; "
         "if (t && (t.indexOf ('rss') != -1 || t.indexOf ('atom') != -1)) "
-        "f.push (l[i].href + '|' + l[i].title); } return f; }"
-        "feeds (document.getElementsByTagName ('link'))", NULL);
+        "f.push (l[i].href + '|' + l[i].title);"
+        "else if (r && r.indexOf ('icon') != -1) f.push (l[i].href); } "
+        "return f; }"
+        "links (document.getElementsByTagName ('link'))", NULL);
         gchar** items = g_strsplit (value, ",", 0);
         guint i = 0;
         gchar* default_uri = NULL;
@@ -871,14 +968,21 @@ webkit_web_view_load_finished_cb (WebKitWebView*  web_view,
         while (items[i] != NULL)
         {
             gchar** parts = g_strsplit (items[i], "|", 2);
-            KatzeItem* item = g_object_new (KATZE_TYPE_ITEM,
-                "uri", parts ? *parts : "",
-                "name", parts && *parts ? parts[1] : NULL,
-                NULL);
-            katze_array_add_item (view->news_feeds, item);
-            g_object_unref (item);
-            if (!default_uri)
-                default_uri = g_strdup (parts ? *parts : NULL);
+            if (parts == NULL)
+                ;
+            else if (*parts && parts[1])
+            {
+                KatzeItem* item = g_object_new (KATZE_TYPE_ITEM,
+                    "uri", parts[0], "name", parts[1], NULL);
+                katze_array_add_item (view->news_feeds, item);
+                g_object_unref (item);
+                if (!default_uri)
+                    default_uri = g_strdup (parts[0]);
+            }
+            else
+                g_object_set_data_full (G_OBJECT (view->net), view->uri,
+                                        g_strdup (*parts), (GDestroyNotify)g_free);
+
             g_strfreev (parts);
             i++;
         }
@@ -889,6 +993,8 @@ webkit_web_view_load_finished_cb (WebKitWebView*  web_view,
         g_object_notify (G_OBJECT (view), "load-status");
     }
 
+    _midori_web_view_load_icon (view);
+
     g_object_thaw_notify (G_OBJECT (view));
 }
 
@@ -898,6 +1004,50 @@ webkit_web_view_notify_uri_cb (WebKitWebView* web_view,
                                GParamSpec*    pspec,
                                MidoriView*    view)
 {
+    #if 0
+    if (view->item)
+    {
+        /* Save back forward history as meta data. This is disabled
+          because we can't reliably restore these atm. */
+        WebKitWebView* web_view;
+        WebKitWebBackForwardList* list;
+        GList* back;
+        GList* forward;
+
+        web_view = WEBKIT_WEB_VIEW (view->web_view);
+        list = webkit_web_view_get_back_forward_list (web_view);
+        back = webkit_web_back_forward_list_get_back_list_with_limit (list, 5);
+        forward = webkit_web_back_forward_list_get_forward_list_with_limit (list, 5);
+        guint i;
+        WebKitWebHistoryItem* item;
+        gchar* key = g_strdup ("back0");
+
+        i = 0;
+        while ((item = g_list_nth_data (back, i++)))
+        {
+            katze_item_set_meta_string (view->item, key,
+                webkit_web_history_item_get_uri (item));
+            key[4] = 48 + i;
+        }
+
+        #if 0
+        key[0] = 'f';
+        key[1] = 'o';
+        key[2] = 'r';
+        key[3] = 'e';
+        key[4] = 48;
+        i = 0;
+        while ((item = g_list_nth_data (forward, i++)))
+        {
+            katze_item_set_meta_string (view->item, key,
+                webkit_web_history_item_get_uri (item));
+            key[4] = 48 + i;
+        }
+        #endif
+        g_free (key);
+    }
+    #endif
+
     g_object_get (web_view, "uri", &view->uri, NULL);
     g_object_notify (G_OBJECT (view), "uri");
 }
@@ -930,6 +1080,15 @@ webkit_web_view_statusbar_text_changed_cb (WebKitWebView* web_view,
     g_object_set (G_OBJECT (view), "statusbar-text", text, NULL);
 }
 
+static gboolean
+midori_view_web_view_leave_notify_event_cb (WebKitWebView*    web_view,
+                                            GdkEventCrossing* event,
+                                            MidoriView*       view)
+{
+    g_object_set (G_OBJECT (view), "statusbar-text", NULL, NULL);
+    return FALSE;
+}
+
 static void
 webkit_web_view_hovering_over_link_cb (WebKitWebView* web_view,
                                        const gchar*   tooltip,
@@ -937,7 +1096,14 @@ webkit_web_view_hovering_over_link_cb (WebKitWebView* web_view,
                                        MidoriView*    view)
 {
     katze_assign (view->link_uri, g_strdup (link_uri));
-    g_object_set (G_OBJECT (view), "statusbar-text", link_uri, NULL);
+    if (link_uri && g_str_has_prefix (link_uri, "mailto:"))
+    {
+        gchar* text = g_strdup_printf (_("Send a message to %s"), &link_uri[7]);
+        g_object_set (G_OBJECT (view), "statusbar-text", text, NULL);
+        g_free (text);
+    }
+    else
+        g_object_set (G_OBJECT (view), "statusbar-text", link_uri, NULL);
 }
 
 #define MIDORI_KEYS_MODIFIER_MASK (GDK_SHIFT_MASK | GDK_CONTROL_MASK \
@@ -1009,16 +1175,28 @@ gtk_widget_button_press_event_cb (WebKitWebView*  web_view,
         }
         else if (view->middle_click_opens_selection)
         {
-            guint i = 0;
-            /* FIXME: This isn't quite correct, we need mouse context */
-            if (webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (view->web_view)))
+            gboolean is_editable;
+            #if WEBKIT_CHECK_VERSION (1, 1, 15)
+            WebKitHitTestResult* result;
+            WebKitHitTestResultContext context;
+
+            result = webkit_web_view_get_hit_test_result (web_view, event);
+            context = katze_object_get_int (result, "context");
+            is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
+            g_object_unref (result);
+            #else
+            is_editable = webkit_web_view_can_paste_clipboard (WEBKIT_WEB_VIEW (view->web_view));
+            #endif
+            if (is_editable)
                 return FALSE;
+
             clipboard = gtk_clipboard_get_for_display (
                 gtk_widget_get_display (GTK_WIDGET (view)),
                 GDK_SELECTION_PRIMARY);
             uri = gtk_clipboard_wait_for_text (clipboard);
             if (uri && strchr (uri, '.'))
             {
+                guint i = 0;
                 while (uri[i++] != '\0')
                     if (uri[i] == '\n' || uri[i] == '\r')
                         uri[i] = ' ';
@@ -1115,6 +1293,133 @@ gtk_widget_scroll_event_cb (WebKitWebView*  web_view,
         return FALSE;
 }
 
+#if WEBKIT_CHECK_VERSION (1, 1, 15)
+static void
+midori_web_view_menu_open_activate_cb (GtkWidget*  widget,
+                                       MidoriView* view)
+{
+    midori_view_set_uri (view, view->link_uri);
+}
+
+static void
+midori_web_view_menu_new_window_activate_cb (GtkWidget*  widget,
+                                             MidoriView* view)
+{
+    g_signal_emit (view, signals[NEW_WINDOW], 0, view->link_uri);
+}
+
+static void
+midori_web_view_menu_link_copy_activate_cb (GtkWidget*  widget,
+                                            MidoriView* view)
+{
+    GdkDisplay* display = gtk_widget_get_display (widget);
+    GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+        GDK_SELECTION_CLIPBOARD);
+    gtk_clipboard_set_text (clipboard, view->link_uri, -1);
+}
+
+static void
+midori_web_view_menu_save_activate_cb (GtkWidget*  widget,
+                                       MidoriView* view)
+{
+    WebKitNetworkRequest* request = webkit_network_request_new (view->link_uri);
+    WebKitDownload* download = webkit_download_new (request);
+    gboolean handled;
+    g_object_unref (request);
+    if (view->ask_for_destination_folder)
+        g_object_set_data (G_OBJECT (download), "save-as-download", (void*)0xdeadbeef);
+    g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+    if (!view->ask_for_destination_folder)
+        webkit_download_start (download);
+}
+
+static void
+midori_web_view_menu_image_new_tab_activate_cb (GtkWidget*  widget,
+                                                MidoriView* view)
+{
+    gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+    g_signal_emit (view, signals[NEW_TAB], 0, uri,
+                   view->open_tabs_in_the_background);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_new_window_activate_cb (GtkWidget*  widget,
+                                                    MidoriView* view)
+{
+    gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+    g_signal_emit (view, signals[NEW_WINDOW], 0, uri);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_copy_activate_cb (GtkWidget*  widget,
+                                             MidoriView* view)
+{
+    GdkDisplay* display = gtk_widget_get_display (widget);
+    GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+        GDK_SELECTION_CLIPBOARD);
+    gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+    gtk_clipboard_set_text (clipboard, uri, -1);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_image_save_activate_cb (GtkWidget*  widget,
+                                             MidoriView* view)
+{
+    gchar* uri = katze_object_get_string (view->hit_test, "image-uri");
+    WebKitNetworkRequest* request = webkit_network_request_new (uri);
+    WebKitDownload* download = webkit_download_new (request);
+    gboolean handled;
+    g_object_unref (request);
+    if (view->ask_for_destination_folder)
+        g_object_set_data (G_OBJECT (download), "save-as-download", (void*)0xdeadbeef);
+    g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+    if (!view->ask_for_destination_folder)
+        webkit_download_start (download);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_copy_activate_cb (GtkWidget*  widget,
+                                             MidoriView* view)
+{
+    GdkDisplay* display = gtk_widget_get_display (widget);
+    GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+        GDK_SELECTION_CLIPBOARD);
+    gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+    gtk_clipboard_set_text (clipboard, uri, -1);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_save_activate_cb (GtkWidget*  widget,
+                                             MidoriView* view)
+{
+    gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+    WebKitNetworkRequest* request = webkit_network_request_new (uri);
+    WebKitDownload* download = webkit_download_new (request);
+    gboolean handled;
+    g_object_unref (request);
+    if (view->ask_for_destination_folder)
+        g_object_set_data (G_OBJECT (download), "save-as-download", (void*)0xdeadbeef);
+    g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+    if (!view->ask_for_destination_folder)
+        webkit_download_start (download);
+    g_free (uri);
+}
+
+static void
+midori_web_view_menu_video_download_activate_cb (GtkWidget*  widget,
+                                                 MidoriView* view)
+{
+    gchar* uri = katze_object_get_string (view->hit_test, "media-uri");
+    sokoke_spawn_program (view->download_manager, uri, TRUE);
+    g_free (uri);
+}
+#endif
+
 static void
 midori_web_view_menu_new_tab_activate_cb (GtkWidget*  widget,
                                           MidoriView* view)
@@ -1125,10 +1430,20 @@ midori_web_view_menu_new_tab_activate_cb (GtkWidget*  widget,
     else
     {
         gchar* data = (gchar*)g_object_get_data (G_OBJECT (widget), "uri");
-        gchar* uri = sokoke_magic_uri (data, NULL);
-        g_signal_emit (view, signals[NEW_TAB], 0, uri,
-                       view->open_tabs_in_the_background);
-        g_free (uri);
+        if (strchr (data, '@'))
+        {
+            gchar* uri = g_strconcat ("mailto:", data, NULL);
+            sokoke_show_uri (gtk_widget_get_screen (widget),
+                             uri, GDK_CURRENT_TIME, NULL);
+            g_free (uri);
+        }
+        else
+        {
+            gchar* uri = sokoke_magic_uri (data, NULL);
+            g_signal_emit (view, signals[NEW_TAB], 0, uri,
+                           view->open_tabs_in_the_background);
+            g_free (uri);
+        }
     }
 }
 
@@ -1153,6 +1468,18 @@ midori_web_view_menu_search_web_activate_cb (GtkWidget*  widget,
     g_free (uri);
 }
 
+#if WEBKIT_CHECK_VERSION (1, 1, 15)
+static void
+midori_web_view_menu_copy_activate_cb (GtkWidget*  widget,
+                                       MidoriView* view)
+{
+    GdkDisplay* display = gtk_widget_get_display (widget);
+    GtkClipboard* clipboard = gtk_clipboard_get_for_display (display,
+        GDK_SELECTION_CLIPBOARD);
+    gtk_clipboard_set_text (clipboard, view->selected_text, -1);
+}
+#endif
+
 #if !WEBKIT_CHECK_VERSION (1, 1, 3)
 static void
 midori_web_view_menu_save_as_activate_cb (GtkWidget*  widget,
@@ -1176,6 +1503,42 @@ midori_web_view_menu_add_bookmark_activate_cb (GtkWidget*  widget,
     g_signal_emit (view, signals[ADD_BOOKMARK], 0, view->link_uri);
 }
 
+static GtkWidget*
+midori_view_insert_menu_item (GtkMenuShell* menu,
+                             gint          position,
+                             const gchar*  label,
+                             const gchar*  stock_id,
+                             GCallback     callback,
+                             GtkWidget*    widget)
+{
+    GtkWidget* menuitem;
+
+    if (label)
+    {
+        menuitem = gtk_image_menu_item_new_with_mnemonic (label);
+        if (stock_id)
+        {
+            GdkScreen* screen = gtk_widget_get_screen (widget);
+            GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
+            if (gtk_icon_theme_has_icon (icon_theme, stock_id))
+            {
+                GtkWidget* icon = gtk_image_new_from_stock (stock_id,
+                    GTK_ICON_SIZE_MENU);
+                gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem),
+                    icon);
+            }
+        }
+    }
+    else
+        menuitem = gtk_image_menu_item_new_from_stock (stock_id, NULL);
+    gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, position);
+    if (callback)
+        g_signal_connect (menuitem, "activate", callback, widget);
+    else
+        gtk_widget_set_sensitive (menuitem, FALSE);
+    return menuitem;
+}
+
 static void
 webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
                                    GtkWidget*     menu,
@@ -1183,51 +1546,167 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
 {
     MidoriBrowser* browser = midori_browser_get_for_widget (GTK_WIDGET (view));
     GtkActionGroup* actions = midori_browser_get_action_group (browser);
+    GtkMenuShell* menu_shell = GTK_MENU_SHELL (menu);
+    GtkWidget* widget = GTK_WIDGET (view);
     GtkWidget* menuitem;
     GtkWidget* icon;
+    #if !WEBKIT_CHECK_VERSION (1, 1, 15)
     gchar* stock_id;
-    GdkScreen* screen;
-    GtkIconTheme* icon_theme;
+    #endif
     GList* items;
     gboolean has_selection;
+    gboolean is_editable;
+    gboolean is_document;
     GtkWidget* label;
-
+    guint i;
+
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    gint x, y;
+    GdkEventButton event;
+    WebKitHitTestResultContext context;
+    gboolean is_image;
+    gboolean is_media;
+
+    gdk_window_get_pointer (GTK_WIDGET (web_view)->window, &x, &y, NULL);
+    event.x = x;
+    event.y = y;
+    katze_object_assign (view->hit_test,
+        webkit_web_view_get_hit_test_result (web_view, &event));
+    context = katze_object_get_int (view->hit_test, "context");
+    /* Ensure view->link_uri is correct. */
+    katze_assign (view->link_uri,
+        katze_object_get_string (view->hit_test, "link-uri"));
+    has_selection = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION;
+    /* Ensure view->selected_text */
+    midori_view_has_selection (view);
+    is_editable = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
+    is_image = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE;
+    is_media = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA;
+    is_document = !view->link_uri && !has_selection && !is_image && !is_media;
+    #else
+    /* There is no guarantee view->link_uri is correct in case
+        gtk-touchscreen-mode is enabled, nothing we can do. */
     has_selection = midori_view_has_selection (view);
+    is_document = !view->link_uri && !has_selection;
 
     /* Unfortunately inspecting the menu is the only way to
        determine that the mouse is over a text area or selection. */
     items = gtk_container_get_children (GTK_CONTAINER (menu));
     menuitem = (GtkWidget*)g_list_nth_data (items, 0);
-    g_list_free (items);
     if (GTK_IS_IMAGE_MENU_ITEM (menuitem))
     {
         icon = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
         gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
-        if (!strcmp (stock_id, GTK_STOCK_CUT))
+        if (!strcmp (stock_id, GTK_STOCK_FIND))
         {
+            gtk_widget_hide (menuitem);
+            gtk_widget_set_no_show_all (menuitem, TRUE);
+            menuitem = (GtkWidget*)g_list_nth_data (items, 1);
+            gtk_widget_hide (menuitem);
+            menuitem = (GtkWidget*)g_list_nth_data (items, 2);
+            icon = gtk_image_menu_item_get_image (GTK_IMAGE_MENU_ITEM (menuitem));
+            gtk_image_get_stock (GTK_IMAGE (icon), &stock_id, NULL);
+        }
+        is_editable = !strcmp (stock_id, GTK_STOCK_CUT);
+        if (is_document && !strcmp (stock_id, GTK_STOCK_OPEN))
+            is_document = FALSE;
+    }
+    else
+        is_editable = FALSE;
+    g_list_free (items);
+    #endif
+
+    if (is_editable)
+    {
         #if WEBKIT_CHECK_VERSION (1, 1, 14)
-            if (!strcmp (stock_id, GTK_STOCK_UNDO))
-                return;
-            menuitem = gtk_separator_menu_item_new ();
-            gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
-            gtk_widget_show (menuitem);
-            menuitem = sokoke_action_create_popup_menu_item (
-                gtk_action_group_get_action (actions, "Redo"));
-            gtk_widget_set_sensitive (menuitem,
-                webkit_web_view_can_redo (web_view));
-            gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
-            menuitem = sokoke_action_create_popup_menu_item (
-                gtk_action_group_get_action (actions, "Undo"));
-            gtk_widget_set_sensitive (menuitem,
-                webkit_web_view_can_undo (web_view));
-            gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem);
+        menuitem = gtk_separator_menu_item_new ();
+        gtk_menu_shell_prepend (menu_shell, menuitem);
+        gtk_widget_show (menuitem);
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Redo"));
+        gtk_widget_set_sensitive (menuitem,
+            webkit_web_view_can_redo (web_view));
+        gtk_menu_shell_prepend (menu_shell, menuitem);
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Undo"));
+        gtk_widget_set_sensitive (menuitem,
+            webkit_web_view_can_undo (web_view));
+        gtk_menu_shell_prepend (menu_shell, menuitem);
         #endif
-            return;
-        }
-        if (strcmp (stock_id, GTK_STOCK_FIND))
-            has_selection = FALSE;
+        return;
     }
 
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    /* FIXME: We can't re-implement Open in Frame or Inspect page,
+      so we can't replace the default document menu */
+    if (!is_document)
+    {
+        items = gtk_container_get_children (GTK_CONTAINER (menu));
+        i = 0;
+        while ((menuitem = g_list_nth_data (items, i++)))
+            gtk_widget_destroy (menuitem);
+        g_list_free (items);
+    }
+    if (view->link_uri)
+    {
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Open _Link"), NULL,
+            G_CALLBACK (midori_web_view_menu_open_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Open Link in New _Tab"), STOCK_TAB_NEW,
+            G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Open Link in New _Window"), STOCK_WINDOW_NEW,
+            G_CALLBACK (midori_web_view_menu_new_window_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("_Copy Link destination"), NULL,
+            G_CALLBACK (midori_web_view_menu_link_copy_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            view->ask_for_destination_folder ? _("_Save Link destination")
+            : _("_Download Link destination"), NULL,
+            G_CALLBACK (midori_web_view_menu_save_activate_cb), widget);
+        if (view->download_manager && *view->download_manager)
+            midori_view_insert_menu_item (menu_shell, -1,
+            _("Download with Download _Manager"), STOCK_TRANSFER,
+            G_CALLBACK (midori_web_view_menu_download_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            NULL, STOCK_BOOKMARK_ADD,
+            G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), widget);
+    }
+
+    if (is_image)
+    {
+        if (view->link_uri)
+            gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Open _Image in New Tab"), STOCK_TAB_NEW,
+            G_CALLBACK (midori_web_view_menu_image_new_tab_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Open Image in New Wi_ndow"), STOCK_WINDOW_NEW,
+            G_CALLBACK (midori_web_view_menu_image_new_window_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Copy Image _Address"), NULL,
+            G_CALLBACK (midori_web_view_menu_image_copy_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            view->ask_for_destination_folder ? _("Save I_mage")
+            : _("Download I_mage"), GTK_STOCK_SAVE,
+            G_CALLBACK (midori_web_view_menu_image_save_activate_cb), widget);
+    }
+
+    if (is_media)
+    {
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Copy Video _Address"), NULL,
+            G_CALLBACK (midori_web_view_menu_video_copy_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, -1,
+            FALSE ? _("Save _Video") : _("Download _Video"), GTK_STOCK_SAVE,
+            G_CALLBACK (midori_web_view_menu_video_save_activate_cb), widget);
+        if (view->download_manager && *view->download_manager)
+            midori_view_insert_menu_item (menu_shell, -1,
+            _("Download with Download _Manager"), STOCK_TRANSFER,
+            G_CALLBACK (midori_web_view_menu_video_download_activate_cb), widget);
+    }
+    #else
     if (view->link_uri)
     {
         items = gtk_container_get_children (GTK_CONTAINER (menu));
@@ -1235,19 +1714,9 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
         /* hack to localize menu item */
         label = gtk_bin_get_child (GTK_BIN (menuitem));
         gtk_label_set_label (GTK_LABEL (label), _("Open _Link"));
-        menuitem = gtk_image_menu_item_new_with_mnemonic (
-            _("Open Link in New _Tab"));
-        screen = gtk_widget_get_screen (GTK_WIDGET (view));
-        icon_theme = gtk_icon_theme_get_for_screen (screen);
-        if (gtk_icon_theme_has_icon (icon_theme, STOCK_TAB_NEW))
-        {
-            icon = gtk_image_new_from_stock (STOCK_TAB_NEW, GTK_ICON_SIZE_MENU);
-            gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
-        }
-        gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 1);
-        g_signal_connect (menuitem, "activate",
-            G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), view);
-        gtk_widget_show (menuitem);
+        midori_view_insert_menu_item (menu_shell, 1,
+            _("Open Link in New _Tab"), STOCK_TAB_NEW,
+            G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
         g_list_free (items);
         items = gtk_container_get_children (GTK_CONTAINER (menu));
         menuitem = (GtkWidget*)g_list_nth_data (items, 2);
@@ -1261,39 +1730,26 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
         label = gtk_bin_get_child (GTK_BIN (menuitem));
         gtk_label_set_label (GTK_LABEL (label), _("_Download Link destination"));
         #else
-        /* hack to disable non-functional Download File
-           FIXME: Make sure this really is the right menu item */
+        /* hack to disable non-functional Download File */
         gtk_widget_hide (menuitem);
-        menuitem = gtk_image_menu_item_new_with_mnemonic (
-            _("_Save Link destination"));
-        gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 3);
-        g_signal_connect (menuitem, "activate",
-            G_CALLBACK (midori_web_view_menu_save_as_activate_cb), view);
-        gtk_widget_show (menuitem);
+        gtk_widget_set_no_show_all (menuitem);
+        midori_view_insert_menu_item (menu_shell, 3,
+            _("_Save Link destination"), NULL,
+            G_CALLBACK (midori_web_view_menu_save_as_activate_cb), widget);
         #endif
         if (view->download_manager && *view->download_manager)
-        {
-            menuitem = gtk_image_menu_item_new_with_mnemonic (
-                _("Download with Download _Manager"));
-            icon = gtk_image_new_from_stock (GTK_STOCK_SAVE_AS,
-                                             GTK_ICON_SIZE_MENU);
-            gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
-            gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 4);
-            g_signal_connect (menuitem, "activate",
-                G_CALLBACK (midori_web_view_menu_download_activate_cb), view);
-            gtk_widget_show (menuitem);
-        }
-        menuitem = gtk_image_menu_item_new_from_stock (STOCK_BOOKMARK_ADD, NULL);
-        gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 5);
-        g_signal_connect (menuitem, "activate",
-            G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), view);
-        gtk_widget_show (menuitem);
+            midori_view_insert_menu_item (menu_shell, 4,
+            _("Download with Download _Manager"), STOCK_TRANSFER,
+            G_CALLBACK (midori_web_view_menu_download_activate_cb), widget);
+        midori_view_insert_menu_item (menu_shell, 5,
+            NULL, STOCK_BOOKMARK_ADD,
+            G_CALLBACK (midori_web_view_menu_add_bookmark_activate_cb), widget);
     }
+    #endif
 
     if (!view->link_uri && has_selection)
     {
         GtkWidget* window;
-        guint i;
 
         window = gtk_widget_get_toplevel (GTK_WIDGET (web_view));
         i = 0;
@@ -1305,8 +1761,7 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
 
             menuitem = gtk_image_menu_item_new_with_mnemonic (_("Search _with"));
             gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu);
-            gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, 1);
-            gtk_widget_show (menuitem);
+            gtk_menu_shell_insert (menu_shell, menuitem, 1);
 
             search_engines = katze_object_get_object (window, "search-engines");
             while ((item = katze_array_get_nth_item (search_engines, i++)))
@@ -1327,10 +1782,18 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
                                    (gchar*)katze_item_get_uri (item));
                 g_signal_connect (menuitem, "activate",
                     G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view);
-                gtk_widget_show (menuitem);
             }
             g_object_unref (search_engines);
         }
+        #if WEBKIT_CHECK_VERSION (1, 1, 15)
+        midori_view_insert_menu_item (menu_shell, 0,
+            _("_Search the Web"), GTK_STOCK_FIND,
+            G_CALLBACK (midori_web_view_menu_search_web_activate_cb), widget);
+        gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
+        midori_view_insert_menu_item (menu_shell, -1,
+            NULL, GTK_STOCK_COPY,
+            G_CALLBACK (midori_web_view_menu_copy_activate_cb), widget);
+        #else
         items = gtk_container_get_children (GTK_CONTAINER (menu));
         menuitem = (GtkWidget*)g_list_nth_data (items, 0);
         /* hack to localize menu item */
@@ -1340,27 +1803,54 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
         g_signal_connect (menuitem, "activate",
             G_CALLBACK (midori_web_view_menu_search_web_activate_cb), view);
         g_list_free (items);
+        #endif
 
-        if (strchr (view->selected_text, '.')
-            && !strchr (view->selected_text, ' '))
+        g_strstrip (view->selected_text);
+        if (view->selected_text && !strchr (view->selected_text, ' ')
+            && strchr (view->selected_text, '.'))
         {
-            menuitem = gtk_image_menu_item_new_with_mnemonic (
-                _("Open Address in New _Tab"));
-            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);
-            gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menuitem, -1);
+            if (strchr (view->selected_text, '@'))
+            {
+                gchar* text = g_strdup_printf (_("Send a message to %s"), view->selected_text);
+                menuitem = midori_view_insert_menu_item (menu_shell, -1,
+                    text, GTK_STOCK_JUMP_TO,
+                    G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
+                g_free (text);
+            }
+            else
+                menuitem = midori_view_insert_menu_item (menu_shell, -1,
+                    _("Open Address in New _Tab"), GTK_STOCK_JUMP_TO,
+                    G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), widget);
             g_object_set_data (G_OBJECT (menuitem), "uri", view->selected_text);
-            g_signal_connect (menuitem, "activate",
-                G_CALLBACK (midori_web_view_menu_new_tab_activate_cb), view);
-            gtk_widget_show (menuitem);
         }
         /* FIXME: view selection source */
     }
 
-    if (!view->link_uri && !has_selection)
+    if (is_document)
     {
+        /* FIXME: We can't re-implement Open in Frame or Inspect page
+        #if WEBKIT_CHECK_VERSION (1, 1, 15) */
+        #if 0
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Back"));
+        gtk_menu_shell_append (menu_shell, menuitem);
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Forward"));
+        gtk_menu_shell_append (menu_shell, menuitem);
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Stop"));
+        gtk_menu_shell_append (menu_shell, menuitem);
+        menuitem = sokoke_action_create_popup_menu_item (
+            gtk_action_group_get_action (actions, "Reload"));
+        gtk_menu_shell_append (menu_shell, menuitem);
+        #else
         items = gtk_container_get_children (GTK_CONTAINER (menu));
+        #if HAVE_HILDON
+        gtk_widget_hide (g_list_nth_data (items, 2));
+        gtk_widget_set_no_show_all (g_list_nth_data (items, 2), TRUE);
+        gtk_widget_hide (g_list_nth_data (items, 3));
+        gtk_widget_set_no_show_all (g_list_nth_data (items, 3), TRUE);
+        #endif
         menuitem = (GtkWidget*)g_list_nth_data (items, 3);
         /* hack to localize menu item */
         if (GTK_IS_BIN (menuitem))
@@ -1373,24 +1863,47 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
             }
         }
         g_list_free (items);
+        #endif
+
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "UndoTabClose"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
+        gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
 
-        menuitem = gtk_separator_menu_item_new ();
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-        gtk_widget_show (menuitem);
+        #if WEBKIT_CHECK_VERSION (1, 1, 15)
+        /* if (webkit_web_view_get_main_frame (web_view) != frame_under_mouse)
+        {
+            midori_view_insert_menu_item (menu_shell, -1,
+                _("Open _Frame in New Tab"), NULL,
+                G_CALLBACK (midori_web_view_menu_frame_new_tab_activate_cb), widget);
+            midori_view_insert_menu_item (menu_shell, -1,
+                _("Open _Frame in New Window"), NULL,
+                G_CALLBACK (midori_web_view_menu_frame_new_window_activate_cb), widget);
+        } */
+
+        /* FIXME: There is currently no API to inspect an URI
+        midori_view_insert_menu_item (menu_shell, -1,
+            _("Inspect page"), NULL,
+            G_CALLBACK (midori_web_view_menu_inspect_page_activate_cb), widget); */
+        #endif
+
+        if (!g_object_get_data (G_OBJECT (browser), "midori-toolbars-visible"))
+        {
+            menuitem = sokoke_action_create_popup_menu_item (
+                gtk_action_group_get_action (actions, "Menubar"));
+            gtk_menu_shell_append (menu_shell, menuitem);
+        }
 
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "ZoomIn"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "ZoomOut"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
 
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "Encoding"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
         if (GTK_WIDGET_IS_SENSITIVE (menuitem))
         {
             GtkWidget* sub_menu;
@@ -1403,7 +1916,6 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
               { "EncodingWestern" },
               { "EncodingCustom" },
             };
-            guint i;
 
             sub_menu = gtk_menu_new ();
             gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), sub_menu);
@@ -1416,34 +1928,66 @@ webkit_web_view_populate_popup_cb (WebKitWebView* web_view,
             }
         }
 
-        menuitem = gtk_separator_menu_item_new ();
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-        gtk_widget_show (menuitem);
-
+        #if !HAVE_HILDON
+        gtk_menu_shell_append (menu_shell, gtk_separator_menu_item_new ());
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "BookmarkAdd"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
 
         if (view->speed_dial_in_new_tabs && !midori_view_is_blank (view))
         {
             menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "AddSpeedDial"));
-            gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+            gtk_menu_shell_append (menu_shell, menuitem);
         }
+        menuitem = sokoke_action_create_popup_menu_item (
+                gtk_action_group_get_action (actions, "AddDesktopShortcut"));
+        gtk_menu_shell_append (menu_shell, menuitem);
+        #endif
 
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "SaveAs"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
         /* Currently views that don't support source, don't support
            saving either. If that changes, we need to think of something. */
         if (!midori_view_can_view_source (view))
             gtk_widget_set_sensitive (menuitem, FALSE);
         menuitem = sokoke_action_create_popup_menu_item (
                 gtk_action_group_get_action (actions, "SourceView"));
-        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
+        gtk_menu_shell_append (menu_shell, menuitem);
     }
+
+    gtk_widget_show_all (menu);
 }
 
+#if HAVE_HILDON
+static void
+midori_view_web_view_tap_and_hold_cb (GtkWidget*  web_view,
+                                      MidoriView* view)
+{
+    gint x, y;
+    GdkEvent event;
+    gboolean result;
+
+    /* Emulate a pointer motion above the tap position
+      and a right click at the according position. */
+    gdk_window_get_pointer (web_view->window, &x, &y, NULL);
+    event.any.type = GDK_MOTION_NOTIFY;
+    event.any.window = web_view->window;
+    event.motion.x = x;
+    event.motion.y = y;
+    g_signal_emit_by_name (web_view, "motion-notify-event", &event, &result);
+
+    event.any.type = GDK_BUTTON_PRESS;
+    event.any.window = web_view->window;
+    event.button.axes = NULL;
+    event.button.x = x;
+    event.button.y = y;
+    event.button.button = 3;
+    g_signal_emit_by_name (web_view, "button-press-event", &event, &result);
+}
+#endif
+
 static gboolean
 webkit_web_view_web_view_ready_cb (GtkWidget*  web_view,
                                    MidoriView* view)
@@ -1660,6 +2204,48 @@ webkit_web_view_window_object_cleared_cb (GtkWidget*      web_view,
     g_signal_emit (view, signals[CONTEXT_READY], 0, js_context);
 }
 
+static void
+midori_view_hadjustment_notify_value_cb (GtkAdjustment* hadjustment,
+                                         GParamSpec*    pspec,
+                                         MidoriView*    view)
+{
+    gint value = (gint)gtk_adjustment_get_value (hadjustment);
+    if (view->item)
+        katze_item_set_meta_integer (view->item, "scrollh", value);
+}
+
+static void
+midori_view_notify_hadjustment_cb (MidoriView* view,
+                                   GParamSpec* pspec,
+                                   gpointer    data)
+{
+    GtkAdjustment* hadjustment = katze_object_get_object (view, "hadjustment");
+    g_signal_connect (hadjustment, "notify::value",
+        G_CALLBACK (midori_view_hadjustment_notify_value_cb), view);
+    g_object_unref (hadjustment);
+}
+
+static void
+midori_view_vadjustment_notify_value_cb (GtkAdjustment* vadjustment,
+                                         GParamSpec*    pspec,
+                                         MidoriView*    view)
+{
+    gint value = (gint)gtk_adjustment_get_value (vadjustment);
+    if (view->item)
+        katze_item_set_meta_integer (view->item, "scrollv", value);
+}
+
+static void
+midori_view_notify_vadjustment_cb (MidoriView* view,
+                                   GParamSpec* pspec,
+                                   gpointer    data)
+{
+    GtkAdjustment* vadjustment = katze_object_get_object (view, "vadjustment");
+    g_signal_connect (vadjustment, "notify::value",
+        G_CALLBACK (midori_view_vadjustment_notify_value_cb), view);
+    g_object_unref (vadjustment);
+}
+
 static void
 midori_view_init (MidoriView* view)
 {
@@ -1672,18 +2258,27 @@ midori_view_init (MidoriView* view)
     view->load_status = MIDORI_LOAD_FINISHED;
     view->minimized = FALSE;
     view->statusbar_text = NULL;
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
+    view->hit_test = NULL;
+    #endif
     view->link_uri = NULL;
     view->selected_text = NULL;
     view->news_feeds = katze_array_new (KATZE_TYPE_ITEM);
 
     view->item = NULL;
+    view->scrollh = view->scrollv = -2;
+    view->back_forward_set = FALSE;
 
     view->download_manager = NULL;
     view->news_aggregator = NULL;
     view->web_view = NULL;
 
-    /* Adjustments are not created automatically */
+    /* Adjustments are not created initially, but overwritten later */
     g_object_set (view, "hadjustment", NULL, "vadjustment", NULL, NULL);
+    g_signal_connect (view, "notify::hadjustment",
+        G_CALLBACK (midori_view_notify_hadjustment_cb), view);
+    g_signal_connect (view, "notify::vadjustment",
+        G_CALLBACK (midori_view_notify_vadjustment_cb), view);
 }
 
 static void
@@ -1700,6 +2295,9 @@ midori_view_finalize (GObject* object)
         g_signal_handlers_disconnect_by_func (view->item,
             midori_view_item_meta_data_changed, view);
 
+    if (view->thumb_view)
+        gtk_widget_destroy (view->thumb_view);
+
     katze_assign (view->uri, NULL);
     katze_assign (view->title, NULL);
     katze_object_assign (view->icon, NULL);
@@ -1840,23 +2438,26 @@ midori_view_new (KatzeNet* net)
 static void
 _midori_view_update_settings (MidoriView* view)
 {
-    gboolean zoom_text_and_images;
+    gboolean zoom_text_and_images, kinetic_scrolling;
 
     g_object_get (view->settings,
         "speed-dial-in-new-tabs", &view->speed_dial_in_new_tabs,
         "download-manager", &view->download_manager,
         "news-aggregator", &view->news_aggregator,
         "zoom-text-and-images", &zoom_text_and_images,
+        "kinetic-scrolling", &kinetic_scrolling,
         "close-buttons-on-tabs", &view->close_buttons_on_tabs,
         "open-new-pages-in", &view->open_new_pages_in,
+        "ask-for-destination-folder", &view->ask_for_destination_folder,
         "middle-click-opens-selection", &view->middle_click_opens_selection,
         "open-tabs-in-the-background", &view->open_tabs_in_the_background,
         "find-while-typing", &view->find_while_typing,
         NULL);
 
     if (view->web_view)
-        g_object_set (view->web_view, "full-content-zoom",
-                      zoom_text_and_images, NULL);
+        g_object_set (view->web_view,
+                      "full-content-zoom", zoom_text_and_images, NULL);
+    g_object_set (view, "kinetic-scrolling", kinetic_scrolling, NULL);
 }
 
 static void
@@ -1889,6 +2490,11 @@ midori_view_settings_notify_cb (MidoriWebSettings* settings,
             g_object_set (view->web_view, "full-content-zoom",
                           g_value_get_boolean (&value), NULL);
     }
+    else if (name == g_intern_string ("kinetic-scrolling"))
+    {
+        g_object_set (view, "kinetic-scrolling",
+                      g_value_get_boolean (&value), NULL);
+    }
     else if (name == g_intern_string ("close-buttons-on-tabs"))
     {
         view->close_buttons_on_tabs = g_value_get_boolean (&value);
@@ -1899,6 +2505,10 @@ midori_view_settings_notify_cb (MidoriWebSettings* settings,
     {
         view->open_new_pages_in = g_value_get_enum (&value);
     }
+    else if (name == g_intern_string ("ask-for-destination-folder"))
+    {
+        view->ask_for_destination_folder = g_value_get_boolean (&value);
+    }
     else if (name == g_intern_string ("middle-click-opens-selection"))
     {
         view->middle_click_opens_selection = g_value_get_boolean (&value);
@@ -2056,7 +2666,13 @@ midori_view_construct_web_view (MidoriView* view)
     webkit_web_view_open (WEBKIT_WEB_VIEW (view->web_view), "");
     web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view));
 
+    #if HAVE_HILDON
+    gtk_widget_tap_and_hold_setup (view->web_view, NULL, NULL, 0);
+    #endif
+
     g_object_connect (view->web_view,
+                      "signal::navigation-policy-decision-requested",
+                      midori_view_web_view_navigation_decision_cb, view,
                       "signal::load-started",
                       webkit_web_view_load_started_cb, view,
                       "signal::load-committed",
@@ -2076,6 +2692,8 @@ midori_view_construct_web_view (MidoriView* view)
                       #endif
                       "signal::status-bar-text-changed",
                       webkit_web_view_statusbar_text_changed_cb, view,
+                      "signal::leave-notify-event",
+                      midori_view_web_view_leave_notify_event_cb, view,
                       "signal::hovering-over-link",
                       webkit_web_view_hovering_over_link_cb, view,
                       "signal::button-press-event",
@@ -2086,6 +2704,10 @@ midori_view_construct_web_view (MidoriView* view)
                       gtk_widget_scroll_event_cb, view,
                       "signal::populate-popup",
                       webkit_web_view_populate_popup_cb, view,
+                      #if HAVE_HILDON
+                      "signal::tap-and-hold",
+                      midori_view_web_view_tap_and_hold_cb, view,
+                      #endif
                       "signal::console-message",
                       webkit_web_view_console_message_cb, view,
                       "signal::window-object-cleared",
@@ -2278,7 +2900,7 @@ midori_view_set_uri (MidoriView*  view,
         }
         else
         {
-            katze_assign (view->uri, g_strdup (uri));
+            katze_assign (view->uri, sokoke_format_uri_for_display (uri));
             g_object_notify (G_OBJECT (view), "uri");
             if (view->item)
                 katze_item_set_uri (view->item, uri);
@@ -2918,6 +3540,16 @@ midori_view_item_meta_data_changed (KatzeItem*   item,
     if (g_str_equal (key, "minimized"))
         g_object_set (view, "minimized",
             katze_item_get_meta_string (item, key) != NULL, NULL);
+    else if (g_str_has_prefix (key, "scroll"))
+    {
+        gint value = katze_item_get_meta_integer (item, key);
+        if (view->scrollh == -2 && key[6] == 'h')
+            view->scrollh = value > -1 ? value : 0;
+        else if (view->scrollv == -2 && key[6] == 'v')
+            view->scrollv = value > -1 ? value : 0;
+        else
+            return;
+    }
 }
 
 /**
@@ -2994,7 +3626,7 @@ midori_view_can_zoom_in (MidoriView* view)
 {
     g_return_val_if_fail (MIDORI_IS_VIEW (view), FALSE);
 
-    return view->web_view != NULL;
+    return view->web_view != NULL && !g_str_has_prefix (view->mime_type, "image/");
 }
 
 gboolean
@@ -3002,7 +3634,7 @@ midori_view_can_zoom_out (MidoriView* view)
 {
     g_return_val_if_fail (MIDORI_IS_VIEW (view), FALSE);
 
-    return view->web_view != NULL;
+    return view->web_view != NULL && !g_str_has_prefix (view->mime_type, "image/");
 }
 
 gboolean
@@ -3211,6 +3843,9 @@ midori_view_print (MidoriView* view)
     #if WEBKIT_CHECK_VERSION (1, 1, 5)
     operation = gtk_print_operation_new ();
     gtk_print_operation_set_custom_tab_label (operation, _("Features"));
+#if GTK_CHECK_VERSION (2, 18, 0)
+    gtk_print_operation_set_embed_page_setup (operation, TRUE);
+#endif
     g_signal_connect (operation, "create-custom-widget",
         G_CALLBACK (midori_view_print_create_custom_widget_cb), view);
     g_signal_connect (operation, "custom-widget-apply",
@@ -3456,7 +4091,14 @@ thumb_view_load_status_cb (MidoriView* thumb_view,
     g_free (encoded);
     g_free (file_content);
 
+    g_signal_handlers_disconnect_by_func (
+       thumb_view, thumb_view_load_status_cb, view);
+
+    /* Destroying the view here may trigger a WebKitGTK+ bug */
+    #if !WEBKIT_CHECK_VERSION (1, 1, 14)
     gtk_widget_destroy (GTK_WIDGET (thumb_view));
+    view->thumb_view = NULL;
+    #endif
 }
 
 /**
@@ -3478,13 +4120,10 @@ midori_view_speed_dial_inject_thumb (MidoriView* view,
     GtkWidget* notebook;
     GtkWidget* label;
 
-    thumb_view = midori_view_new (view->net);
-    settings = g_object_new (MIDORI_TYPE_WEB_SETTINGS, "enable-scripts", FALSE,
-        "enable-plugins", FALSE, "auto-load-images", TRUE, NULL);
-    midori_view_set_settings (MIDORI_VIEW (thumb_view), settings);
     browser = gtk_widget_get_toplevel (GTK_WIDGET (view));
     if (!GTK_IS_WINDOW (browser))
         return;
+
     /* What we are doing here is a bit of a hack. In order to render a
        thumbnail we need a new view and load the url in it. But it has
        to be visible and packed in a container. So we secretly pack it
@@ -3492,12 +4131,22 @@ midori_view_speed_dial_inject_thumb (MidoriView* view,
     notebook = katze_object_get_object (browser, "notebook");
     if (!notebook)
         return;
-    gtk_container_add (GTK_CONTAINER (notebook), thumb_view);
-    /* We use an empty label. It's not invisible but at least hard to spot. */
-    label = gtk_event_box_new ();
-    gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), thumb_view, label);
-    g_object_unref (notebook);
-    gtk_widget_show (thumb_view);
+
+    if (!view->thumb_view)
+    {
+        view->thumb_view = midori_view_new (view->net);
+        gtk_container_add (GTK_CONTAINER (notebook), view->thumb_view);
+        /* We use an empty label. It's not invisible but at least hard to spot. */
+        label = gtk_event_box_new ();
+        gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), view->thumb_view, label);
+        g_object_unref (notebook);
+        gtk_widget_show (view->thumb_view);
+    }
+    thumb_view = view->thumb_view;
+    settings = g_object_new (MIDORI_TYPE_WEB_SETTINGS, "enable-scripts", FALSE,
+        "enable-plugins", FALSE, "auto-load-images", TRUE, NULL);
+    midori_view_set_settings (MIDORI_VIEW (thumb_view), settings);
+
     g_object_set_data (G_OBJECT (thumb_view), "dom-id", dom_id);
     g_signal_connect (thumb_view, "notify::load-status",
         G_CALLBACK (thumb_view_load_status_cb), view);
index 9acc74d0f73eb206bc21eecc987a4f185c0e2013..336a14fb3f71aaca4d810175b1d78702a7a90df0 100644 (file)
@@ -75,6 +75,7 @@ struct _MidoriWebSettings
 
     gboolean zoom_text_and_images;
     gboolean find_while_typing;
+    gboolean kinetic_scrolling;
     MidoriAcceptCookies accept_cookies;
     gboolean original_cookies_only;
     gint maximum_cookie_age;
@@ -151,6 +152,7 @@ enum
 
     PROP_ZOOM_TEXT_AND_IMAGES,
     PROP_FIND_WHILE_TYPING,
+    PROP_KINETIC_SCROLLING,
     PROP_ACCEPT_COOKIES,
     PROP_ORIGINAL_COOKIES_ONLY,
     PROP_MAXIMUM_COOKIE_AGE,
@@ -286,6 +288,7 @@ midori_identity_get_type (void)
         static const GEnumValue values[] = {
          { MIDORI_IDENT_MIDORI, "MIDORI_IDENT_MIDORI", N_("Midori") },
          { MIDORI_IDENT_SAFARI, "MIDORI_IDENT_SAFARI", N_("Safari") },
+         { MIDORI_IDENT_IPHONE, "MIDORI_IDENT_IPHONE", N_("iPhone") },
          { MIDORI_IDENT_FIREFOX, "MIDORI_IDENT_FIREFOX", N_("Firefox") },
          { MIDORI_IDENT_EXPLORER, "MIDORI_IDENT_EXPLORER", N_("Internet Explorer") },
          { MIDORI_IDENT_CUSTOM, "MIDORI_IDENT_CUSTOM", N_("Custom...") },
@@ -519,7 +522,7 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      "toolbar-items",
                                      _("Toolbar Items"),
                                      _("The items to show on the toolbar"),
-                                     "Back,Forward,ReloadStop,Location,Panel,Search,Trash",
+                                     "TabNew,Back,Forward,ReloadStop,Location,Panel,Search,Trash",
                                      flags));
 
     g_object_class_install_property (gobject_class,
@@ -634,6 +637,8 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
      *
      * Whether to ask for the destination folder when downloading a file.
      *
+     * Note: Only since 0.2.0 is this value actually used.
+     *
      * Since: 0.1.7
      */
     g_object_class_install_property (gobject_class,
@@ -643,7 +648,7 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      _("Ask for the destination folder"),
         _("Whether to ask for the destination folder when downloading a file"),
                                      FALSE,
-    #if WEBKIT_CHECK_VERSION (1, 1, 3)
+    #if WEBKIT_CHECK_VERSION (1, 1, 15)
                                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
     #else
                                      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
@@ -830,6 +835,22 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      FALSE,
                                      flags));
 
+    /**
+    * MidoriWebSettings:kinetic-scrolling:
+    *
+    * Whether scrolling should kinetically move according to speed.
+    *
+    * Since: 0.2.0
+    */
+    g_object_class_install_property (gobject_class,
+                                     PROP_KINETIC_SCROLLING,
+                                     g_param_spec_boolean (
+                                     "kinetic-scrolling",
+                                     _("Kinetic scrolling"),
+                                     _("Whether scrolling should kinetically move according to speed"),
+                                     TRUE,
+                                     flags));
+
     g_object_class_install_property (gobject_class,
                                      PROP_ACCEPT_COOKIES,
                                      g_param_spec_enum (
@@ -1022,6 +1043,7 @@ midori_web_settings_init (MidoriWebSettings* web_settings)
     web_settings->open_popups_in_tabs = TRUE;
     web_settings->remember_last_form_inputs = TRUE;
     web_settings->remember_last_downloaded_files = TRUE;
+    web_settings->kinetic_scrolling = TRUE;
     web_settings->auto_detect_proxy = TRUE;
 
     g_signal_connect (web_settings, "notify::default-encoding",
@@ -1109,19 +1131,23 @@ generate_ident_string (MidoriIdentity identify_as)
         #define WEBKIT_USER_AGENT_MAJOR_VERSION 532
         #define WEBKIT_USER_AGENT_MINOR_VERSION 1
     #endif
-
-    const gchar* webcore = "WebKit/" G_STRINGIFY (WEBKIT_USER_AGENT_MAJOR_VERSION)
-        "." G_STRINGIFY (WEBKIT_USER_AGENT_MINOR_VERSION) "+";
+    const int webcore_major = WEBKIT_USER_AGENT_MAJOR_VERSION;
+    const int webcore_minor = WEBKIT_USER_AGENT_MINOR_VERSION;
 
     switch (identify_as)
     {
     case MIDORI_IDENT_MIDORI:
-        return g_strdup_printf ("%s (%s; %s; U; %s) %s",
-                                appname, platform, os, lang, webcore);
+        return g_strdup_printf ("%s (%s; %s; U; %s) WebKit/%d.%d+",
+            appname, platform, os, lang, webcore_major, webcore_minor);
     case MIDORI_IDENT_SAFARI:
         return g_strdup_printf ("Mozilla/5.0 (%s; U; %s; %s) "
-            "AppleWebKit/532+ (KHTML, like Gecko) Safari/%s %s",
-                                platform, os, lang, webcore, appname);
+            "AppleWebKit/%d+ (KHTML, like Gecko) Safari/%d.%d+ %s",
+            platform, os, lang, webcore_major, webcore_major, webcore_minor, appname);
+    case MIDORI_IDENT_IPHONE:
+        return g_strdup_printf ("Mozilla/5.0 (iPhone; U; %s; %s) "
+            "AppleWebKit/532+ (KHTML, like Gecko) Version/3.0 Mobile/1A538b "
+            "Safari/419.3 %s",
+                                os, lang, appname);
     case MIDORI_IDENT_FIREFOX:
         return g_strdup_printf ("Mozilla/5.0 (%s; U; %s; %s; rv:1.8.1) "
             "Gecko/20061010 Firefox/2.0 %s",
@@ -1296,6 +1322,9 @@ midori_web_settings_set_property (GObject*      object,
     case PROP_FIND_WHILE_TYPING:
         web_settings->find_while_typing = g_value_get_boolean (value);
         break;
+    case PROP_KINETIC_SCROLLING:
+        web_settings->kinetic_scrolling = g_value_get_boolean (value);
+        break;
     case PROP_ACCEPT_COOKIES:
         web_settings->accept_cookies = g_value_get_enum (value);
         break;
@@ -1499,6 +1528,9 @@ midori_web_settings_get_property (GObject*    object,
     case PROP_FIND_WHILE_TYPING:
         g_value_set_boolean (value, web_settings->find_while_typing);
         break;
+    case PROP_KINETIC_SCROLLING:
+        g_value_set_boolean (value, web_settings->kinetic_scrolling);
+        break;
     case PROP_ACCEPT_COOKIES:
         g_value_set_enum (value, web_settings->accept_cookies);
         break;
index 91d88a08cd7f199ee4e2e183be2f1f6210bb7e42..82c79390d2d8dfd1b9f05dc6b36bf861cedf10e4 100644 (file)
@@ -133,9 +133,10 @@ typedef enum
 {
     MIDORI_IDENT_MIDORI,
     MIDORI_IDENT_SAFARI,
+    MIDORI_IDENT_IPHONE,
     MIDORI_IDENT_FIREFOX,
     MIDORI_IDENT_EXPLORER,
-    MIDORI_IDENT_CUSTOM
+    MIDORI_IDENT_CUSTOM,
 } MidoriIdentity;
 
 GType
index 1bc9aa1992883c978b9a0d8964d0a1eee8a48a25..b2f4b59aea1bcd82e92f18fad5565acddb32c367 100644 (file)
@@ -185,41 +185,31 @@ sokoke_spawn_program (const gchar* command,
     return TRUE;
 }
 
-static gchar*
-sokoke_idn_to_punycode (gchar* uri)
+/**
+ * sokoke_hostname_from_uri:
+ * @uri: an URI string
+ * @path: location of a string pointer
+ *
+ * Returns the hostname of the specified URI,
+ * and stores the path in @path.
+ * @path is at least set to ""
+ *
+ * Return value: a newly allocated hostname
+ **/
+gchar*
+sokoke_hostname_from_uri (const gchar* uri,
+                          gchar**      path)
 {
-    #if HAVE_LIBIDN
-    gchar* proto;
     gchar* hostname;
-    gchar* path;
-    char *s;
-    uint32_t *q;
-    int rc;
-    gchar *result;
 
-    if ((proto = g_utf8_strchr (uri, -1, ':')))
-    {
-        gulong offset;
-        gchar* buffer;
-
-        /* 'file' URIs don't have a hostname */
-        if (!strcmp (proto, "file"))
-            return uri;
-
-        offset = g_utf8_pointer_to_offset (uri, proto);
-        buffer = g_malloc0 (offset + 1);
-        g_utf8_strncpy (buffer, uri, offset);
-        proto = buffer;
-    }
-
-    path = NULL;
+    *path = "";
     if ((hostname = g_utf8_strchr (uri, -1, '/')))
     {
         if (hostname[1] == '/')
             hostname += 2;
-        if ((path = g_utf8_strchr (hostname, -1, '/')))
+        if ((*path = g_utf8_strchr (hostname, -1, '/')))
         {
-            gulong offset = g_utf8_pointer_to_offset (hostname, path);
+            gulong offset = g_utf8_pointer_to_offset (hostname, *path);
             gchar* buffer = g_malloc0 (offset + 1);
             g_utf8_strncpy (buffer, hostname, offset);
             hostname = buffer;
@@ -229,35 +219,90 @@ sokoke_idn_to_punycode (gchar* uri)
     }
     else
         hostname = g_strdup (uri);
+    return hostname;
+}
+
+/**
+ * sokoke_hostname_to_ascii:
+ * @uri: an URI string
+ *
+ * The specified hostname is encoded if it is not ASCII.
+ *
+ * If no IDN support is available at compile time,
+ * the hostname will be returned unaltered.
+ *
+ * Return value: a newly allocated hostname
+ **/
+static gchar*
+sokoke_hostname_to_ascii (const gchar* hostname)
+{
+    #ifdef HAVE_LIBSOUP_2_27_90
+    return g_hostname_to_ascii (hostname);
+    #elif HAVE_LIBIDN
+    uint32_t* q;
+    char* encoded;
+    int rc;
 
-    if (!(q = stringprep_utf8_to_ucs4 (hostname, -1, NULL)))
+    if ((q = stringprep_utf8_to_ucs4 (hostname, -1, NULL)))
     {
-        g_free (proto);
-        g_free (hostname);
-        return uri;
+        rc = idna_to_ascii_4z (q, &encoded, IDNA_ALLOW_UNASSIGNED);
+        free (q);
+        if (rc == IDNA_SUCCESS)
+            return encoded;
     }
+    #endif
+    return g_strdup (hostname);
+}
+
+/**
+ * sokoke_uri_to_ascii:
+ * @uri: an URI string
+ *
+ * The specified URI is parsed and the hostname
+ * part of it is encoded if it is not ASCII.
+ *
+ * If no IDN support is available at compile time,
+ * the URI will be returned unaltered.
+ *
+ * Return value: a newly allocated URI
+ **/
+gchar*
+sokoke_uri_to_ascii (const gchar* uri)
+{
+    gchar* proto;
 
-    rc = idna_to_ascii_4z (q, &s, IDNA_ALLOW_UNASSIGNED);
-    free (q);
-    if (rc != IDNA_SUCCESS)
+    if ((proto = g_utf8_strchr (uri, -1, ':')))
     {
-        g_free (proto);
-        g_free (hostname);
-        return uri;
+        gulong offset;
+        gchar* buffer;
+
+        offset = g_utf8_pointer_to_offset (uri, proto);
+        buffer = g_malloc0 (offset + 1);
+        g_utf8_strncpy (buffer, uri, offset);
+        proto = buffer;
     }
 
-    if (proto)
+    gchar* path;
+    gchar* hostname = sokoke_hostname_from_uri (uri, &path);
+    gchar* encoded = sokoke_hostname_to_ascii (hostname);
+
+    if (encoded)
     {
-        result = g_strconcat (proto, "://", s, path ? path : "", NULL);
-        g_free (proto);
-        if (path)
-            g_free (hostname);
+        gchar* res = g_strconcat (proto ? proto : "", proto ? "://" : "",
+                                  encoded, path, NULL);
+        g_free (encoded);
+        return res;
     }
-    else
-        result = g_strdup (s);
-    g_free (uri);
-    free (s);
+    g_free (hostname);
+    return g_strdup (uri);
+}
 
+static gchar*
+sokoke_idn_to_punycode (gchar* uri)
+{
+    #if HAVE_LIBIDN
+    gchar* result = sokoke_uri_to_ascii (uri);
+    g_free (uri);
     return result;
     #else
     return uri;
@@ -294,6 +339,16 @@ gchar* sokoke_search_uri (const gchar* uri,
     return search;
 }
 
+/**
+ * sokoke_magic_uri:
+ * @uri: a string typed by a user
+ * @search_engines: search engines
+ *
+ * Takes a string that was typed by a user,
+ * guesses what it is, and returns an URI.
+ *
+ * Return value: a newly allocated URI
+ **/
 gchar*
 sokoke_magic_uri (const gchar* uri,
                   KatzeArray*  search_engines)
@@ -319,8 +374,8 @@ sokoke_magic_uri (const gchar* uri,
     if (g_strstr_len (uri, 8, "://"))
         return sokoke_idn_to_punycode (g_strdup (uri));
 
-    /* Do we have a domain, ip address or localhost? */
-    if (g_ascii_isdigit (uri[0]))
+    /* Do we have an IP address? */
+    if (g_ascii_isdigit (uri[0]) && g_strstr_len (uri, 4, "."))
         return g_strconcat ("http://", uri, NULL);
     search = NULL;
     if (!strchr (uri, ' ') &&
@@ -358,6 +413,50 @@ sokoke_magic_uri (const gchar* uri,
     return search;
 }
 
+
+/**
+ * sokoke_format_uri_for_display:
+ * @uri: an URI string
+ *
+ * Formats an URI for display, for instance by converting
+ * percent encoded characters and by decoding punycode.
+ *
+ * Return value: a newly allocated URI
+ **/
+gchar*
+sokoke_format_uri_for_display (const gchar* uri)
+{
+    if (uri && g_str_has_prefix (uri, "http://"))
+    {
+        gchar* unescaped = g_uri_unescape_string (uri, NULL);
+        #ifdef HAVE_LIBSOUP_2_27_90
+        gchar* path;
+        gchar* hostname = sokoke_hostname_from_uri (unescaped, &path);
+        gchar* decoded = g_hostname_to_unicode (hostname);
+
+        if (decoded)
+        {
+            gchar* result = g_strconcat ("http://", decoded, path, NULL);
+            g_free (unescaped);
+            g_free (decoded);
+            g_free (hostname);
+            return result;
+        }
+        g_free (hostname);
+        return unescaped;
+        #elif HAVE_LIBIDN
+        gchar* decoded;
+        if (!idna_to_unicode_8z8z (unescaped, &decoded, 0) == IDNA_SUCCESS)
+            return unescaped;
+        g_free (unescaped);
+        return decoded;
+        #else
+        return unescaped;
+        #endif
+    }
+    return g_strdup (uri);
+}
+
 void
 sokoke_combo_box_add_strings (GtkComboBox* combobox,
                               const gchar* label_first, ...)
@@ -866,7 +965,6 @@ sokoke_register_stock_items (void)
         { STOCK_HISTORY,        N_("_History"), 0, 0, GTK_STOCK_SORT_ASCENDING },
         { STOCK_HOMEPAGE,       N_("_Homepage"), 0, 0, GTK_STOCK_HOME },
         { STOCK_SCRIPTS,        N_("_Userscripts"), 0, 0, GTK_STOCK_EXECUTE },
-        { STOCK_STYLES,         N_("User_styles"), 0, 0, GTK_STOCK_SELECT_COLOR },
         { STOCK_TAB_NEW,        N_("New _Tab"), 0, 0, GTK_STOCK_ADD },
         { STOCK_TRANSFERS,      N_("_Transfers"), 0, 0, GTK_STOCK_SAVE },
         { STOCK_PLUGINS,        N_("Netscape p_lugins"), 0, 0, GTK_STOCK_CONVERT },
@@ -964,6 +1062,7 @@ sokoke_remove_path (const gchar* path,
 
 /**
  * sokoke_find_config_filename:
+ * @folder: a subfolder
  * @filename: a filename or relative path
  *
  * Looks for the specified filename in the system config
@@ -972,20 +1071,24 @@ sokoke_remove_path (const gchar* path,
  * Return value: a full path
  **/
 gchar*
-sokoke_find_config_filename (const gchar* filename)
+sokoke_find_config_filename (const gchar* folder,
+                             const gchar* filename)
 {
     const gchar* const* config_dirs = g_get_system_config_dirs ();
     guint i = 0;
     const gchar* config_dir;
 
+    if (!folder)
+        folder = "";
+
     while ((config_dir = config_dirs[i++]))
     {
-        gchar* path = g_build_filename (config_dir, PACKAGE_NAME, filename, NULL);
+        gchar* path = g_build_filename (config_dir, PACKAGE_NAME, folder, filename, NULL);
         if (g_file_test (path, G_FILE_TEST_EXISTS))
             return path;
         g_free (path);
     }
-    return g_build_filename (SYSCONFDIR, "xdg", PACKAGE_NAME, filename, NULL);
+    return g_build_filename (SYSCONFDIR, "xdg", PACKAGE_NAME, folder, filename, NULL);
 }
 
 /**
index 9deee903bb8ebbb95bf78c172ae1b75a107064b6..f01de6ccb86765639cfa7e22bf28e928c6c457f9 100644 (file)
@@ -41,10 +41,20 @@ sokoke_spawn_program                    (const gchar*    command,
 gchar* sokoke_search_uri                (const gchar*    uri,
                                          const gchar*    keywords);
 
+gchar*
+sokoke_hostname_from_uri                (const gchar*    uri,
+                                         gchar**         path);
+
+gchar*
+sokoke_uri_to_ascii                     (const gchar*    uri);
+
 gchar*
 sokoke_magic_uri                        (const gchar*    uri,
                                          KatzeArray*     search_engines);
 
+gchar*
+sokoke_format_uri_for_display           (const gchar*    uri);
+
 typedef enum {
     SOKOKE_MENU_POSITION_CURSOR = 0,
     SOKOKE_MENU_POSITION_LEFT,
@@ -152,7 +162,8 @@ sokoke_remove_path                      (const gchar*    path,
                                          gboolean        ignore_errors);
 
 gchar*
-sokoke_find_config_filename             (const gchar*    filename);
+sokoke_find_config_filename             (const gchar*    folder,
+                                         const gchar*    filename);
 
 gchar*
 sokoke_find_data_filename               (const gchar*    filename);
diff --git a/module.xml b/module.xml
new file mode 100644 (file)
index 0000000..bfe1074
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+  xmlns:foaf="http://xmlns.com/foaf/0.1/"
+  xmlns:gnome="http://api.gnome.org/doap-extensions#"
+  xmlns="http://usefulinc.com/ns/doap#">
+
+  <name xml:lang="en">midori</name>
+  <shortdesc xml:lang="en">Midori is a lightweight web browser</shortdesc>
+  <homepage rdf:resource="http://www.twotoasts.de"/>
+  <mailing-list rdf:resource="http://foo-projects.org/mailman/listinfo/xfce"/>
+
+  <maintainer>
+    <foaf:Person>
+      <foaf:name>Christian Dywan</foaf:name>
+      <foaf:mbox>christian@twotoasts.de</foaf:mbox>
+      <gnome:userid>kalikiana</gnome:userid>
+    </foaf:Person>
+  </maintainer>
+</Project>
index cd2d057ab93287a5d033e94db79774d7d8fa8862..0d1c092e37822f232aa3d2101280835a26985193 100644 (file)
@@ -29,7 +29,6 @@ struct _MidoriAddons
 {
     GtkVBox parent_instance;
 
-    MidoriAddonKind kind;
     GtkWidget* web_widget;
     GtkWidget* toolbar;
     GtkWidget* treeview;
@@ -137,23 +136,13 @@ midori_addons_class_init (MidoriAddonsClass* class)
 static const gchar*
 midori_addons_get_label (MidoriViewable* viewable)
 {
-    if (MIDORI_ADDONS (viewable)->kind == MIDORI_ADDON_USER_SCRIPTS)
-        return _("Userscripts");
-    else if (MIDORI_ADDONS (viewable)->kind == MIDORI_ADDON_USER_STYLES)
-        return _("Userstyles");
-    else
-        return NULL;
+    return _("Userscripts");
 }
 
 static const gchar*
 midori_addons_get_stock_id (MidoriViewable* viewable)
 {
-    if (MIDORI_ADDONS (viewable)->kind == MIDORI_ADDON_USER_SCRIPTS)
-        return STOCK_SCRIPTS;
-    else if (MIDORI_ADDONS (viewable)->kind == MIDORI_ADDON_USER_STYLES)
-        return STOCK_STYLES;
-    else
-        return NULL;
+    return STOCK_SCRIPTS;
 }
 
 static void
@@ -175,7 +164,7 @@ midori_addons_set_property (GObject*      object,
     switch (prop_id)
     {
     case PROP_KIND:
-        addons->kind = g_value_get_enum (value);
+        /* Ignored */
         break;
     case PROP_WEB_WIDGET:
         katze_object_assign (addons->web_widget, g_value_dup_object (value));
@@ -197,7 +186,7 @@ midori_addons_get_property (GObject*    object,
     switch (prop_id)
     {
     case PROP_KIND:
-        g_value_set_enum (value, addons->kind);
+        g_value_set_enum (value, MIDORI_ADDON_USER_SCRIPTS);
         break;
     case PROP_WEB_WIDGET:
         g_value_set_object (value, addons->web_widget);
@@ -208,57 +197,31 @@ midori_addons_get_property (GObject*    object,
     }
 }
 
-static const gchar*
-_addons_get_folder (MidoriAddons* addons)
-{
-    switch (addons->kind)
-    {
-    case MIDORI_ADDON_USER_SCRIPTS:
-        return "scripts";
-    case MIDORI_ADDON_USER_STYLES:
-        return "styles";
-    default:
-        return NULL;
-    }
-}
-
-static const gchar*
-_addons_get_extension (MidoriAddons* addons)
-{
-    switch (addons->kind)
-    {
-    case MIDORI_ADDON_USER_SCRIPTS:
-        return ".js";
-    case MIDORI_ADDON_USER_STYLES:
-        return ".css";
-    default:
-        return NULL;
-    }
-}
-
 static GSList*
 _addons_get_directories (MidoriAddons* addons)
 {
+    const gchar* folders[] = { "scripts", "styles" };
     GSList *directories;
+    guint i;
     const char* const* datadirs;
-    const gchar* folder;
     gchar* path;
 
-    folder = _addons_get_folder (addons);
-
-    /* user data dir */
-    path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (),
-                         PACKAGE_NAME, folder, NULL);
-    directories = g_slist_prepend (NULL, path);
+    directories = NULL;
 
-    /* system data dirs */
-    datadirs = g_get_system_data_dirs ();
-    while (*datadirs)
+    for (i = 0; i < G_N_ELEMENTS (folders); i++)
     {
-        path = g_build_path (G_DIR_SEPARATOR_S, *datadirs,
-                             PACKAGE_NAME, folder, NULL);
+        path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_data_dir (),
+                             PACKAGE_NAME, folders[i], NULL);
         directories = g_slist_prepend (directories, path);
-        datadirs++;
+
+        datadirs = g_get_system_data_dirs ();
+        while (*datadirs)
+        {
+            path = g_build_path (G_DIR_SEPARATOR_S, *datadirs,
+                                 PACKAGE_NAME, folders[i], NULL);
+            directories = g_slist_prepend (directories, path);
+            datadirs++;
+        }
     }
 
     return directories;
@@ -269,8 +232,6 @@ _addons_get_files (MidoriAddons* addons)
 {
     GSList* files;
     GDir* addon_dir;
-    const gchar* folder;
-    const gchar* extension;
     GSList* list;
     GSList* directories;
     const gchar* filename;
@@ -278,8 +239,6 @@ _addons_get_files (MidoriAddons* addons)
     gchar* fullname;
 
     files = NULL;
-    folder = _addons_get_folder (addons);
-    extension = _addons_get_extension (addons);
 
     directories = _addons_get_directories (addons);
     list = directories;
@@ -290,7 +249,8 @@ _addons_get_files (MidoriAddons* addons)
         {
             while ((filename = g_dir_read_name (addon_dir)))
             {
-                if (g_str_has_suffix (filename, extension))
+                if (g_str_has_suffix (filename, ".js")
+                    || g_str_has_suffix (filename, ".css"))
                 {
                     fullname = g_build_filename (dirname, filename, NULL);
                     files = g_slist_prepend (files, fullname);
@@ -324,8 +284,10 @@ midori_addons_button_add_clicked_cb (GtkToolItem*  toolitem,
         GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (addons))),
         GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
-        "Put scripts in the folder ~/.local/share/midori/%s",
-        _addons_get_folder (addons));
+        _("Copy userscripts to the folder %s and "
+        "copy userstyles to the folder %s."),
+        "~/.local/share/midori/scripts",
+        "~/.local/share/midori/styles");
     gtk_dialog_run (GTK_DIALOG (dialog));
     gtk_widget_destroy (dialog);
 }
@@ -819,7 +781,7 @@ midori_web_widget_context_ready_cb (GtkWidget*         web_widget,
                                     JSGlobalContextRef js_context,
                                     MidoriAddons*      addons)
 {
-    const gchar* uri;
+    gchar* uri;
     GSList* elements;
     struct AddonElement* element;
     gchar* fullname;
@@ -850,7 +812,7 @@ midori_web_widget_context_ready_cb (GtkWidget*         web_widget,
             }
 
         exception = NULL;
-        if (addons->kind == MIDORI_ADDON_USER_SCRIPTS &&
+        if (g_str_has_suffix (fullname, ".js") &&
             !_js_script_from_file (js_context, fullname, &exception))
         {
             message = g_strdup_printf ("console.error ('%s');", exception);
@@ -858,7 +820,7 @@ midori_web_widget_context_ready_cb (GtkWidget*         web_widget,
             g_free (message);
             g_free (exception);
         }
-        else if (addons->kind == MIDORI_ADDON_USER_STYLES &&
+        else if (g_str_has_suffix (fullname, ".css") &&
             !_js_style_from_file (js_context, fullname, &exception))
         {
             message = g_strdup_printf ("console.error ('%s');", exception);
@@ -869,6 +831,8 @@ midori_web_widget_context_ready_cb (GtkWidget*         web_widget,
 
         elements = g_slist_next (elements);
     }
+
+    g_free (uri);
 }
 
 /**
@@ -917,14 +881,15 @@ midori_addons_new (MidoriAddonKind kind,
         monitor = g_file_monitor_directory (directory,
                                             G_FILE_MONITOR_NONE,
                                             NULL, &error);
-        if (!monitor)
+        if (monitor)
+            g_signal_connect (monitor, "changed",
+                G_CALLBACK (midori_addons_directory_monitor_changed), addons);
+        else
         {
-            g_warning ("could not monitor %s: %s", g_file_get_parse_name (directory),
-                       error->message);
+            g_warning (_("Can't monitor folder '%s': %s"),
+                       g_file_get_parse_name (directory), error->message);
             g_error_free (error);
         }
-        g_signal_connect (monitor, "changed",
-            G_CALLBACK (midori_addons_directory_monitor_changed), addons);
         g_object_unref (directory);
     }
     g_slist_free (list);
@@ -1011,7 +976,6 @@ midori_addons_update_elements (MidoriAddons* addons)
     struct AddonElement* element;
 
     g_return_if_fail (MIDORI_IS_ADDONS (addons));
-    g_return_if_fail (addons->kind != MIDORI_ADDON_NONE);
 
     /* FIXME: would GHashTable be better? */
     disabled = g_tree_new ((GCompareFunc)strcmp);
@@ -1042,7 +1006,7 @@ midori_addons_update_elements (MidoriAddons* addons)
         excludes = NULL;
         broken = FALSE;
 
-        if (addons->kind == MIDORI_ADDON_USER_SCRIPTS)
+        if (g_str_has_suffix (fullname, ".js"))
         {
             name = NULL;
             if (!js_metadata_from_file (fullname, &includes, &excludes,
@@ -1055,7 +1019,7 @@ midori_addons_update_elements (MidoriAddons* addons)
                 displayname = name;
             }
         }
-        else if (addons->kind == MIDORI_ADDON_USER_STYLES)
+        else if (g_str_has_suffix (fullname, ".css"))
         {
             if (!css_metadata_from_file (fullname, &includes, &excludes))
                 broken = TRUE;
index 4d77fd22f174cf292ee3e190ac4db081b2c9d2f5..eb7292058cb9be21ee538cb64de274349162aad6 100644 (file)
@@ -1,2 +1,2 @@
 # set of available languages (in alphabetic order)
-ast ca cs da de el en_GB es et fi fr gl he hu id it ja nl pl pt pt_BR ro ru sk sr sr@latin sv tr uk zh_CN zh_TW
+ast ca cs da de el en_GB es et fi fr gl he hu id it ja ko nl pl pt pt_BR ro ru sk sr sr@latin sv tr uk zh_CN zh_TW
index 9a87c5d48ea769edd1e6b487ca1621b7623dc0ca..42792b860c674c60b3522586fbdeb3a080c0dfe3 100644 (file)
@@ -31,11 +31,13 @@ extensions/colorful-tabs.c
 extensions/cookie-manager/cookie-manager.c
 extensions/cookie-manager/cookie-manager-page.c
 extensions/cookie-manager/main.c
+extensions/dnsprefetch.c
 extensions/feed-panel/feed-atom.c
 extensions/feed-panel/feed-panel.c
 extensions/feed-panel/feed-parse.c
 extensions/feed-panel/feed-rss.c
 extensions/feed-panel/main.c
+extensions/formhistory.c
 extensions/mouse-gestures/main.c
 extensions/page-holder.c
 extensions/shortcuts.c
index 2ad78cc6cad0ea18690864356367b3003bd9598d..7b41386af8966b3929e3cd406b9e2effb7dc031a 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: midori\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-07-29 23:58+0200\n"
-"PO-Revision-Date: 2009-09-05 18:02+0100\n"
+"PO-Revision-Date: 2009-09-13 19:12+0100\n"
 "Last-Translator: Carles Muñoz Gorriz <carlesmu@internautas.org>\n"
 "Language-Team: Catalan\n"
 "MIME-Version: 1.0\n"
@@ -34,9 +34,9 @@ msgid "Web Browser"
 msgstr "Navegador web"
 
 #: ../midori/main.c:96
-#, fuzzy, c-format
+#, c-format
 msgid "The configuration couldn't be loaded: %s\n"
-msgstr "No s'ha pogut carregar el fitxer."
+msgstr "No s'ha pogut carregar la configuració: %s\n"
 
 #: ../midori/main.c:151
 #, c-format
@@ -266,9 +266,9 @@ msgid "Stop loading the current page"
 msgstr "Atura la càrrega d'aquesta pàgina"
 
 #: ../midori/midori-browser.c:409
-#, fuzzy, c-format
+#, c-format
 msgid "%d%% loaded"
-msgstr "S'ha carregat"
+msgstr "%d%% carregat"
 
 #: ../midori/midori-browser.c:434
 #, fuzzy, c-format
@@ -925,9 +925,8 @@ msgid "New window"
 msgstr "Nova finestra"
 
 #: ../midori/midori-websettings.c:236
-#, fuzzy
 msgid "Current tab"
-msgstr "/Estil de pestanya/E_stat actual"
+msgstr "Pestanya actual"
 
 #: ../midori/midori-websettings.c:251
 msgid "Default"
@@ -1059,9 +1058,8 @@ msgid "Whether to show the bookmarkbar"
 msgstr "Si es mostra la barra d'adreces d'interès"
 
 #: ../midori/midori-websettings.c:443
-#, fuzzy
 msgid "Show Panel"
-msgstr "Mostra quadre"
+msgstr "Mostra el quadre"
 
 #: ../midori/midori-websettings.c:444
 #, fuzzy
@@ -1464,9 +1462,9 @@ msgid "The private data selected for deletion"
 msgstr ""
 
 #: ../midori/midori-view.c:781
-#, fuzzy, c-format
+#, c-format
 msgid "The page '%s' couldn't be loaded."
-msgstr "No s'ha pogut carregar el fitxer."
+msgstr "No s'ha pogut carregar la pàgina «%s»."
 
 #. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
 #. so reloading via Javascript works but not via API calls.
@@ -1476,66 +1474,56 @@ msgid "Error"
 msgstr "Error"
 
 #: ../midori/midori-view.c:786
-#, fuzzy
 msgid "Try again"
-msgstr "Torneu a provar"
+msgstr "Torneu-ho a provar"
 
 #. i18n: The title of the 404 - Not found error page
 #. Error pages are special, we want to try loading the destination
 #. again, not the error page which isn't even a proper page
 #: ../midori/midori-view.c:818 ../midori/midori-view.c:3017
-#, fuzzy, c-format
+#, c-format
 msgid "Not found - %s"
-msgstr "«%s» no trobat"
+msgstr "No s'ha trobat «%s»"
 
 #: ../midori/midori-view.c:1205
-#, fuzzy
 msgid "Open _Link"
-msgstr "_Obre l'enllaç"
+msgstr "Obre l'_enllaç"
 
 #: ../midori/midori-view.c:1207
-#, fuzzy
 msgid "Open Link in New _Tab"
-msgstr "Obre l'enllaç en una _pestanya nova"
+msgstr "Obre l'enllaç en una nova _pestanya"
 
 #: ../midori/midori-view.c:1224
-#, fuzzy
 msgid "Open Link in New _Window"
-msgstr "Obre l'enllaç a una _nova finestra"
+msgstr "Obre l'enllaç a una nova _finestra"
 
 #: ../midori/midori-view.c:1230
-#, fuzzy
 msgid "_Download Link destination"
-msgstr "%s és un enllaç sense destinació"
+msgstr "_Descarrega el destí de l'enllaç"
 
 #: ../midori/midori-view.c:1236
-#, fuzzy
 msgid "_Save Link destination"
-msgstr "%s és un enllaç sense destinació"
+msgstr "De_sa el destí de l'enllaç"
 
 #: ../midori/midori-view.c:1245
-#, fuzzy
 msgid "Download with Download _Manager"
-msgstr "Navega el sistema de fitxers amb el gestor de fitxers"
+msgstr "Descarrega amb el _gestor de descàrregues"
 
 #: ../midori/midori-view.c:1274
 msgid "Search _with"
 msgstr "Cerca _amb"
 
 #: ../midori/midori-view.c:1306
-#, fuzzy
 msgid "_Search the Web"
-msgstr "Cerca per Web"
+msgstr "_Cerca la Web"
 
 #: ../midori/midori-view.c:1316
-#, fuzzy
 msgid "Open Address in New _Tab"
-msgstr "Obre l'enllaç en una _pestanya nova"
+msgstr "Obre l'adreça en una nova _pestanya"
 
 #: ../midori/midori-view.c:1494
-#, fuzzy
 msgid "Open or download file"
-msgstr "Obre un fitxer existent o crea un nou fitxer."
+msgstr "Obre o descarrega el fitxer"
 
 #: ../midori/midori-view.c:1511
 #, c-format
@@ -1554,9 +1542,9 @@ msgid "Open %s"
 msgstr "Obre %s"
 
 #: ../midori/midori-view.c:1957
-#, fuzzy, c-format
+#, c-format
 msgid "Inspect page - %s"
-msgstr " Pàgina de manual "
+msgstr "Inspecciona la pàgina «%s»"
 
 #: ../midori/midori-view.c:2147
 #, fuzzy
@@ -1594,34 +1582,29 @@ msgid "No documentation installed"
 msgstr "No s'han pogut trobar plantilles"
 
 #: ../midori/midori-view.c:2323
-#, fuzzy
 msgid "Blank page"
-msgstr " Pàgina de manual "
+msgstr "Pàgina en blanc"
 
 #: ../midori/midori-view.c:2551 ../midori/sokoke.c:865
-#, fuzzy
 msgid "New _Tab"
-msgstr "Nova pes_tanya"
+msgstr "Nova _pestanya"
 
 #: ../midori/midori-view.c:2565
-#, fuzzy
 msgid "_Duplicate Tab"
-msgstr "el separador és buit"
+msgstr "_Duplica la pestanya"
 
 #: ../midori/midori-view.c:2570
-#, fuzzy
 msgid "_Restore Tab"
-msgstr "el separador és buit"
+msgstr "_Restaura la pestanya"
 
 #: ../midori/midori-view.c:2570
-#, fuzzy
 msgid "_Minimize Tab"
-msgstr "el separador és buit"
+msgstr "_Minimitza la pestanya"
 
 #: ../midori/midori-preferences.c:91
-#, fuzzy, c-format
+#, c-format
 msgid "Preferences for %s"
-msgstr "Preferències de l'Orca per a %s"
+msgstr "Preferències per a %s"
 
 #. Page "General"
 #: ../midori/midori-preferences.c:398
@@ -1646,29 +1629,24 @@ msgid "Appearance"
 msgstr "Aparença"
 
 #: ../midori/midori-preferences.c:441
-#, fuzzy
 msgid "Font settings"
-msgstr "Altres paràmetres de lletra"
+msgstr "Paràmetres del tipus de lletra"
 
 #: ../midori/midori-preferences.c:443
-#, fuzzy
 msgid "Default Font Family"
-msgstr "Joc de família de tipus de lletra"
+msgstr "Família de tipus de lletra per defecte"
 
 #: ../midori/midori-preferences.c:447
-#, fuzzy
 msgid "The default font family used to display text"
-msgstr "Font utilitzada per visualitzar el text a la sortida xosd"
+msgstr "La família de tipus de lletra per defecte emprada per mostrar el text"
 
 #: ../midori/midori-preferences.c:450
-#, fuzzy
 msgid "The default font size used to display text"
-msgstr "Font utilitzada per visualitzar el text a la sortida xosd"
+msgstr "La mida del tipus de lletra per defecte emprada per mostrar el text"
 
 #: ../midori/midori-preferences.c:453
-#, fuzzy
 msgid "Fixed-width Font Family"
-msgstr "Tipus de lletra per al text de mida fixa"
+msgstr "Família de tipus de lletra d'amplada fixa"
 
 #: ../midori/midori-preferences.c:457
 msgid "The font family used to display fixed-width text"
@@ -1679,23 +1657,20 @@ msgid "The font size used to display fixed-width text"
 msgstr ""
 
 #: ../midori/midori-preferences.c:463
-#, fuzzy
 msgid "Minimum Font Size"
-msgstr "Joc de mida de tipus de lletra"
+msgstr "Mida mínima del tipus de lletra"
 
 #: ../midori/midori-preferences.c:466
-#, fuzzy
 msgid "The minimum font size used to display text"
-msgstr "Font utilitzada per visualitzar el text a la sortida xosd"
+msgstr "La mida mínima del tipus de lletra emprada per mostrar text"
 
 #: ../midori/midori-preferences.c:473
 msgid "Encoding"
 msgstr "Codificació"
 
 #: ../midori/midori-preferences.c:476
-#, fuzzy
 msgid "The character encoding to use by default"
-msgstr "Nom del rerefons del GtkFileChooser predeterminat"
+msgstr "La codificació de caràcters per defecte"
 
 #. Page "Behavior"
 #: ../midori/midori-preferences.c:483
@@ -1707,33 +1682,28 @@ msgid "Features"
 msgstr "Característiques"
 
 #: ../midori/midori-preferences.c:487 ../extensions/statusbar-features.c:88
-#, fuzzy
 msgid "Load images automatically"
-msgstr "Carrega automàticament el darrer projecte"
+msgstr "Carrega les imatges automàticament"
 
 #: ../midori/midori-preferences.c:488
-#, fuzzy
 msgid "Load and display images automatically"
-msgstr "Nom de fitxer per carregar i visualitzar"
+msgstr "Carrega i mostra les imatges automàticament"
 
 #: ../midori/midori-preferences.c:491
-#, fuzzy
 msgid "Shrink images automatically"
-msgstr "Esborra les imatges automàticament després de gravar"
+msgstr "Encongeix les imatges automàticament"
 
 #: ../midori/midori-preferences.c:492
 msgid "Automatically shrink standalone images to fit"
 msgstr ""
 
 #: ../midori/midori-preferences.c:495
-#, fuzzy
 msgid "Print background images"
-msgstr "/Afegeix pestanya/_Imatges"
+msgstr "Imprimeix les imatges de fons"
 
 #: ../midori/midori-preferences.c:496
-#, fuzzy
 msgid "Whether background images should be printed"
-msgstr "Si s'han de mostrar imatges en els menús."
+msgstr "Si s'han d'imprimir les imatges de fons"
 
 #: ../midori/midori-preferences.c:499
 #, fuzzy
@@ -1779,14 +1749,12 @@ msgid "Enable special extensions for developers"
 msgstr ""
 
 #: ../midori/midori-preferences.c:523
-#, fuzzy
 msgid "Spell Checking"
-msgstr "Comprovació de l'ortografia"
+msgstr "Corrector ortogràfic"
 
 #: ../midori/midori-preferences.c:526
-#, fuzzy
 msgid "Enable Spell Checking"
-msgstr "La revisió d'ortografia ha fallat: %s"
+msgstr "Habilita el corrector ortogràfic"
 
 #: ../midori/midori-preferences.c:527
 msgid "Enable spell checking while typing"
@@ -1848,14 +1816,12 @@ msgid "Empty"
 msgstr "Buit"
 
 #: ../midori/midori-searchaction.c:908
-#, fuzzy
 msgid "Add search engine"
-msgstr "Cercador de Gadu-Gadu"
+msgstr "Afegeix giny de cerca"
 
 #: ../midori/midori-searchaction.c:908
-#, fuzzy
 msgid "Edit search engine"
-msgstr "Cercador de Gadu-Gadu"
+msgstr "Edita giny de cerca"
 
 #: ../midori/midori-searchaction.c:936
 msgid "_Name:"
@@ -1870,14 +1836,12 @@ msgid "_Token:"
 msgstr "_Testimoni:"
 
 #: ../midori/midori-searchaction.c:1213
-#, fuzzy
 msgid "Manage Search Engines"
-msgstr "Repeteix l'última recerca"
+msgstr "Gestiona els ginys de cerca"
 
 #: ../midori/midori-searchaction.c:1312
-#, fuzzy
 msgid "Use as _default"
-msgstr "usa la clau predeterminada com a destinatari predeterminat"
+msgstr "Empra'l per _defecte"
 
 #: ../midori/sokoke.c:162 ../midori/sokoke.c:174
 #, fuzzy
@@ -1913,9 +1877,8 @@ msgid "_Userscripts"
 msgstr "Scripts d'_usuari"
 
 #: ../midori/sokoke.c:864
-#, fuzzy
 msgid "User_styles"
-msgstr "Múltiples estils"
+msgstr "E_stils personals"
 
 #: ../midori/sokoke.c:866
 msgid "_Transfers"
@@ -1931,7 +1894,7 @@ msgstr "Scripts d'usuari"
 
 #: ../panels/midori-addons.c:96 ../panels/midori-addons.c:143
 msgid "Userstyles"
-msgstr ""
+msgstr "Estils d'usuari"
 
 #: ../panels/midori-bookmarks.c:108
 msgid "Bookmarks"
@@ -2000,7 +1963,6 @@ msgid "Yesterday"
 msgstr "Ahir"
 
 #: ../panels/midori-plugins.c:87 ../extensions/statusbar-features.c:108
-#, fuzzy
 msgid "Netscape plugins"
 msgstr "Connectors de Netscape"
 
@@ -2039,14 +2001,14 @@ msgid "Password"
 msgstr "Contrasenya"
 
 #: ../katze/katze-throbber.c:828
-#, fuzzy, c-format
+#, c-format
 msgid "Named icon '%s' couldn't be loaded"
-msgstr "No s'ha pogut carregar els següents fitxers:"
+msgstr ""
 
 #: ../katze/katze-throbber.c:841
-#, fuzzy, c-format
+#, c-format
 msgid "Stock icon '%s' couldn't be loaded"
-msgstr "No s'ha pogut carregar els següents fitxers:"
+msgstr ""
 
 #: ../katze/katze-throbber.c:907
 #, fuzzy
index 0a8e418ff7074145239b873a717dd4f7948dbbbc..de347d2a4f612f675146b5d8d36d513e1c1d333a 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,9 +6,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: midori 0.1.9\n"
+"Project-Id-Version: midori 0.1.10\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-06 00:44+0200\n"
+"POT-Creation-Date: 2009-10-15 21:12+0200\n"
 "PO-Revision-Date: 2009-04-30 00:15+0100\n"
 "Last-Translator: Christian Dywan <christian@twotoasts.de>\n"
 "Language-Team: German <de@li.org>\n"
@@ -21,9 +21,9 @@ msgstr ""
 msgid "Lightweight web browser"
 msgstr "Schlanker Internetbetrachter"
 
-#: ../data/midori.desktop.in.h:2 ../midori/main.c:1435 ../midori/main.c:1609
-#: ../midori/main.c:1617 ../midori/main.c:1628
-#: ../midori/midori-websettings.c:287
+#: ../data/midori.desktop.in.h:2 ../midori/main.c:1491 ../midori/main.c:1665
+#: ../midori/main.c:1673 ../midori/main.c:1684
+#: ../midori/midori-websettings.c:289
 msgid "Midori"
 msgstr "Midori"
 
@@ -98,12 +98,12 @@ msgstr "Die Lesezeichen konnten nicht geladen werden. %s"
 msgid "The trash couldn't be saved. %s"
 msgstr "Der Papierkorb konnte nicht gespeichert werden. %s"
 
-#: ../midori/main.c:993
+#: ../midori/main.c:988 ../midori/main.c:1160
 #, c-format
 msgid "The session couldn't be saved. %s"
 msgstr "Die Sitzung konnte nicht geladen werden. %s"
 
-#: ../midori/main.c:1190
+#: ../midori/main.c:1198
 msgid ""
 "Midori seems to have crashed the last time it was opened. If this happened "
 "repeatedly, try one of the following options to solve the problem."
@@ -111,117 +111,117 @@ msgstr ""
 "Midori ist offenbar abgestürzt nachdem es das letzte Mal geöffnet wurde. "
 "Probieren Sie folgende Möglichkeiten falls dies vermehrt vorkommt."
 
-#: ../midori/main.c:1205
+#: ../midori/main.c:1213
 msgid "Modify _preferences"
 msgstr "_Einstellungen bearbeiten"
 
-#: ../midori/main.c:1209
+#: ../midori/main.c:1217
 msgid "Reset the last _session"
 msgstr "Die letzte _Sitzung zurücksetzen"
 
-#: ../midori/main.c:1214
+#: ../midori/main.c:1222
 msgid "Disable all _extensions"
 msgstr "Alle Er_weiterungen ausschalten"
 
-#: ../midori/main.c:1435
+#: ../midori/main.c:1391 ../midori/main.c:1892
+#, c-format
+msgid "The session couldn't be loaded: %s\n"
+msgstr "Die Sitzung konnte nicht geladen werden: %s\n"
+
+#: ../midori/main.c:1491
 msgid "No filename specified"
 msgstr "Kein Dateiname angegeben"
 
-#: ../midori/main.c:1458
+#: ../midori/main.c:1514
 msgid "An unknown error occured."
 msgstr "Ein unbekannter Fehler ist aufgetreten."
 
-#: ../midori/main.c:1490
+#: ../midori/main.c:1546
 #, c-format
 msgid "Snapshot saved to: %s\n"
 msgstr "Schnappschuss gespeichert: %s\n"
 
-#: ../midori/main.c:1539
+#: ../midori/main.c:1595
 msgid "Run ADDRESS as a web application"
 msgstr "ADRESSE als Internetanwendung starten"
 
-#: ../midori/main.c:1539
+#: ../midori/main.c:1595
 msgid "ADDRESS"
 msgstr "ADRESSE"
 
-#: ../midori/main.c:1541
+#: ../midori/main.c:1597
 msgid "Use FOLDER as configuration folder"
 msgstr "ORDNER als Konfigurationsordner benutzen"
 
-#: ../midori/main.c:1541
+#: ../midori/main.c:1597
 msgid "FOLDER"
 msgstr "ORDNER"
 
-#: ../midori/main.c:1543
+#: ../midori/main.c:1599
 msgid "Run the specified filename as javascript"
 msgstr "Angegebenen Dateinamen als Javaskript ausführen"
 
-#: ../midori/main.c:1546
+#: ../midori/main.c:1602
 msgid "Take a snapshot of the specified URI"
 msgstr "Schnappschuss der angegebenen URI aufnehmen"
 
-#: ../midori/main.c:1549
+#: ../midori/main.c:1605
 msgid "Execute the specified command"
 msgstr "Den angegebenen Befehl ausführen"
 
-#: ../midori/main.c:1551
+#: ../midori/main.c:1607
 msgid "Display program version"
 msgstr "Programmversion anzeigen"
 
-#: ../midori/main.c:1553
+#: ../midori/main.c:1609
 msgid "Addresses"
 msgstr "Adressen"
 
-#: ../midori/main.c:1606
+#: ../midori/main.c:1662
 msgid "[Addresses]"
 msgstr "[Adressen]"
 
-#: ../midori/main.c:1629
+#: ../midori/main.c:1685
 msgid "Please report comments, suggestions and bugs to:"
 msgstr "Kommentare, Vorschläge und Fehlerberichte senden an:"
 
-#: ../midori/main.c:1631
+#: ../midori/main.c:1687
 msgid "Check for new versions at:"
 msgstr "Informieren Sie sich über neue Versionen unter:"
 
-#: ../midori/main.c:1711
+#: ../midori/main.c:1767
 msgid "The specified configuration folder is invalid."
 msgstr "Der angegebene Konfigurationsordner konnte nicht geladen werden."
 
-#: ../midori/main.c:1751
+#: ../midori/main.c:1815
 msgid "An instance of Midori is already running but not responding.\n"
 msgstr "Eine Instanz von Midori läuft bereits, reagiert aber nicht.\n"
 
-#: ../midori/main.c:1795
+#: ../midori/main.c:1859
 #, c-format
 msgid "The search engines couldn't be loaded. %s\n"
 msgstr "Die Suchmaschinen konnten nicht geladen werden. %s\n"
 
-#: ../midori/main.c:1813
+#: ../midori/main.c:1877
 #, c-format
 msgid "The bookmarks couldn't be loaded: %s\n"
 msgstr "Die Lesezeichen konnten nicht geladen werden: %s\n"
 
-#: ../midori/main.c:1828
-#, c-format
-msgid "The session couldn't be loaded: %s\n"
-msgstr "Die Sitzung konnte nicht geladen werden: %s\n"
-
-#: ../midori/main.c:1841
+#: ../midori/main.c:1905
 #, c-format
 msgid "The trash couldn't be loaded: %s\n"
 msgstr "Der Papierkorb konnte nicht geladen werden: %s\n"
 
-#: ../midori/main.c:1854
+#: ../midori/main.c:1918
 #, c-format
 msgid "The history couldn't be loaded: %s\n"
 msgstr "Der Verlauf konnte nicht geladen werden: %s\n"
 
-#: ../midori/main.c:1866
+#: ../midori/main.c:1930
 msgid "The following errors occured:"
 msgstr "Folgende Fehler sind aufgetreten:"
 
-#: ../midori/main.c:1882
+#: ../midori/main.c:1946
 msgid "_Ignore"
 msgstr "_Ignorieren"
 
@@ -233,1135 +233,1187 @@ msgstr "Datei nicht gefunden."
 msgid "Malformed document."
 msgstr "Fehlerhaftes Dokument"
 
-#: ../midori/midori-array.c:432 ../midori/sokoke.c:699
+#: ../midori/midori-array.c:437 ../midori/sokoke.c:798
 #, c-format
 msgid "Writing failed."
 msgstr "Schreiben fehlgeschlagen."
 
-#: ../midori/midori-browser.c:315 ../midori/midori-browser.c:4327
-#: ../midori/midori-browser.c:4333
+#: ../midori/midori-browser.c:309 ../midori/midori-browser.c:4656
+#: ../midori/midori-browser.c:4662
 msgid "Reload the current page"
 msgstr "Diese Seite neu laden"
 
-#: ../midori/midori-browser.c:326 ../midori/midori-browser.c:4330
+#: ../midori/midori-browser.c:319 ../midori/midori-browser.c:4659
 msgid "Stop loading the current page"
 msgstr "Laden dieser Seite abbrechen"
 
-#: ../midori/midori-browser.c:417
+#: ../midori/midori-browser.c:432
 #, c-format
 msgid "%d%% loaded"
 msgstr "%d%% geladen"
 
-#: ../midori/midori-browser.c:442
+#: ../midori/midori-browser.c:457
 #, c-format
 msgid "Unexpected action '%s'."
 msgstr "Unerwartete Aktion »%s«."
 
-#: ../midori/midori-browser.c:627
+#: ../midori/midori-browser.c:654
 msgid "New folder"
 msgstr "Neuer Ordner"
 
-#: ../midori/midori-browser.c:627
+#: ../midori/midori-browser.c:654
 msgid "Edit folder"
 msgstr "Ordner bearbeiten"
 
-#: ../midori/midori-browser.c:629
+#: ../midori/midori-browser.c:656
 msgid "New bookmark"
 msgstr "Neues Lesezeichen"
 
-#: ../midori/midori-browser.c:629
+#: ../midori/midori-browser.c:656
 msgid "Edit bookmark"
 msgstr "Lesezeichen bearbeiten"
 
-#: ../midori/midori-browser.c:659
+#: ../midori/midori-browser.c:686
 msgid "_Title:"
 msgstr "_Titel:"
 
-#: ../midori/midori-browser.c:672 ../midori/midori-searchaction.c:952
+#: ../midori/midori-browser.c:699 ../midori/midori-searchaction.c:952
 msgid "_Description:"
 msgstr "_Beschreibung:"
 
-#: ../midori/midori-browser.c:691 ../midori/midori-searchaction.c:966
+#: ../midori/midori-browser.c:718 ../midori/midori-searchaction.c:966
 #: ../extensions/feed-panel/main.c:368
 msgid "_Address:"
 msgstr "_Adresse:"
 
-#: ../midori/midori-browser.c:710
+#: ../midori/midori-browser.c:741
 msgid "_Folder:"
 msgstr "_Ordner:"
 
-#: ../midori/midori-browser.c:715 ../midori/midori-browser.c:756
+#: ../midori/midori-browser.c:746 ../midori/midori-browser.c:787
 msgid "Toplevel folder"
 msgstr "Oberster Ordner"
 
-#: ../midori/midori-browser.c:834
+#: ../midori/midori-browser.c:865
 msgid "Save file as"
 msgstr "Datei speichern unter"
 
-#: ../midori/midori-browser.c:1211 ../panels/midori-transfers.c:272
+#: ../midori/midori-browser.c:1242 ../panels/midori-transfers.c:272
 #, c-format
 msgid "%s of %s"
 msgstr "%s von %s"
 
-#: ../midori/midori-browser.c:1248
+#: ../midori/midori-browser.c:1279
 #, c-format
 msgid "The file '<b>%s</b>' has been downloaded."
-msgstr "Die Datei Â«<b>%s</b>» wurde heruntergeladen."
+msgstr "Die Datei Â»<b>%s</b>« wurde heruntergeladen."
 
-#: ../midori/midori-browser.c:1252
+#: ../midori/midori-browser.c:1283
 msgid "Transfer completed"
 msgstr "Übertragung abgeschlossen"
 
-#: ../midori/midori-browser.c:1393
+#: ../midori/midori-browser.c:1424
 msgid "Save file"
 msgstr "Datei speichern"
 
-#: ../midori/midori-browser.c:2060
+#: ../midori/midori-browser.c:2085
 msgid "Open file"
 msgstr "Datei öffnen"
 
-#: ../midori/midori-browser.c:3268 ../extensions/feed-panel/main.c:356
+#: ../midori/midori-browser.c:2177 ../extensions/feed-panel/main.c:356
 msgid "New feed"
 msgstr "Neue Nachrichtenquelle"
 
-#: ../midori/midori-browser.c:3523 ../panels/midori-bookmarks.c:781
+#: ../midori/midori-browser.c:3791 ../panels/midori-bookmarks.c:781
 #: ../panels/midori-history.c:812
 msgid "Open all in _Tabs"
 msgstr "Alle in neuen _Reitern öffnen"
 
-#: ../midori/midori-browser.c:3530 ../panels/midori-bookmarks.c:787
+#: ../midori/midori-browser.c:3798 ../panels/midori-bookmarks.c:787
 #: ../panels/midori-history.c:818 ../extensions/feed-panel/feed-panel.c:542
 msgid "Open in New _Tab"
 msgstr "In neuem _Reiter öffnen"
 
-#: ../midori/midori-browser.c:3533 ../panels/midori-bookmarks.c:789
+#: ../midori/midori-browser.c:3801 ../panels/midori-bookmarks.c:789
 #: ../panels/midori-history.c:820 ../extensions/feed-panel/feed-panel.c:544
 msgid "Open in New _Window"
 msgstr "In neuem _Fenster öffnen"
 
-#: ../midori/midori-browser.c:3843
+#: ../midori/midori-browser.c:4111
 msgid "Clear Private Data"
 msgstr "Private Daten löschen"
 
-#: ../midori/midori-browser.c:3847
+#: ../midori/midori-browser.c:4115
 msgid "_Clear private data"
 msgstr "_Private Daten löschen"
 
-#: ../midori/midori-browser.c:3860
+#: ../midori/midori-browser.c:4128
 msgid "Clear the following data:"
 msgstr "Folgende Daten löschen:"
 
-#: ../midori/midori-browser.c:3870 ../midori/midori-preferences.c:665
+#: ../midori/midori-browser.c:4138 ../midori/midori-preferences.c:675
 #: ../panels/midori-history.c:108
 msgid "History"
 msgstr "Verlauf"
 
-#: ../midori/midori-browser.c:3875
+#: ../midori/midori-browser.c:4143
 msgid "Cookies"
 msgstr "Benutzerprofile/ Cookies"
 
-#: ../midori/midori-browser.c:3880
+#: ../midori/midori-browser.c:4148
 msgid "'Flash' Cookies"
-msgstr "«Flash» Cookies"
+msgstr "»Flash« Cookies"
 
-#: ../midori/midori-browser.c:3885
+#: ../midori/midori-browser.c:4153
 msgid "Website icons"
 msgstr "Symbole von Internetseiten"
 
-#: ../midori/midori-browser.c:3890 ../midori/sokoke.c:873
+#: ../midori/midori-browser.c:4158 ../midori/sokoke.c:971
 msgid "_Closed Tabs"
 msgstr "Ges_chlossene Reiter"
 
-#: ../midori/midori-browser.c:3898
+#: ../midori/midori-browser.c:4166
 msgid "Clear private data when _quitting Midori"
 msgstr "Private Daten beim _Beenden von Midori löschen"
 
-#: ../midori/midori-browser.c:3979
+#: ../midori/midori-browser.c:4262
 msgid "A lightweight web browser."
 msgstr "Ein schlanker Internetbetrachter."
 
-#: ../midori/midori-browser.c:3995
+#: ../midori/midori-browser.c:4278
 msgid "translator-credits"
 msgstr ""
 "Enrico Tröger <enrico.troeger@uvena.de>\n"
 "Christian Dywan <christian@twotoasts.de>"
 
-#: ../midori/midori-browser.c:4261
+#: ../midori/midori-browser.c:4573
 msgid "_File"
 msgstr "_Datei"
 
-#: ../midori/midori-browser.c:4263 ../midori/sokoke.c:874
+#: ../midori/midori-browser.c:4575 ../midori/sokoke.c:972
 msgid "New _Window"
 msgstr "Neues _Fenster"
 
-#: ../midori/midori-browser.c:4264
+#: ../midori/midori-browser.c:4576
 msgid "Open a new window"
 msgstr "Ein neues Fenster öffnen"
 
-#: ../midori/midori-browser.c:4267
+#: ../midori/midori-browser.c:4579
 msgid "Open a new tab"
 msgstr "Einen neuen Reiter öffnen"
 
-#: ../midori/midori-browser.c:4270
+#: ../midori/midori-browser.c:4582
 msgid "Open a file"
 msgstr "Eine Datei öffnen"
 
-#: ../midori/midori-browser.c:4273
+#: ../midori/midori-browser.c:4585
 msgid "Save to a file"
 msgstr "In Datei speichern"
 
-#: ../midori/midori-browser.c:4275
+#: ../midori/midori-browser.c:4587
 msgid "Add to Speed _dial"
 msgstr "Zu Schnell_wahl hinzufügen"
 
-#: ../midori/midori-browser.c:4276
+#: ../midori/midori-browser.c:4588
 msgid "Add shortcut to speed dial"
 msgstr "Eine Verknüpfung zur Schnellwahl hinzufügen"
 
-#: ../midori/midori-browser.c:4278
+#: ../midori/midori-browser.c:4590
+msgid "Add Shortcut to the _desktop"
+msgstr "Verknüpfung auf dem _Schreibtisch"
+
+#: ../midori/midori-browser.c:4591
+msgid "Add shortcut to the desktop"
+msgstr "Eine Verknüpfung auf dem Schreibtisch hinzufügen"
+
+#: ../midori/midori-browser.c:4593
+msgid "Subscribe to News _feed"
+msgstr "Nachrichten_quelle abonnieren"
+
+#: ../midori/midori-browser.c:4594
+msgid "Subscribe to this news feed"
+msgstr "Diese Nachrichtenquelle abonnieren"
+
+#: ../midori/midori-browser.c:4599
 msgid "_Close Tab"
 msgstr "Reiter s_chließen"
 
-#: ../midori/midori-browser.c:4279
+#: ../midori/midori-browser.c:4600
 msgid "Close the current tab"
 msgstr "Den aktuellen Reiter schließen"
 
-#: ../midori/midori-browser.c:4281
+#: ../midori/midori-browser.c:4602
 msgid "C_lose Window"
 msgstr "_Fenster schließen"
 
-#: ../midori/midori-browser.c:4282
+#: ../midori/midori-browser.c:4603
 msgid "Close this window"
 msgstr "Dieses Fenster schließen"
 
-#: ../midori/midori-browser.c:4285
+#: ../midori/midori-browser.c:4606
 msgid "Print the current page"
 msgstr "Aktuelle Seite ausdrucken"
 
-#: ../midori/midori-browser.c:4288
+#: ../midori/midori-browser.c:4609
 msgid "Quit the application"
 msgstr "Programm beenden"
 
-#: ../midori/midori-browser.c:4290
+#: ../midori/midori-browser.c:4611
 msgid "_Edit"
 msgstr "_Bearbeiten"
 
-#: ../midori/midori-browser.c:4293
+#: ../midori/midori-browser.c:4615
+msgid "Undo the last modification"
+msgstr "Letzte Änderung rückgängig machen"
+
+#: ../midori/midori-browser.c:4618
+msgid "Redo the last modification"
+msgstr "Die letzte Ä_nderung rückgängig machen"
+
+#: ../midori/midori-browser.c:4622
 msgid "Cut the selected text"
 msgstr "Markierten Text ausschneiden"
 
-#: ../midori/midori-browser.c:4296 ../midori/midori-browser.c:4299
+#: ../midori/midori-browser.c:4625 ../midori/midori-browser.c:4628
 msgid "Copy the selected text"
 msgstr "Markierten Text kopieren"
 
-#: ../midori/midori-browser.c:4302
+#: ../midori/midori-browser.c:4631
 msgid "Paste text from the clipboard"
 msgstr "Text aus der Zwischenablage einfügen"
 
-#: ../midori/midori-browser.c:4305
+#: ../midori/midori-browser.c:4634
 msgid "Delete the selected text"
 msgstr "Markierten Text löschen"
 
-#: ../midori/midori-browser.c:4308
+#: ../midori/midori-browser.c:4637
 msgid "Select all text"
 msgstr "Gesamten Text auswählen"
 
-#: ../midori/midori-browser.c:4311
+#: ../midori/midori-browser.c:4640
 msgid "Find a word or phrase in the page"
 msgstr "Finde ein Wort oder einen Satz auf der Seite"
 
-#: ../midori/midori-browser.c:4313
+#: ../midori/midori-browser.c:4642
 msgid "Find _Next"
 msgstr "_Nächstes suchen"
 
-#: ../midori/midori-browser.c:4314
+#: ../midori/midori-browser.c:4643
 msgid "Find the next occurrence of a word or phrase"
 msgstr "Finde das nächste Auftreten eines Wortes oder Satzes"
 
-#: ../midori/midori-browser.c:4316
+#: ../midori/midori-browser.c:4645
 msgid "Find _Previous"
 msgstr "_Vorheriges suchen"
 
-#: ../midori/midori-browser.c:4317
+#: ../midori/midori-browser.c:4646
 msgid "Find the previous occurrence of a word or phrase"
 msgstr "Finde das voherige Auftreten eines Wortes oder Satzes"
 
-#: ../midori/midori-browser.c:4321
+#: ../midori/midori-browser.c:4650
 msgid "Configure the application preferences"
 msgstr "Anwedungseinstellungen anpassen"
 
-#: ../midori/midori-browser.c:4323
+#: ../midori/midori-browser.c:4652
 msgid "_View"
 msgstr "_Ansicht"
 
-#: ../midori/midori-browser.c:4324
+#: ../midori/midori-browser.c:4653
 msgid "_Toolbars"
 msgstr "_Werkzeugleisten"
 
-#: ../midori/midori-browser.c:4336
+#: ../midori/midori-browser.c:4665
 msgid "Increase the zoom level"
 msgstr "Erhöhe die Vergrößerungsstufe"
 
-#: ../midori/midori-browser.c:4339
+#: ../midori/midori-browser.c:4668
 msgid "Decrease the zoom level"
 msgstr "Verringere die Vergrößerungsstufe"
 
-#: ../midori/midori-browser.c:4342
+#: ../midori/midori-browser.c:4671
 msgid "Reset the zoom level"
 msgstr "Setzte die Vergrößerungsstufe zurück"
 
-#: ../midori/midori-browser.c:4343
+#: ../midori/midori-browser.c:4672
 msgid "_Encoding"
 msgstr "_Zeichensatz"
 
-#: ../midori/midori-browser.c:4345
+#: ../midori/midori-browser.c:4674
 msgid "View So_urce"
 msgstr "_Quelltext anzeigen"
 
-#: ../midori/midori-browser.c:4346
+#: ../midori/midori-browser.c:4675
 msgid "View the source code of the page"
 msgstr "Zeige den Quelltext der Seite an"
 
-#: ../midori/midori-browser.c:4348
+#: ../midori/midori-browser.c:4677
 msgid "View Selection Source"
 msgstr "Quelltext der Markierung anzeigen"
 
-#: ../midori/midori-browser.c:4349
+#: ../midori/midori-browser.c:4678
 msgid "View the source code of the selection"
 msgstr "Zeige den Quelltext der Markierung an"
 
-#: ../midori/midori-browser.c:4353
+#: ../midori/midori-browser.c:4682
 msgid "Toggle fullscreen view"
 msgstr "Vollbildmodus ein-/ ausschalten"
 
-#: ../midori/midori-browser.c:4355
+#: ../midori/midori-browser.c:4684
 msgid "_Go"
 msgstr "_Gehe zu"
 
-#: ../midori/midori-browser.c:4358
+#: ../midori/midori-browser.c:4687
 msgid "Go back to the previous page"
 msgstr "Gehe zur voherigen Seite zurück"
 
-#: ../midori/midori-browser.c:4361
+#: ../midori/midori-browser.c:4690
 msgid "Go forward to the next page"
 msgstr "Gehe weiter zur nächsten Seite"
 
-#: ../midori/midori-browser.c:4364
+#: ../midori/midori-browser.c:4693
 msgid "Go to your homepage"
 msgstr "Gehe zu Deiner Startseite"
 
-#: ../midori/midori-browser.c:4366
+#: ../midori/midori-browser.c:4695
 msgid "Empty Trash"
 msgstr "Papierkorb leeren"
 
-#: ../midori/midori-browser.c:4367
+#: ../midori/midori-browser.c:4696
 msgid "Delete the contents of the trash"
 msgstr "Inhalt des Papierkorbs löschen"
 
-#: ../midori/midori-browser.c:4369
+#: ../midori/midori-browser.c:4698
 msgid "Undo _Close Tab"
 msgstr "Reiter _zurückholen"
 
-#: ../midori/midori-browser.c:4370
+#: ../midori/midori-browser.c:4699
 msgid "Open the last closed tab"
 msgstr "Zuletzt geschlossenen Reiter öffnen"
 
-#: ../midori/midori-browser.c:4374 ../panels/midori-bookmarks.c:231
+#: ../midori/midori-browser.c:4703 ../panels/midori-bookmarks.c:231
 msgid "Add a new bookmark"
 msgstr "Ein neues Lesezeichen hinzufügen"
 
-#: ../midori/midori-browser.c:4376
+#: ../midori/midori-browser.c:4705
 msgid "Add a new _folder"
 msgstr "Einen neuen _Ordner hinzufügen"
 
-#: ../midori/midori-browser.c:4377
+#: ../midori/midori-browser.c:4706
 msgid "Add a new bookmark folder"
 msgstr "Einen neuen Lesezeichenordner hinzufügen"
 
-#: ../midori/midori-browser.c:4379 ../midori/midori-searchaction.c:497
+#: ../midori/midori-browser.c:4708 ../midori/midori-searchaction.c:497
 msgid "_Manage Search Engines"
 msgstr "_Suchmaschinen verwalten"
 
-#: ../midori/midori-browser.c:4380
+#: ../midori/midori-browser.c:4709
 msgid "Add, edit and remove search engines..."
 msgstr "Suchmaschinen hinzufügen, bearbeiten und löschen…"
 
-#: ../midori/midori-browser.c:4383
+#: ../midori/midori-browser.c:4712
 msgid "_Clear Private Data"
 msgstr "_Private Daten löschen"
 
-#: ../midori/midori-browser.c:4384
+#: ../midori/midori-browser.c:4713
 msgid "Clear private data..."
 msgstr "Private Daten löschen..."
 
-#: ../midori/midori-browser.c:4388
+#: ../midori/midori-browser.c:4717
 msgid "_Previous Tab"
 msgstr "_Vorheriger Reiter"
 
-#: ../midori/midori-browser.c:4389
+#: ../midori/midori-browser.c:4718
 msgid "Switch to the previous tab"
 msgstr "Zum voherigen Reiter wechseln"
 
-#: ../midori/midori-browser.c:4391
+#: ../midori/midori-browser.c:4720
 msgid "_Next Tab"
 msgstr "_Nächster Reiter"
 
-#: ../midori/midori-browser.c:4392
+#: ../midori/midori-browser.c:4721
 msgid "Switch to the next tab"
 msgstr "Zum nächsten Reiter wechseln"
 
-#: ../midori/midori-browser.c:4394
+#: ../midori/midori-browser.c:4723
+msgid "Focus _Current Tab"
+msgstr "_Aktuellen Reiter fokusieren"
+
+#: ../midori/midori-browser.c:4724
+msgid "Focus the current tab"
+msgstr "Den aktuellen Reiter fokussieren"
+
+#: ../midori/midori-browser.c:4726
+msgid "Open last _session"
+msgstr "Die letzte _Sitzung öffnen"
+
+#: ../midori/midori-browser.c:4727
+msgid "Open the tabs saved in the last session"
+msgstr "In der letzten Sitzung geöffnete Reiter öffnen"
+
+#: ../midori/midori-browser.c:4729
 msgid "_Help"
 msgstr "_Hilfe"
 
-#: ../midori/midori-browser.c:4396
+#: ../midori/midori-browser.c:4731
 msgid "_Contents"
 msgstr "_Inhalt"
 
-#: ../midori/midori-browser.c:4397
+#: ../midori/midori-browser.c:4732
 msgid "Show the documentation"
 msgstr "Zeige die Dokumentation"
 
-#: ../midori/midori-browser.c:4399
+#: ../midori/midori-browser.c:4734
 msgid "_Frequent Questions"
 msgstr "_Häufige Fragen"
 
-#: ../midori/midori-browser.c:4400
+#: ../midori/midori-browser.c:4735
 msgid "Show the Frequently Asked Questions"
 msgstr "Häufig gestellte Fragen anzeigen"
 
-#: ../midori/midori-browser.c:4402
+#: ../midori/midori-browser.c:4737
 msgid "_Report a Bug"
 msgstr "Fehler _berichten"
 
-#: ../midori/midori-browser.c:4403
+#: ../midori/midori-browser.c:4738
 msgid "Open Midori's bug tracker"
 msgstr "Midoris Fehlerverfolgung öffnen"
 
-#: ../midori/midori-browser.c:4406
+#: ../midori/midori-browser.c:4741
 msgid "Show information about the program"
 msgstr "Zeige Informationen über das Programm"
 
-#: ../midori/midori-browser.c:4413
+#: ../midori/midori-browser.c:4748
 msgid "P_rivate Browsing"
 msgstr "_Privat navigieren"
 
-#: ../midori/midori-browser.c:4414
+#: ../midori/midori-browser.c:4749
 msgid "Don't save any private data while browsing"
 msgstr "Keinerlei private Daten während des Navigierens speichern"
 
-#: ../midori/midori-browser.c:4419
+#: ../midori/midori-browser.c:4754
 msgid "_Menubar"
 msgstr "_Menüleiste"
 
-#: ../midori/midori-browser.c:4420
+#: ../midori/midori-browser.c:4755
 msgid "Show menubar"
 msgstr "Menüleiste anzeigen"
 
-#: ../midori/midori-browser.c:4423
+#: ../midori/midori-browser.c:4758
 msgid "_Navigationbar"
 msgstr "_Navigationsleiste"
 
-#: ../midori/midori-browser.c:4424
+#: ../midori/midori-browser.c:4759
 msgid "Show navigationbar"
 msgstr "Navigationsleiste anzeigen"
 
-#: ../midori/midori-browser.c:4427
+#: ../midori/midori-browser.c:4762
 msgid "Side_panel"
 msgstr "Seiten_leiste"
 
-#: ../midori/midori-browser.c:4428
+#: ../midori/midori-browser.c:4763
 msgid "Show sidepanel"
 msgstr "Seitenleiste anzeigen"
 
-#: ../midori/midori-browser.c:4431
+#: ../midori/midori-browser.c:4766
 msgid "_Bookmarkbar"
 msgstr "_Lesezeichenleiste"
 
-#: ../midori/midori-browser.c:4432
+#: ../midori/midori-browser.c:4767
 msgid "Show bookmarkbar"
 msgstr "Lesezeichenleiste anzeigen"
 
-#: ../midori/midori-browser.c:4435
+#: ../midori/midori-browser.c:4770
 msgid "_Transferbar"
 msgstr "_Übertragungsleiste"
 
-#: ../midori/midori-browser.c:4436
+#: ../midori/midori-browser.c:4771
 msgid "Show transferbar"
 msgstr "Übertragungsleiste anzeigen"
 
-#: ../midori/midori-browser.c:4439
+#: ../midori/midori-browser.c:4774
 msgid "_Statusbar"
 msgstr "_Statusleiste"
 
-#: ../midori/midori-browser.c:4440
+#: ../midori/midori-browser.c:4775
 msgid "Show statusbar"
 msgstr "Statusleiste anzeigen"
 
-#: ../midori/midori-browser.c:4447
+#: ../midori/midori-browser.c:4782
 msgid "_Automatic"
 msgstr "_Automatisch"
 
-#: ../midori/midori-browser.c:4450 ../midori/midori-websettings.c:214
+#: ../midori/midori-browser.c:4785 ../midori/midori-websettings.c:216
 msgid "Chinese (BIG5)"
 msgstr "Chinesisch (BIG5)"
 
 #. i18n: A double underscore "__" is used to prevent an unwanted mnemonic
-#: ../midori/midori-browser.c:4454
+#: ../midori/midori-browser.c:4789
 msgid "Japanese (SHIFT__JIS)"
 msgstr "Japanisch (SHIFT__JIS)"
 
-#: ../midori/midori-browser.c:4457 ../midori/midori-websettings.c:216
+#: ../midori/midori-browser.c:4792 ../midori/midori-websettings.c:218
 msgid "Russian (KOI8-R)"
 msgstr "Russisch (KOI8-R)"
 
-#: ../midori/midori-browser.c:4460 ../midori/midori-websettings.c:217
+#: ../midori/midori-browser.c:4795 ../midori/midori-websettings.c:219
 msgid "Unicode (UTF-8)"
 msgstr "Unicode (UTF-8)"
 
-#: ../midori/midori-browser.c:4463 ../midori/midori-websettings.c:218
+#: ../midori/midori-browser.c:4798 ../midori/midori-websettings.c:220
 msgid "Western (ISO-8859-1)"
 msgstr "Westlich (ISO-8859-1)"
 
-#: ../midori/midori-browser.c:4466 ../midori/midori-websettings.c:219
-#: ../midori/midori-websettings.c:291
+#: ../midori/midori-browser.c:4801 ../midori/midori-websettings.c:221
+#: ../midori/midori-websettings.c:294
 msgid "Custom..."
 msgstr "Benutzerdefiniert…"
 
-#: ../midori/midori-browser.c:4907
+#: ../midori/midori-browser.c:5284
 msgid "_Separator"
 msgstr "_Trennlinie"
 
-#: ../midori/midori-browser.c:4914
+#: ../midori/midori-browser.c:5291
 msgid "_Location..."
 msgstr "_Ort…"
 
-#: ../midori/midori-browser.c:4916
+#: ../midori/midori-browser.c:5293
 msgid "Open a particular location"
 msgstr "Öffne einen bestimmten Ort"
 
-#: ../midori/midori-browser.c:4940
+#: ../midori/midori-browser.c:5317
 msgid "_Web Search..."
 msgstr "Im _Netz suchen…"
 
-#: ../midori/midori-browser.c:4942
+#: ../midori/midori-browser.c:5319
 msgid "Run a web search"
 msgstr "Starte eine Suche im Netz"
 
-#: ../midori/midori-browser.c:4963
+#: ../midori/midori-browser.c:5340
 msgid "Reopen a previously closed tab or window"
 msgstr "Reiter oder Fenster zurückholen"
 
-#: ../midori/midori-browser.c:4978
+#: ../midori/midori-browser.c:5355
 msgid "_Recently visited pages"
 msgstr "_Zuletzt besuchte Seiten"
 
-#: ../midori/midori-browser.c:4980
+#: ../midori/midori-browser.c:5357
 msgid "Reopen pages that you visited earlier"
 msgstr "Bereits besuchte Seiten erneut öffnen"
 
-#: ../midori/midori-browser.c:4995 ../midori/sokoke.c:862
+#: ../midori/midori-browser.c:5372 ../midori/sokoke.c:961
 msgid "_Bookmarks"
 msgstr "_Lesezeichen"
 
-#: ../midori/midori-browser.c:4997
+#: ../midori/midori-browser.c:5374
 msgid "Show the saved bookmarks"
 msgstr "Die gespeicherten Lesezeichen anzeigen"
 
-#: ../midori/midori-browser.c:5012
+#: ../midori/midori-browser.c:5389
 msgid "_Tools"
 msgstr "_Extras"
 
-#: ../midori/midori-browser.c:5024
+#: ../midori/midori-browser.c:5401
 msgid "_Window"
 msgstr "_Fenster"
 
-#: ../midori/midori-browser.c:5026
+#: ../midori/midori-browser.c:5403
 msgid "Show a list of all open tabs"
 msgstr "Zeige eine Übersicht aller offenen Reiter"
 
-#: ../midori/midori-browser.c:5040
+#: ../midori/midori-browser.c:5417
 msgid "_Menu"
 msgstr "_Menü"
 
-#: ../midori/midori-browser.c:5042
+#: ../midori/midori-browser.c:5419
 msgid "Menu"
 msgstr "Menü"
 
 #. i18n: A panel at the bottom, to search text in pages
-#: ../midori/midori-browser.c:5228
+#: ../midori/midori-browser.c:5609
 msgid "_Inline Find:"
 msgstr "_Inkrementelle Suche:"
 
-#: ../midori/midori-browser.c:5253
+#: ../midori/midori-browser.c:5634
 msgid "Previous"
 msgstr "Zurück"
 
-#: ../midori/midori-browser.c:5258
+#: ../midori/midori-browser.c:5639
 msgid "Next"
 msgstr "Weiter"
 
-#: ../midori/midori-browser.c:5263
+#: ../midori/midori-browser.c:5644
 msgid "Match Case"
 msgstr "Groß-/ Kleinschreibung"
 
-#: ../midori/midori-browser.c:5271
+#: ../midori/midori-browser.c:5652
 msgid "Highlight Matches"
 msgstr "Treffer hervorheben"
 
-#: ../midori/midori-browser.c:5281
+#: ../midori/midori-browser.c:5662
 msgid "Close Findbar"
 msgstr "Suchleiste schließen"
 
-#: ../midori/midori-browser.c:5316 ../panels/midori-transfers.c:143
+#: ../midori/midori-browser.c:5697 ../panels/midori-transfers.c:143
 msgid "Clear All"
 msgstr "Alle entfernen"
 
-#: ../midori/midori-browser.c:5670
+#: ../midori/midori-browser.c:6051
 #, c-format
 msgid "Unexpected setting '%s'"
 msgstr "Unerwartete Einstellung »%s«"
 
-#: ../midori/midori-locationaction.c:941
+#: ../midori/midori-locationaction.c:961
 #, c-format
 msgid "Search with %s"
 msgstr "Suchen mit %s"
 
-#: ../midori/midori-panel.c:382 ../midori/midori-panel.c:384
+#: ../midori/midori-panel.c:381 ../midori/midori-panel.c:383
 msgid "Detach chosen panel from the window"
 msgstr "Gewählte Leiste vom Fenster ablösen"
 
-#: ../midori/midori-panel.c:394 ../midori/midori-panel.c:396
-#: ../midori/midori-panel.c:577 ../midori/midori-panel.c:580
+#: ../midori/midori-panel.c:393 ../midori/midori-panel.c:395
+#: ../midori/midori-panel.c:576 ../midori/midori-panel.c:579
 msgid "Align sidepanel to the right"
 msgstr "Seitenleiste rechts anordnen"
 
-#: ../midori/midori-panel.c:406 ../midori/midori-panel.c:407
+#: ../midori/midori-panel.c:405 ../midori/midori-panel.c:406
 msgid "Close panel"
 msgstr "Leiste schließen"
 
-#: ../midori/midori-panel.c:578 ../midori/midori-panel.c:581
+#: ../midori/midori-panel.c:577 ../midori/midori-panel.c:580
 msgid "Align sidepanel to the left"
 msgstr "Seitenleiste links anordnen"
 
-#: ../midori/midori-panel.c:704
+#: ../midori/midori-panel.c:703
 msgid "Show panel _titles"
 msgstr "Leisten_titel anzeigen"
 
-#: ../midori/midori-panel.c:712
+#: ../midori/midori-panel.c:711
 msgid "Show operating _controls"
 msgstr "_Bedienelemente anzeigen"
 
-#: ../midori/midori-panel.c:783
+#: ../midori/midori-panel.c:782
 msgid "Options"
 msgstr "Optionen"
 
-#: ../midori/midori-websettings.c:197
+#: ../midori/midori-websettings.c:199
 msgid "Show Blank page"
 msgstr "Leere Seite anzeigen"
 
-#: ../midori/midori-websettings.c:198
+#: ../midori/midori-websettings.c:200
 msgid "Show Homepage"
 msgstr "Startseite anzeigen"
 
-#: ../midori/midori-websettings.c:199
+#: ../midori/midori-websettings.c:201
 msgid "Show last open tabs"
 msgstr "Zuletzt geöffnete Reiter anzeigen"
 
-#: ../midori/midori-websettings.c:215
+#: ../midori/midori-websettings.c:217
 msgid "Japanese (SHIFT_JIS)"
 msgstr "Japanisch (SHIFT_JIS)"
 
-#: ../midori/midori-websettings.c:234
+#: ../midori/midori-websettings.c:236
 msgid "New tab"
 msgstr "Neuer Reiter"
 
-#: ../midori/midori-websettings.c:235
+#: ../midori/midori-websettings.c:237
 msgid "New window"
 msgstr "Neues Fenster"
 
-#: ../midori/midori-websettings.c:236
+#: ../midori/midori-websettings.c:238
 msgid "Current tab"
 msgstr "Aktueller Reiter"
 
-#: ../midori/midori-websettings.c:251
+#: ../midori/midori-websettings.c:253
 msgid "Default"
 msgstr "Standard"
 
-#: ../midori/midori-websettings.c:252
+#: ../midori/midori-websettings.c:254
 msgid "Icons"
 msgstr "Symbole"
 
-#: ../midori/midori-websettings.c:253
+#: ../midori/midori-websettings.c:255
 msgid "Text"
 msgstr "Text"
 
-#: ../midori/midori-websettings.c:254
+#: ../midori/midori-websettings.c:256
 msgid "Icons and text"
 msgstr "Symbole und Text"
 
-#: ../midori/midori-websettings.c:255
+#: ../midori/midori-websettings.c:257
 msgid "Text beside icons"
 msgstr "Text neben Symbolen"
 
-#: ../midori/midori-websettings.c:270
+#: ../midori/midori-websettings.c:272
 msgid "All cookies"
 msgstr "Alle Profildateien"
 
-#: ../midori/midori-websettings.c:271
+#: ../midori/midori-websettings.c:273
 msgid "Session cookies"
 msgstr "Sitzungsprofile"
 
-#: ../midori/midori-websettings.c:272 ../panels/midori-addons.c:94
+#: ../midori/midori-websettings.c:274 ../panels/midori-addons.c:93
 #: ../extensions/shortcuts.c:93
 msgid "None"
 msgstr "Keine"
 
-#: ../midori/midori-websettings.c:288
+#: ../midori/midori-websettings.c:290
 msgid "Safari"
 msgstr "Safari"
 
-#: ../midori/midori-websettings.c:289
+#: ../midori/midori-websettings.c:291
+msgid "iPhone"
+msgstr "iPhone"
+
+#: ../midori/midori-websettings.c:292
 msgid "Firefox"
 msgstr "Firefox"
 
-#: ../midori/midori-websettings.c:290
+#: ../midori/midori-websettings.c:293
 msgid "Internet Explorer"
 msgstr "Internet Explorer"
 
-#: ../midori/midori-websettings.c:343
+#: ../midori/midori-websettings.c:346
 msgid "Remember last window size"
 msgstr "Letzte Fenstergröße merken"
 
-#: ../midori/midori-websettings.c:344
+#: ../midori/midori-websettings.c:347
 msgid "Whether to save the last window size"
 msgstr "Die letzte Fenstergröße speichern oder nicht"
 
-#: ../midori/midori-websettings.c:352
+#: ../midori/midori-websettings.c:355
 msgid "Last window width"
 msgstr "Letzte Fensterbreite"
 
-#: ../midori/midori-websettings.c:353
+#: ../midori/midori-websettings.c:356
 msgid "The last saved window width"
 msgstr "Die zuletzt gespeicherte Fensterbreite"
 
-#: ../midori/midori-websettings.c:361
+#: ../midori/midori-websettings.c:364
 msgid "Last window height"
 msgstr "Letzte Fensterhöhe"
 
-#: ../midori/midori-websettings.c:362
+#: ../midori/midori-websettings.c:365
 msgid "The last saved window height"
 msgstr "Die zuletzt gespeicherte Fensterhöhe"
 
-#: ../midori/midori-websettings.c:387
+#: ../midori/midori-websettings.c:390
 msgid "Last panel position"
 msgstr "Letzte Leistenposition"
 
-#: ../midori/midori-websettings.c:388
+#: ../midori/midori-websettings.c:391
 msgid "The last saved panel position"
 msgstr "Die zuletzt gespeicherte Leistenposition"
 
 #. i18n: The internal index of the last opened panel
-#: ../midori/midori-websettings.c:397
+#: ../midori/midori-websettings.c:400
 msgid "Last panel page"
 msgstr "Letzte Leistenseite"
 
-#: ../midori/midori-websettings.c:398
+#: ../midori/midori-websettings.c:401
 msgid "The last saved panel page"
 msgstr "Die zuletzt gespeicherte Leistenseite"
 
-#: ../midori/midori-websettings.c:406
+#: ../midori/midori-websettings.c:409
 msgid "Last Web search"
 msgstr "Letzte Suche im Netz"
 
-#: ../midori/midori-websettings.c:407
+#: ../midori/midori-websettings.c:410
 msgid "The last saved Web search"
 msgstr "Die zuletzt gespeicherte Suche im Netz"
 
-#: ../midori/midori-websettings.c:416
+#: ../midori/midori-websettings.c:419
 msgid "Show Menubar"
 msgstr "Menüleiste anzeigen"
 
-#: ../midori/midori-websettings.c:417
+#: ../midori/midori-websettings.c:420
 msgid "Whether to show the menubar"
 msgstr "Die Menüleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:425
+#: ../midori/midori-websettings.c:428
 msgid "Show Navigationbar"
 msgstr "Navigationsleiste anzeigen"
 
-#: ../midori/midori-websettings.c:426
+#: ../midori/midori-websettings.c:429
 msgid "Whether to show the navigationbar"
 msgstr "Die Navigationsleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:434
+#: ../midori/midori-websettings.c:437
 msgid "Show Bookmarkbar"
 msgstr "Lesezeichenleiste anzeigen"
 
-#: ../midori/midori-websettings.c:435
+#: ../midori/midori-websettings.c:438
 msgid "Whether to show the bookmarkbar"
 msgstr "Die Lesezeichenleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:443
+#: ../midori/midori-websettings.c:446
 msgid "Show Panel"
 msgstr "Leiste anzeigen"
 
-#: ../midori/midori-websettings.c:444
+#: ../midori/midori-websettings.c:447
 msgid "Whether to show the panel"
 msgstr "Die Leiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:459
+#: ../midori/midori-websettings.c:462
 msgid "Show Transferbar"
 msgstr "Übertragungsleiste anzeigen"
 
-#: ../midori/midori-websettings.c:460
+#: ../midori/midori-websettings.c:463
 msgid "Whether to show the transferbar"
 msgstr "Die Übertragungsleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:468
+#: ../midori/midori-websettings.c:471
 msgid "Show Statusbar"
 msgstr "Statusleiste anzeigen"
 
-#: ../midori/midori-websettings.c:469
+#: ../midori/midori-websettings.c:472
 msgid "Whether to show the statusbar"
 msgstr "Die Statusleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:478
+#: ../midori/midori-websettings.c:481
 msgid "Toolbar Style:"
 msgstr "Werkzeugleistenstil:"
 
-#: ../midori/midori-websettings.c:479
+#: ../midori/midori-websettings.c:482
 msgid "The style of the toolbar"
 msgstr "Der Stil der Werkzeugleiste"
 
-#: ../midori/midori-websettings.c:495
+#: ../midori/midori-websettings.c:498
 msgid "Show progress in location entry"
 msgstr "Fortschritt im Adressfeld anzeigen"
 
-#: ../midori/midori-websettings.c:496
+#: ../midori/midori-websettings.c:499
 msgid "Whether to show loading progress in the location entry"
 msgstr "Aktuellen Ladefortschritt im Adressfeld anzeigen"
 
-#: ../midori/midori-websettings.c:511
+#: ../midori/midori-websettings.c:514
 msgid "Search engines in location completion"
 msgstr "Suchmaschinen in Vervollständigung"
 
-#: ../midori/midori-websettings.c:512
+#: ../midori/midori-websettings.c:515
 msgid "Whether to show search engines in the location completion"
 msgstr "Verfügbare Suchmaschinen in der Adressvervollständigung anzeigen"
 
-#: ../midori/midori-websettings.c:520
+#: ../midori/midori-websettings.c:523
 msgid "Toolbar Items"
 msgstr "Werkzeugleistenelemente"
 
-#: ../midori/midori-websettings.c:521
+#: ../midori/midori-websettings.c:524
 msgid "The items to show on the toolbar"
 msgstr "Die in der Werkzeugleiste anzuzeigenden Elemente"
 
-#: ../midori/midori-websettings.c:529
+#: ../midori/midori-websettings.c:532
 msgid "Compact Sidepanel"
 msgstr "Kompakte Seitenleiste"
 
-#: ../midori/midori-websettings.c:530
+#: ../midori/midori-websettings.c:533
 msgid "Whether to make the sidepanel compact"
 msgstr "Die Seitenleiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:545
+#: ../midori/midori-websettings.c:548
 msgid "Show operating controls of the panel"
 msgstr "Bedienelemente der Leiste anzeigen"
 
-#: ../midori/midori-websettings.c:546
+#: ../midori/midori-websettings.c:549
 msgid "Whether to show the operating controls of the panel"
 msgstr "Die Bedienelemente der Leiste anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:561
+#: ../midori/midori-websettings.c:564
 msgid "Align sidepanel on the right"
 msgstr "Seitenleiste rechts anordnen"
 
-#: ../midori/midori-websettings.c:562
+#: ../midori/midori-websettings.c:565
 msgid "Whether to align the sidepanel on the right"
 msgstr "Die Seitenleiste auf der rechten Seite anordnen"
 
-#: ../midori/midori-websettings.c:571
+#: ../midori/midori-websettings.c:574
 msgid "When Midori starts:"
 msgstr "Beim Starten von Midori:"
 
-#: ../midori/midori-websettings.c:572
+#: ../midori/midori-websettings.c:575
 msgid "What to do when Midori starts"
 msgstr "Was beim Starten von Midori passieren soll"
 
-#: ../midori/midori-websettings.c:581
+#: ../midori/midori-websettings.c:584
 msgid "Homepage:"
 msgstr "Startseite:"
 
-#: ../midori/midori-websettings.c:582
+#: ../midori/midori-websettings.c:585
 msgid "The homepage"
 msgstr "Die Startseite"
 
-#: ../midori/midori-websettings.c:597
+#: ../midori/midori-websettings.c:600
 msgid "Show crash dialog"
 msgstr "Absturzdialog anzeigen"
 
-#: ../midori/midori-websettings.c:598
+#: ../midori/midori-websettings.c:601
 msgid "Show a dialog after Midori crashed"
 msgstr "Absturzdialog anzeigen nachdem Midori abgestürzt ist"
 
 #. i18n: Speed dial, webpage shortcuts, named for the phone function
-#: ../midori/midori-websettings.c:614
+#: ../midori/midori-websettings.c:617
 msgid "Show speed dial in new tabs"
 msgstr "Schnellwahl in neuen Reitern anzeigen"
 
-#: ../midori/midori-websettings.c:615
+#: ../midori/midori-websettings.c:618
 msgid "Show speed dial in newly opened tabs"
 msgstr "Schnellwahl in neu geöffneten Reitern anzeigen"
 
-#: ../midori/midori-websettings.c:623
+#: ../midori/midori-websettings.c:626
 msgid "Save downloaded files to:"
 msgstr "Heruntergeladene Dateien speichern:"
 
-#: ../midori/midori-websettings.c:624
+#: ../midori/midori-websettings.c:627
 msgid "The folder downloaded files are saved to"
 msgstr "Der Ordner, in dem heruntergeladene Dateien gespeichert werden"
 
-#: ../midori/midori-websettings.c:643
+#: ../midori/midori-websettings.c:648
 msgid "Ask for the destination folder"
 msgstr "Nach dem Zielordner fragen"
 
-#: ../midori/midori-websettings.c:644
+#: ../midori/midori-websettings.c:649
 msgid "Whether to ask for the destination folder when downloading a file"
 msgstr "Beim Herunterladen einer Datei nach dem Zielordner fragen"
 
-#: ../midori/midori-websettings.c:663
+#: ../midori/midori-websettings.c:668
 msgid "Notify when a transfer has been completed"
 msgstr "Benachrichtigen bei Abschluss der Übertragung"
 
-#: ../midori/midori-websettings.c:664
+#: ../midori/midori-websettings.c:669
 msgid "Whether to show a notification when a transfer has been completed"
 msgstr ""
 "Eine Benachrichtigung anzeigen wenn eine Übertragung abgeschlossen wurde"
 
-#: ../midori/midori-websettings.c:676
+#: ../midori/midori-websettings.c:681
 msgid "Download Manager"
 msgstr "Übertragungsmanager"
 
-#: ../midori/midori-websettings.c:677
+#: ../midori/midori-websettings.c:682
 msgid "An external download manager"
 msgstr "Ein externer Übertragungsmanager"
 
-#: ../midori/midori-websettings.c:685
+#: ../midori/midori-websettings.c:690
 msgid "Text Editor"
 msgstr "Texteditor"
 
-#: ../midori/midori-websettings.c:686
+#: ../midori/midori-websettings.c:691
 msgid "An external text editor"
 msgstr "Ein externer Texteditor"
 
-#: ../midori/midori-websettings.c:701
+#: ../midori/midori-websettings.c:706
 msgid "News Aggregator"
 msgstr "Nachrichtenaggregator"
 
-#: ../midori/midori-websettings.c:702
+#: ../midori/midori-websettings.c:707
 msgid "An external news aggregator"
 msgstr "Ein externer Nachrichtenaggregator"
 
-#: ../midori/midori-websettings.c:710
+#: ../midori/midori-websettings.c:715
 msgid "Location entry Search"
 msgstr "Adressfeldsuche"
 
-#: ../midori/midori-websettings.c:711
+#: ../midori/midori-websettings.c:716
 msgid "The search to perform inside the location entry"
 msgstr "Die Suche, die über das Adressfeld ausgeführt wird"
 
-#: ../midori/midori-websettings.c:719
+#: ../midori/midori-websettings.c:724
 msgid "Preferred Encoding"
 msgstr "Bevorzugter Zeichensatz"
 
-#: ../midori/midori-websettings.c:720
+#: ../midori/midori-websettings.c:725
 msgid "The preferred character encoding"
 msgstr "Der bevorzugte Zeichensatz"
 
-#: ../midori/midori-websettings.c:730
+#: ../midori/midori-websettings.c:735
 msgid "Always Show Tabbar"
 msgstr "Reiterleiste immer anzeigen"
 
-#: ../midori/midori-websettings.c:731
+#: ../midori/midori-websettings.c:736
 msgid "Always show the tabbar"
 msgstr "Die Reiterleiste immer anzeigen"
 
-#: ../midori/midori-websettings.c:739
+#: ../midori/midori-websettings.c:744
 msgid "Close Buttons on Tabs"
 msgstr "Schließenschaltflächen auf Reitern"
 
-#: ../midori/midori-websettings.c:740
+#: ../midori/midori-websettings.c:745
 msgid "Whether tabs have close buttons"
 msgstr "Schließenschaltflächen auf Reitern anzeigen oder verbergen"
 
-#: ../midori/midori-websettings.c:748
+#: ../midori/midori-websettings.c:753
 msgid "Open new pages in:"
 msgstr "Öffne neue Seiten in:"
 
-#: ../midori/midori-websettings.c:749
+#: ../midori/midori-websettings.c:754
 msgid "Where to open new pages"
 msgstr "Wo neue Seiten geöffnet werden sollen"
 
-#: ../midori/midori-websettings.c:758
+#: ../midori/midori-websettings.c:763
 msgid "Open external pages in:"
 msgstr "Öffne Seiten von außerhalb in:"
 
-#: ../midori/midori-websettings.c:759
+#: ../midori/midori-websettings.c:764
 msgid "Where to open externally opened pages"
 msgstr "Wo Seiten von außerhalb geöffnet werden sollen"
 
-#: ../midori/midori-websettings.c:768
+#: ../midori/midori-websettings.c:773
 msgid "Middle click opens Selection"
 msgstr "Mittelklick öffnet Markierung"
 
-#: ../midori/midori-websettings.c:769
+#: ../midori/midori-websettings.c:774
 msgid "Load an address from the selection via middle click"
 msgstr "Lade eine markierte Adresse mit der mittleren Maustaste"
 
-#: ../midori/midori-websettings.c:777
+#: ../midori/midori-websettings.c:782
 msgid "Open tabs in the background"
 msgstr "Reiter im Hintergrund öffnen"
 
-#: ../midori/midori-websettings.c:778
+#: ../midori/midori-websettings.c:783
 msgid "Whether to open new tabs in the background"
 msgstr "Neue Reiter im Hintergrund öffnen"
 
-#: ../midori/midori-websettings.c:786
+#: ../midori/midori-websettings.c:791
 msgid "Open Tabs next to Current"
 msgstr "Reiter neben aktuellem öffnen"
 
-#: ../midori/midori-websettings.c:787
+#: ../midori/midori-websettings.c:792
 msgid "Whether to open new tabs next to the current tab or after the last one"
 msgstr "Neue Reiter neben dem aktuellen Reiter oder nach dem letzten öffnen"
 
-#: ../midori/midori-websettings.c:795
+#: ../midori/midori-websettings.c:800
 msgid "Open popups in tabs"
 msgstr "Aufklappfenster in Reitern öffnen"
 
-#: ../midori/midori-websettings.c:796
+#: ../midori/midori-websettings.c:801
 msgid "Whether to open popup windows in tabs"
 msgstr "Aufklappfenster in neuen Reitern öffnen"
 
-#: ../midori/midori-websettings.c:812
+#: ../midori/midori-websettings.c:817
 msgid "Zoom Text and Images"
 msgstr "Text und Bilder vergrößern"
 
-#: ../midori/midori-websettings.c:813
+#: ../midori/midori-websettings.c:818
 msgid "Whether to zoom text and images"
 msgstr "Ob Text und Bilder gleichermaßen vergrößert werden sollen"
 
-#: ../midori/midori-websettings.c:828
+#: ../midori/midori-websettings.c:833
 msgid "Find inline while typing"
 msgstr "Inkrementelle Suche beim Eintippen"
 
-#: ../midori/midori-websettings.c:829
+#: ../midori/midori-websettings.c:834
 msgid "Whether to automatically find inline while typing"
 msgstr "Ob die inkrementelle Suche automatisch beim Eintippen starten soll"
 
-#: ../midori/midori-websettings.c:837
+#: ../midori/midori-websettings.c:849
+msgid "Kinetic scrolling"
+msgstr "Sanfter Bildlauf"
+
+#: ../midori/midori-websettings.c:850
+msgid "Whether scrolling should kinetically move according to speed"
+msgstr "Ob der Bildlauf sanft schneller und langsamer wird"
+
+#: ../midori/midori-websettings.c:858
 msgid "Accept cookies"
 msgstr "Cookies annehmen"
 
-#: ../midori/midori-websettings.c:838
+#: ../midori/midori-websettings.c:859
 msgid "What type of cookies to accept"
 msgstr "Welche Art von Profildateien (Cookies) angenommen werden"
 
-#: ../midori/midori-websettings.c:847
+#: ../midori/midori-websettings.c:868
 msgid "Original cookies only"
 msgstr "Nur ursprüngliche Profildateien"
 
-#: ../midori/midori-websettings.c:848
+#: ../midori/midori-websettings.c:869
 msgid "Accept cookies from the original website only"
 msgstr "Nur Profildateien von der ursprünglichen Seite annehmen"
 
-#: ../midori/midori-websettings.c:856
+#: ../midori/midori-websettings.c:877
 msgid "Maximum cookie age"
 msgstr "Maximales Alter von Cookiedaten"
 
-#: ../midori/midori-websettings.c:857
+#: ../midori/midori-websettings.c:878
 msgid "The maximum number of days to save cookies for"
 msgstr "Die maximale Anzahl an Tagen, für die Profildateien gespeichert werden"
 
-#: ../midori/midori-websettings.c:867
+#: ../midori/midori-websettings.c:888
 msgid "Remember last visited pages"
 msgstr "Zuletzt besuchte Seiten merken"
 
-#: ../midori/midori-websettings.c:868
+#: ../midori/midori-websettings.c:889
 msgid "Whether the last visited pages are saved"
 msgstr "Die zuletzt besuchten Seiten speichern"
 
-#: ../midori/midori-websettings.c:876
+#: ../midori/midori-websettings.c:897
 msgid "Maximum history age"
 msgstr "Maximales Verlaufsalter"
 
-#: ../midori/midori-websettings.c:877
+#: ../midori/midori-websettings.c:898
 msgid "The maximum number of days to save the history for"
 msgstr "Die maximale Anzahl an Tagen, für die der Verlauf gepseichert wird"
 
-#: ../midori/midori-websettings.c:885
+#: ../midori/midori-websettings.c:906
 msgid "Remember last form inputs"
 msgstr "Zuletzt eingegebene Formulareingaben merken"
 
-#: ../midori/midori-websettings.c:886
+#: ../midori/midori-websettings.c:907
 msgid "Whether the last form inputs are saved"
 msgstr "Die letzten Formulareingaben speichern"
 
-#: ../midori/midori-websettings.c:894
+#: ../midori/midori-websettings.c:915
 msgid "Remember last downloaded files"
 msgstr "Zuletzt heruntergeladene Dateien merken"
 
-#: ../midori/midori-websettings.c:895
+#: ../midori/midori-websettings.c:916
 msgid "Whether the last downloaded files are saved"
 msgstr "Die zuletzt heruntegeladenen Dateien speichern"
 
-#: ../midori/midori-websettings.c:905
+#: ../midori/midori-websettings.c:926
 msgid "Proxy Server"
 msgstr "Zwischenrechner (Proxy)"
 
-#: ../midori/midori-websettings.c:906
+#: ../midori/midori-websettings.c:927
 msgid "The proxy server used for HTTP connections"
 msgstr "Der Zwischenrechner für HTTP-Verbindungen"
 
-#: ../midori/midori-websettings.c:921
+#: ../midori/midori-websettings.c:942
 msgid "Detect proxy server automatically"
 msgstr "Proxyrechner automatisch erkennen"
 
-#: ../midori/midori-websettings.c:922
+#: ../midori/midori-websettings.c:943
 msgid "Whether to detect the proxy server automatically from the environment"
 msgstr "Zwischenrechner automatisch über die Umgebung erkennen"
 
 #. i18n: This refers to an application, not the 'user agent' string
-#: ../midori/midori-websettings.c:938
+#: ../midori/midori-websettings.c:959
 msgid "Identify as"
 msgstr "Ausgeben als"
 
-#: ../midori/midori-websettings.c:939
+#: ../midori/midori-websettings.c:960
 msgid "What to identify as to web pages"
 msgstr "Wie gegenüber Seiten im Internet identifiziert werden soll"
 
-#: ../midori/midori-websettings.c:955
+#: ../midori/midori-websettings.c:976
 msgid "Identification string"
 msgstr "Identifikationskennung"
 
-#: ../midori/midori-websettings.c:956
+#: ../midori/midori-websettings.c:977
 msgid "The application identification string"
 msgstr "Die Identifikationskennung der Anwedung"
 
-#: ../midori/midori-websettings.c:964
+#: ../midori/midori-websettings.c:985
 msgid "Cache size"
 msgstr "Zwischenspeichergröße"
 
-#: ../midori/midori-websettings.c:965
+#: ../midori/midori-websettings.c:986
 msgid "The allowed size of the cache"
 msgstr "Die erlaubte Zwischenspeichergröße"
 
-#: ../midori/midori-websettings.c:980
+#: ../midori/midori-websettings.c:1001
 msgid "Clear private data"
 msgstr "Private Daten löschen"
 
-#: ../midori/midori-websettings.c:981
+#: ../midori/midori-websettings.c:1002
 msgid "The private data selected for deletion"
 msgstr "Zum Löschen ausgewählte private Daten"
 
@@ -1369,147 +1421,189 @@ msgstr "Zum Löschen ausgewählte private Daten"
 #. so reloading via Javascript works but not via API calls.
 #. Error pages are special, we want to try loading the destination
 #. again, not the error page which isn't even a proper page
-#: ../midori/midori-view.c:782 ../midori/midori-view.c:3043
-#: ../midori/midori-view.c:3047
+#: ../midori/midori-view.c:848 ../midori/midori-view.c:3694
+#: ../midori/midori-view.c:3698
 #, c-format
 msgid "Error - %s"
 msgstr "Fehler - %s"
 
-#: ../midori/midori-view.c:783
+#: ../midori/midori-view.c:849
 #, c-format
 msgid "The page '%s' couldn't be loaded."
-msgstr "Die Seite Â«%s» konnte nicht geladen werden."
+msgstr "Die Seite Â»%s« konnte nicht geladen werden."
 
-#: ../midori/midori-view.c:788
+#: ../midori/midori-view.c:854
 msgid "Try again"
 msgstr "Erneut versuchen"
 
 #. i18n: The title of the 404 - Not found error page
-#: ../midori/midori-view.c:821
+#: ../midori/midori-view.c:887
 #, c-format
 msgid "Not found - %s"
 msgstr "Nicht gefunden - %s"
 
-#: ../midori/midori-view.c:1218
+#: ../midori/midori-view.c:1101 ../midori/midori-view.c:1814
+#, c-format
+msgid "Send a message to %s"
+msgstr "Nachricht an %s schicken"
+
+#: ../midori/midori-view.c:1653 ../midori/midori-view.c:1716
 msgid "Open _Link"
 msgstr "Verweis ö_ffnen"
 
-#: ../midori/midori-view.c:1220
+#: ../midori/midori-view.c:1656 ../midori/midori-view.c:1718
 msgid "Open Link in New _Tab"
 msgstr "Verweis in neuem _Reiter öffnen"
 
-#: ../midori/midori-view.c:1237
+#: ../midori/midori-view.c:1659 ../midori/midori-view.c:1725
 msgid "Open Link in New _Window"
 msgstr "Verweis in neuem _Fenster öffnen"
 
-#: ../midori/midori-view.c:1243
-msgid "_Download Link destination"
-msgstr "Verweisziel herunter_laden"
+#: ../midori/midori-view.c:1662
+msgid "_Copy Link destination"
+msgstr "Verweisziel _kopieren"
 
-#: ../midori/midori-view.c:1249
+#: ../midori/midori-view.c:1665 ../midori/midori-view.c:1737
 msgid "_Save Link destination"
 msgstr "Verweisziel _speichern"
 
-#: ../midori/midori-view.c:1258
+#: ../midori/midori-view.c:1666 ../midori/midori-view.c:1731
+msgid "_Download Link destination"
+msgstr "Verweisziel herunter_laden"
+
+#: ../midori/midori-view.c:1670 ../midori/midori-view.c:1706
+#: ../midori/midori-view.c:1742
 msgid "Download with Download _Manager"
 msgstr "Mit Übertragungs_manager herunterladen"
 
-#: ../midori/midori-view.c:1287
+#: ../midori/midori-view.c:1682
+msgid "Open _Image in New Tab"
+msgstr "_Bild in neuem Reiter öffnen"
+
+#: ../midori/midori-view.c:1685
+msgid "Open Image in New Wi_ndow"
+msgstr "Bild in neuem Fe_nster öffnen"
+
+#: ../midori/midori-view.c:1688
+msgid "Copy Image _Address"
+msgstr "Bild_adresse kopieren"
+
+#: ../midori/midori-view.c:1691
+msgid "Save I_mage"
+msgstr "Bi_ld speichern"
+
+#: ../midori/midori-view.c:1692
+msgid "Download I_mage"
+msgstr "Bi_ld herunterladen"
+
+#: ../midori/midori-view.c:1699
+msgid "Copy Video _Address"
+msgstr "Video_adresse kopieren"
+
+#: ../midori/midori-view.c:1702
+msgid "Save _Video"
+msgstr "_Video speichern"
+
+#: ../midori/midori-view.c:1702
+msgid "Download _Video"
+msgstr "_Video herunterladen"
+
+#: ../midori/midori-view.c:1762
 msgid "Search _with"
 msgstr "Suchen _mit"
 
-#: ../midori/midori-view.c:1319
+#: ../midori/midori-view.c:1790 ../midori/midori-view.c:1801
 msgid "_Search the Web"
 msgstr "Im Netz _suchen"
 
-#: ../midori/midori-view.c:1329
+#: ../midori/midori-view.c:1822
 msgid "Open Address in New _Tab"
 msgstr "Adresse in neuem _Reiter öffnen"
 
-#: ../midori/midori-view.c:1507
+#: ../midori/midori-view.c:2070
 msgid "Open or download file"
 msgstr "Datei öffnen oder herunterladen"
 
-#: ../midori/midori-view.c:1524
+#: ../midori/midori-view.c:2087
 #, c-format
 msgid "File Type: '%s'"
-msgstr "Dateityp: Â«%s»"
+msgstr "Dateityp: Â»%s«"
 
-#: ../midori/midori-view.c:1527
+#: ../midori/midori-view.c:2090
 #, c-format
 msgid "File Type: %s ('%s')"
-msgstr "Dateityp: %s («%s»)"
+msgstr "Dateityp: %s (»%s«)"
 
 #. i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz"
-#: ../midori/midori-view.c:1531
+#: ../midori/midori-view.c:2094
 #, c-format
 msgid "Open %s"
 msgstr "%s öffnen"
 
-#: ../midori/midori-view.c:1981
+#: ../midori/midori-view.c:2610
 #, c-format
 msgid "Inspect page - %s"
 msgstr "Seite untersuchen - %s"
 
-#: ../midori/midori-view.c:2176
+#: ../midori/midori-view.c:2817
 msgid "Speed dial"
 msgstr "Schnellwahl"
 
-#: ../midori/midori-view.c:2177
+#: ../midori/midori-view.c:2818
 msgid "Click to add a shortcut"
 msgstr "Klicken um eine Verknüpfung hinzuzufügen"
 
-#: ../midori/midori-view.c:2178
+#: ../midori/midori-view.c:2819
 msgid "Enter shortcut address"
 msgstr "Ziel der Verknüpfung eingeben"
 
-#: ../midori/midori-view.c:2179
+#: ../midori/midori-view.c:2820
 msgid "Enter shortcut title"
 msgstr "Titel der Verknüpfung eingeben"
 
-#: ../midori/midori-view.c:2180
+#: ../midori/midori-view.c:2821
 msgid "Are you sure you want to delete this shortcut?"
 msgstr "Sind Sie sicher, dass Sie diese Verknüpfung löschen wollen?"
 
-#: ../midori/midori-view.c:2210
+#: ../midori/midori-view.c:2851
 #, c-format
 msgid "Document cannot be displayed"
 msgstr "Dokument kann nicht angezeigt werden"
 
-#: ../midori/midori-view.c:2227
+#: ../midori/midori-view.c:2868
 #, c-format
 msgid "No documentation installed"
 msgstr "Keine Dokumentation installiert"
 
-#: ../midori/midori-view.c:2352
+#: ../midori/midori-view.c:2993
 msgid "Blank page"
 msgstr "Leere Seite"
 
-#: ../midori/midori-view.c:2581 ../midori/sokoke.c:870
+#: ../midori/midori-view.c:3222 ../midori/sokoke.c:968
 msgid "New _Tab"
 msgstr "Neuer _Reiter"
 
-#: ../midori/midori-view.c:2595
+#: ../midori/midori-view.c:3236
 msgid "_Duplicate Tab"
 msgstr "Reiter _verdoppeln"
 
-#: ../midori/midori-view.c:2600
+#: ../midori/midori-view.c:3241
 msgid "_Restore Tab"
 msgstr "Reiter _wiederherstellen"
 
-#: ../midori/midori-view.c:2600
+#: ../midori/midori-view.c:3241
 msgid "_Minimize Tab"
 msgstr "Reiter _minimieren"
 
-#: ../midori/midori-view.c:3149
+#: ../midori/midori-view.c:3800
 msgid "Print background images"
 msgstr "Hintergrundbilder drucken"
 
-#: ../midori/midori-view.c:3150
+#: ../midori/midori-view.c:3801
 msgid "Whether background images should be printed"
 msgstr "Sollen Hintergrundbilder gedruckt werden oder nicht"
 
-#: ../midori/midori-view.c:3194 ../midori/midori-preferences.c:484
+#: ../midori/midori-view.c:3845 ../midori/midori-preferences.c:489
 msgid "Features"
 msgstr "Inhalte"
 
@@ -1519,186 +1613,186 @@ msgid "Preferences for %s"
 msgstr "Einstellungen für %s"
 
 #. Page "General"
-#: ../midori/midori-preferences.c:398
+#: ../midori/midori-preferences.c:404
 msgid "General"
 msgstr "Allgemein"
 
-#: ../midori/midori-preferences.c:399
+#: ../midori/midori-preferences.c:405
 msgid "Startup"
 msgstr "Programmstart"
 
-#: ../midori/midori-preferences.c:415
+#: ../midori/midori-preferences.c:421
 msgid "Use current page as homepage"
 msgstr "Aktuelle Seite als Startseite benutzen"
 
-#: ../midori/midori-preferences.c:425 ../panels/midori-transfers.c:88
+#: ../midori/midori-preferences.c:431 ../panels/midori-transfers.c:88
 msgid "Transfers"
 msgstr "Übertragungen"
 
 #. Page "Appearance"
-#: ../midori/midori-preferences.c:440
+#: ../midori/midori-preferences.c:445
 msgid "Appearance"
 msgstr "Erscheinungsbild"
 
-#: ../midori/midori-preferences.c:441
+#: ../midori/midori-preferences.c:446
 msgid "Font settings"
 msgstr "Schrifteinstellungen"
 
-#: ../midori/midori-preferences.c:443
+#: ../midori/midori-preferences.c:448
 msgid "Default Font Family"
 msgstr "Standardschriftart"
 
-#: ../midori/midori-preferences.c:447
+#: ../midori/midori-preferences.c:452
 msgid "The default font family used to display text"
 msgstr "Die Standardschriftgröße, in der Text angezeigt wird"
 
-#: ../midori/midori-preferences.c:450
+#: ../midori/midori-preferences.c:455
 msgid "The default font size used to display text"
 msgstr "Die Standardschriftgröße, in der Text angezeigt wird"
 
-#: ../midori/midori-preferences.c:453
+#: ../midori/midori-preferences.c:458
 msgid "Fixed-width Font Family"
 msgstr "Dicktengleiche Schriftart"
 
-#: ../midori/midori-preferences.c:457
+#: ../midori/midori-preferences.c:462
 msgid "The font family used to display fixed-width text"
 msgstr "Die Schriftart, in der dicktengleicher Text angezeigt wird"
 
-#: ../midori/midori-preferences.c:460
+#: ../midori/midori-preferences.c:465
 msgid "The font size used to display fixed-width text"
 msgstr "Die Schriftgröße, in der dicktengleicher Text angezeigt wird"
 
-#: ../midori/midori-preferences.c:463
+#: ../midori/midori-preferences.c:468
 msgid "Minimum Font Size"
 msgstr "Mindestschriftgröße"
 
-#: ../midori/midori-preferences.c:466
+#: ../midori/midori-preferences.c:471
 msgid "The minimum font size used to display text"
 msgstr "Die Mindestschriftgröße, in der Text angezeigt wird"
 
-#: ../midori/midori-preferences.c:473
+#: ../midori/midori-preferences.c:478
 msgid "Encoding"
 msgstr "Zeichensatz"
 
-#: ../midori/midori-preferences.c:476
+#: ../midori/midori-preferences.c:481
 msgid "The character encoding to use by default"
 msgstr "Der voreingestellte Zeichensatz"
 
 #. Page "Behavior"
-#: ../midori/midori-preferences.c:483
+#: ../midori/midori-preferences.c:488
 msgid "Behavior"
 msgstr "Verhalten"
 
-#: ../midori/midori-preferences.c:487 ../extensions/statusbar-features.c:88
+#: ../midori/midori-preferences.c:492 ../extensions/statusbar-features.c:88
 msgid "Load images automatically"
 msgstr "Bilder automatisch laden"
 
-#: ../midori/midori-preferences.c:488
+#: ../midori/midori-preferences.c:493
 msgid "Load and display images automatically"
 msgstr "Bilder automatisch laden und anzeigen"
 
-#: ../midori/midori-preferences.c:492
+#: ../midori/midori-preferences.c:501
 msgid "Shrink images automatically"
 msgstr "Bilder automatisch verkleinern"
 
-#: ../midori/midori-preferences.c:493
+#: ../midori/midori-preferences.c:502
 msgid "Automatically shrink standalone images to fit"
 msgstr "Einzelne Bilder automatisch angemessen verkleinern"
 
-#: ../midori/midori-preferences.c:499 ../extensions/statusbar-features.c:100
+#: ../midori/midori-preferences.c:509 ../extensions/statusbar-features.c:100
 msgid "Enable scripts"
 msgstr "Skripte einschalten"
 
-#: ../midori/midori-preferences.c:500
+#: ../midori/midori-preferences.c:510
 msgid "Enable embedded scripting languages"
 msgstr "Eingebettete Skriptsprachen einschalten"
 
-#: ../midori/midori-preferences.c:503 ../extensions/statusbar-features.c:112
+#: ../midori/midori-preferences.c:513 ../extensions/statusbar-features.c:112
 msgid "Enable Netscape plugins"
 msgstr "Netscape-Module einschalten"
 
-#: ../midori/midori-preferences.c:504
+#: ../midori/midori-preferences.c:514
 msgid "Enable embedded Netscape plugin objects"
 msgstr "Eingebettete Netscape-Module einschalten"
 
-#: ../midori/midori-preferences.c:507
+#: ../midori/midori-preferences.c:517
 msgid "Enforce 96 dots per inch"
 msgstr "Erzwinge 96 Punkte pro Zoll"
 
-#: ../midori/midori-preferences.c:508
+#: ../midori/midori-preferences.c:518
 msgid "Enforce a video dot density of 96 DPI"
 msgstr "Erzwinge eine Punktdichte von 96 DPI"
 
-#: ../midori/midori-preferences.c:511
+#: ../midori/midori-preferences.c:521
 msgid "Enable developer tools"
 msgstr "Entwicklerwerkzeuge einschalten"
 
-#: ../midori/midori-preferences.c:512
+#: ../midori/midori-preferences.c:522
 msgid "Enable special extensions for developers"
 msgstr "Besondere Erweiterungen für Entwickler einschalten"
 
-#: ../midori/midori-preferences.c:519
+#: ../midori/midori-preferences.c:529
 msgid "Spell Checking"
 msgstr "Rechtschreibprüfung"
 
-#: ../midori/midori-preferences.c:522
+#: ../midori/midori-preferences.c:532
 msgid "Enable Spell Checking"
 msgstr "Rechtschreibprüfung einschalten"
 
-#: ../midori/midori-preferences.c:523
+#: ../midori/midori-preferences.c:533
 msgid "Enable spell checking while typing"
 msgstr "Rechtschreibprüfung beim Eintippen einschalten"
 
 #. i18n: The example should be adjusted to contain a good local default
-#: ../midori/midori-preferences.c:527
+#: ../midori/midori-preferences.c:537
 msgid ""
 "A comma separated list of languages to be used for spell checking, for "
 "example \"en_GB,de_DE\""
 msgstr ""
 "Eine durch Kommas getrennte Liste von Sprachen, die für die "
-"Rechtschreibprüfung benutzt werden sollen, zum Beispiel Â«en_GB,de_DE»"
+"Rechtschreibprüfung benutzt werden sollen, zum Beispiel Â»en_GB,de_DE«"
 
 #. Page "Interface"
-#: ../midori/midori-preferences.c:532
+#: ../midori/midori-preferences.c:542
 msgid "Interface"
 msgstr "Oberfläche"
 
-#: ../midori/midori-preferences.c:533
+#: ../midori/midori-preferences.c:543
 msgid "Navigationbar"
 msgstr "Navigationsleiste"
 
-#: ../midori/midori-preferences.c:544
+#: ../midori/midori-preferences.c:554
 msgid "Browsing"
 msgstr "Navigation"
 
 #. Page "Applications"
-#: ../midori/midori-preferences.c:568
+#: ../midori/midori-preferences.c:578
 msgid "Applications"
 msgstr "Anwendungen"
 
-#: ../midori/midori-preferences.c:569
+#: ../midori/midori-preferences.c:579
 msgid "External applications"
 msgstr "Externe Anwendungen"
 
 #. Page "Network"
-#: ../midori/midori-preferences.c:615 ../midori/midori-preferences.c:616
+#: ../midori/midori-preferences.c:625 ../midori/midori-preferences.c:626
 msgid "Network"
 msgstr "Netzwerk"
 
-#: ../midori/midori-preferences.c:643
+#: ../midori/midori-preferences.c:653
 msgid "MB"
 msgstr "MB"
 
 #. Page "Privacy"
-#: ../midori/midori-preferences.c:648
+#: ../midori/midori-preferences.c:658
 msgid "Privacy"
 msgstr "Privatssphäre"
 
-#: ../midori/midori-preferences.c:649
+#: ../midori/midori-preferences.c:659
 msgid "Web Cookies"
 msgstr "Benutzerprofile"
 
-#: ../midori/midori-preferences.c:662 ../midori/midori-preferences.c:672
+#: ../midori/midori-preferences.c:672 ../midori/midori-preferences.c:682
 msgid "days"
 msgstr "Tage"
 
@@ -1738,54 +1832,62 @@ msgstr "Als _Standard"
 msgid "Could not run external program."
 msgstr "Konnte externes Programm nicht ausführen."
 
-#: ../midori/sokoke.c:861
+#: ../midori/sokoke.c:960
 msgid "_Bookmark"
 msgstr "_Lesezeichen"
 
-#: ../midori/sokoke.c:863
+#: ../midori/sokoke.c:962
 msgid "Add Boo_kmark"
 msgstr "Lesezeichen _hinzufügen"
 
-#: ../midori/sokoke.c:864
+#: ../midori/sokoke.c:963
 msgid "_Console"
 msgstr "_Konsole"
 
-#: ../midori/sokoke.c:865
+#: ../midori/sokoke.c:964
 msgid "_Extensions"
 msgstr "_Erweiterungen"
 
-#: ../midori/sokoke.c:866
+#: ../midori/sokoke.c:965
 msgid "_History"
 msgstr "_Verlauf"
 
-#: ../midori/sokoke.c:867
+#: ../midori/sokoke.c:966
 msgid "_Homepage"
 msgstr "_Startseite"
 
-#: ../midori/sokoke.c:868
+#: ../midori/sokoke.c:967
 msgid "_Userscripts"
 msgstr "_Benutzerskripte"
 
-#: ../midori/sokoke.c:869
-msgid "User_styles"
-msgstr "Benutzer_stile"
-
-#: ../midori/sokoke.c:871
+#: ../midori/sokoke.c:969
 msgid "_Transfers"
 msgstr "Über_tragungen"
 
-#: ../midori/sokoke.c:872
+#: ../midori/sokoke.c:970
 msgid "Netscape p_lugins"
 msgstr "Netscape-Module"
 
-#: ../panels/midori-addons.c:95 ../panels/midori-addons.c:141
+#: ../panels/midori-addons.c:94 ../panels/midori-addons.c:139
 msgid "Userscripts"
 msgstr "Benutzerskripte"
 
-#: ../panels/midori-addons.c:96 ../panels/midori-addons.c:143
+#: ../panels/midori-addons.c:95
 msgid "Userstyles"
 msgstr "Benutzerstile"
 
+#: ../panels/midori-addons.c:287
+#, c-format
+msgid "Copy userscripts to the folder %s and copy userstyles to the folder %s."
+msgstr ""
+"Kopieren Sie Benutzerskripte in den Ordner »%s« und Benutzerstile in den "
+"Ordner »%s«."
+
+#: ../panels/midori-addons.c:889
+#, c-format
+msgid "Can't monitor folder '%s': %s"
+msgstr "Der Ordner »%s« kann nicht überwacht werden: %s"
+
 #: ../panels/midori-bookmarks.c:108
 msgid "Bookmarks"
 msgstr "Lesezeichen"
@@ -1861,11 +1963,11 @@ msgstr "Zielordner ö_ffnen"
 msgid "Copy Link Loc_ation"
 msgstr "Verweisziel ko_pieren"
 
-#: ../katze/katze-http-auth.c:124
+#: ../katze/katze-http-auth.c:209
 msgid "Authentication Required"
 msgstr "Authentifizierung erforderlich"
 
-#: ../katze/katze-http-auth.c:140
+#: ../katze/katze-http-auth.c:225
 msgid ""
 "A username and a password are required\n"
 "to open this location:"
@@ -1873,14 +1975,18 @@ msgstr ""
 "Ein Benutzername und ein Kennwort\n"
 "werden zum Öffnen dieses Ortes benötigt:"
 
-#: ../katze/katze-http-auth.c:154
+#: ../katze/katze-http-auth.c:239
 msgid "Username"
 msgstr "Benutzername"
 
-#: ../katze/katze-http-auth.c:170
+#: ../katze/katze-http-auth.c:252
 msgid "Password"
 msgstr "Kennwort"
 
+#: ../katze/katze-http-auth.c:266
+msgid "_Remember password"
+msgstr "Kennwort _merken"
+
 #: ../katze/katze-throbber.c:828
 #, c-format
 msgid "Named icon '%s' couldn't be loaded"
@@ -1895,32 +2001,42 @@ msgstr "Das Bestandssymbol »%s« konnte nicht geladen werden"
 msgid "Animation frames are broken"
 msgstr "Animationsbilder sind fehlerhaft"
 
-#: ../katze/katze-utils.c:200 ../katze/katze-utils.c:407
+#: ../katze/katze-utils.c:203 ../katze/katze-utils.c:420
 #, c-format
 msgid "Property '%s' is invalid for %s"
 msgstr "Eigenschaft »%s« ist ungültig für %s"
 
-#: ../katze/katze-utils.c:235 ../katze/katze-utils.c:264
+#: ../katze/katze-utils.c:238 ../katze/katze-utils.c:267
 msgid "Choose file"
 msgstr "Datei wählen"
 
-#: ../katze/katze-utils.c:250
+#: ../katze/katze-utils.c:253
 msgid "Choose folder"
 msgstr "Dateispeicherordner auswählen"
 
-#: ../extensions/adblock.c:167
+#: ../extensions/adblock.c:315
 msgid "Configure Advertisement filters"
 msgstr "Werbefilter einstellen"
 
-#: ../extensions/adblock.c:304
+#: ../extensions/adblock.c:345
+#, c-format
+msgid ""
+"Type the address of a preconfigured filter list in the text entry and click "
+"\"Add\" to add it to the list. You can find more lists at %s."
+msgstr ""
+"Geben Sie die Adresse einer vorkonfigurierten Filterliste in das Textfeld "
+"ein und klicken Sie »Hinzufügen« um sie zur Liste hinzuzufügen. Weitere "
+"Listen finden Sie auf %s."
+
+#: ../extensions/adblock.c:483
 msgid "Configure _Advertisement filters..."
 msgstr "Werbefilter einstellen..."
 
-#: ../extensions/adblock.c:565
+#: ../extensions/adblock.c:844
 msgid "Advertisement blocker"
 msgstr "Werbeblocker"
 
-#: ../extensions/adblock.c:566
+#: ../extensions/adblock.c:845
 msgid "Block advertisements according to a filter list"
 msgstr "Werbung an Hand einer Filterliste blockieren"
 
@@ -2035,6 +2151,14 @@ msgstr "_Cookieverwaltung"
 msgid "List, view and delete cookies"
 msgstr "Profildateien auflisten, anzeigen und löschen"
 
+#: ../extensions/dnsprefetch.c:194
+msgid "DNS prefetching"
+msgstr "DNS-Auflösung im Voraus"
+
+#: ../extensions/dnsprefetch.c:195
+msgid "Prefetch IP addresses of hovered links"
+msgstr "Ermitteln der IP-Adressen von Verweisen im Voraus"
+
 #: ../extensions/feed-panel/feed-atom.c:237
 msgid "Failed to find required Atom \"entry\" elements in XML data."
 msgstr ""
@@ -2108,12 +2232,12 @@ msgstr "Fehler"
 #: ../extensions/feed-panel/main.c:126
 #, c-format
 msgid "Feed '%s' already exists"
-msgstr "Nachrichtenquelle Â«%s» ist bereits vorhanden"
+msgstr "Nachrichtenquelle Â»%s« ist bereits vorhanden"
 
 #: ../extensions/feed-panel/main.c:203
 #, c-format
 msgid "Error loading feed '%s'"
-msgstr "Fehler beim Laden der Nachrichtenquelle Â«%s»"
+msgstr "Fehler beim Laden der Nachrichtenquelle Â»%s«"
 
 #: ../extensions/feed-panel/main.c:514
 msgid "Feed Panel"
@@ -2123,11 +2247,28 @@ msgstr "Nachrichtenquellenleiste"
 msgid "Read Atom/ RSS feeds"
 msgstr "Atom-/ RSS-Quellen (Feeds) lesen"
 
-#: ../extensions/mouse-gestures/main.c:236
+#: ../extensions/formhistory.c:286
+msgid "Stores history of entered form data"
+msgstr "Speichert zuvor eingegebene Formulareingaben"
+
+#: ../extensions/formhistory.c:290
+#, c-format
+msgid "Not available: %s"
+msgstr "Nicht verfügbar: %s"
+
+#: ../extensions/formhistory.c:291
+msgid "Resource files not installed"
+msgstr "Konfigurationsdateien nicht installiert"
+
+#: ../extensions/formhistory.c:296
+msgid "Form history filler"
+msgstr "Formularvervollständigung"
+
+#: ../extensions/mouse-gestures/main.c:246
 msgid "Mouse Gestures"
 msgstr "Mausgesten"
 
-#: ../extensions/mouse-gestures/main.c:237
+#: ../extensions/mouse-gestures/main.c:247
 msgid "Control Midori by moving the mouse"
 msgstr "Steuere Midori durch Bewegen der Maus"
 
@@ -2172,15 +2313,15 @@ msgstr "Funktionen in der Statusleiste"
 msgid "Easily toggle features on web pages on and off"
 msgstr "Funktionen auf Internetseiten leicht an- und abstellen"
 
-#: ../extensions/tab-panel.c:558 ../extensions/tab-panel.c:613
+#: ../extensions/tab-panel.c:562 ../extensions/tab-panel.c:619
 msgid "Tab Panel"
 msgstr "Reiterleiste"
 
-#: ../extensions/tab-panel.c:597
+#: ../extensions/tab-panel.c:603
 msgid "T_ab Panel"
 msgstr "_Reiterleiste"
 
-#: ../extensions/tab-panel.c:614
+#: ../extensions/tab-panel.c:620
 msgid "Show tabs in a vertical panel"
 msgstr "Reiter in einer senkrechten Leiste anzeigen"
 
@@ -2208,14 +2349,21 @@ msgstr "Angezeigte Elemente"
 msgid "Customize _Toolbar..."
 msgstr "_Werkzeugleiste anpassen..."
 
-#: ../extensions/toolbar-editor.c:611
+#: ../extensions/toolbar-editor.c:612
 msgid "Toolbar Editor"
 msgstr "Werkzeugleisteneditor"
 
-#: ../extensions/toolbar-editor.c:612
+#: ../extensions/toolbar-editor.c:614
 msgid "Easily edit the toolbar layout"
 msgstr "Werkzeugleisten leicht anpassen"
 
+#: ../extensions/toolbar-editor.c:617
+msgid "Not available on this platform"
+msgstr "Auf dieser Plattform nicht verfügbar"
+
+#~ msgid "User_styles"
+#~ msgstr "Benutzer_stile"
+
 #~ msgid "Resizable text areas"
 #~ msgstr "Vergrößerbare Textfelder"
 
@@ -2237,9 +2385,6 @@ msgstr "Werkzeugleisten leicht anpassen"
 #~ msgid "Load on Startup"
 #~ msgstr "Beim Programmstart öffnen"
 
-#~ msgid "Download Folder"
-#~ msgstr "Dateispeicherordner"
-
 #~ msgid "Configure _Toolbar..."
 #~ msgstr "Werkzeugleiste anpassen..."
 
index 773350ff04b29d1ed3aa053bf92852d2b49d8467..e2fb1ffa0934c28195ea7eafeae19c2077a5ad9d 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: midori git version\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-09-05 14:46+0300\n"
-"PO-Revision-Date: 2009-09-06 23:35+0200\n"
+"POT-Creation-Date: 2009-10-12 22:09+0300\n"
+"PO-Revision-Date: 2009-10-12 23:01+0200\n"
 "Last-Translator: Evaggelos Balaskas <ebalaskas@ebalaskas.gr>\n"
 "Language-Team: Greek <nls@tux.hellug.gr>\n"
 "MIME-Version: 1.0\n"
@@ -24,11 +24,11 @@ msgid "Lightweight web browser"
 msgstr "Ελαφρύς περιηγητής ιστού"
 
 #: ../data/midori.desktop.in.h:2
-#: ../midori/main.c:1435
-#: ../midori/main.c:1609
-#: ../midori/main.c:1617
-#: ../midori/main.c:1628
-#: ../midori/midori-websettings.c:287
+#: ../midori/main.c:1469
+#: ../midori/main.c:1643
+#: ../midori/main.c:1651
+#: ../midori/main.c:1662
+#: ../midori/midori-websettings.c:289
 msgid "Midori"
 msgstr "Μιντόρι"
 
@@ -109,126 +109,128 @@ msgstr "Οι σελιδοδείκτες δεν μπορούν να αποθηκ
 msgid "The trash couldn't be saved. %s"
 msgstr "Τα απορρίμματα δεν μπορούν να αποθηκευτούν. %s"
 
-#: ../midori/main.c:993
+#: ../midori/main.c:988
+#: ../midori/main.c:1160
 #, c-format
 msgid "The session couldn't be saved. %s"
 msgstr "Η συνεδρία δεν μπορεί να αποθηκευτεί. %s"
 
-#: ../midori/main.c:1190
+#: ../midori/main.c:1189
 msgid "Midori seems to have crashed the last time it was opened. If this happened repeatedly, try one of the following options to solve the problem."
 msgstr "Το μιντόρι φαίνεται ότι κρέμασε την τελευταία φορά που άνοιξε. Εάν αυτό συνεχίζει επανειλημμένα δοκιμάστε μία από τις παρακάτω επιλογές για να επιλύσετε το πρόβλημα."
 
-#: ../midori/main.c:1205
+#: ../midori/main.c:1204
 msgid "Modify _preferences"
 msgstr "Τροποποίηση _προτιμήσεων"
 
-#: ../midori/main.c:1209
+#: ../midori/main.c:1208
 msgid "Reset the last _session"
 msgstr "Επαναφορά της τελευταίας σ_υνεδρίας"
 
-#: ../midori/main.c:1214
+#: ../midori/main.c:1213
 msgid "Disable all _extensions"
 msgstr "Απενεργοποίηση όλων των επ_εκτάσεων"
 
-#: ../midori/main.c:1435
+#: ../midori/main.c:1369
+#: ../midori/main.c:1870
+#, c-format
+msgid "The session couldn't be loaded: %s\n"
+msgstr "Η συνεδρία δεν μπορεί να φορτωθεί: %s\n"
+
+#: ../midori/main.c:1469
 msgid "No filename specified"
 msgstr "Δεν ορίστηκε όνομα αρχείου"
 
-#: ../midori/main.c:1458
+#: ../midori/main.c:1492
 msgid "An unknown error occured."
 msgstr "Συνέβει ένα άγνωστο σφάλμα."
 
-#: ../midori/main.c:1490
+#: ../midori/main.c:1524
 #, c-format
 msgid "Snapshot saved to: %s\n"
 msgstr "Το στιγμιότυπο αποθηκεύτηκε στο: %s\n"
 
-#: ../midori/main.c:1539
+#: ../midori/main.c:1573
 msgid "Run ADDRESS as a web application"
 msgstr "Άνοιγμα της διεύθυνσης ως διαδικτυακή εφαρμογή"
 
-#: ../midori/main.c:1539
+#: ../midori/main.c:1573
 msgid "ADDRESS"
 msgstr "Διεύθυνση"
 
-#: ../midori/main.c:1541
+#: ../midori/main.c:1575
 msgid "Use FOLDER as configuration folder"
 msgstr "Χρήση φακέλου ως φάκελος ρύθμισης"
 
-#: ../midori/main.c:1541
+#: ../midori/main.c:1575
 msgid "FOLDER"
 msgstr "ΦΑΚΕΛΟΣ"
 
-#: ../midori/main.c:1543
+#: ../midori/main.c:1577
 msgid "Run the specified filename as javascript"
 msgstr "Τρέξε το συγκεκριμένο όνομα αρχείου ως javascript"
 
-#: ../midori/main.c:1546
+#: ../midori/main.c:1580
 msgid "Take a snapshot of the specified URI"
 msgstr "Αποθήκευση του συγκεκριμένου URI"
 
-#: ../midori/main.c:1549
+#: ../midori/main.c:1583
 msgid "Execute the specified command"
 msgstr "Εκτέλεση συγκεκριμένης εντολής"
 
-#: ../midori/main.c:1551
+#: ../midori/main.c:1585
 msgid "Display program version"
 msgstr "Προβολή έκδοσης προγράμματος"
 
-#: ../midori/main.c:1553
+#: ../midori/main.c:1587
 msgid "Addresses"
 msgstr "Διευθύνσεις"
 
-#: ../midori/main.c:1606
+#: ../midori/main.c:1640
 msgid "[Addresses]"
 msgstr "[Διευθύνσεις"
 
-#: ../midori/main.c:1629
+#: ../midori/main.c:1663
 msgid "Please report comments, suggestions and bugs to:"
 msgstr "Παρακαλώ αναφέρατε σχόλια, προτάσεις και σφάλματα στο:"
 
-#: ../midori/main.c:1631
+#: ../midori/main.c:1665
 msgid "Check for new versions at:"
 msgstr "Έλεγχος για νέα έκδοση στο:"
 
-#: ../midori/main.c:1711
+#: ../midori/main.c:1745
 msgid "The specified configuration folder is invalid."
 msgstr "Η συγκεκριμένη ρύθμιση φακέλου είναι άκυρη."
 
-#: ../midori/main.c:1751
+#: ../midori/main.c:1793
 msgid "An instance of Midori is already running but not responding.\n"
 msgstr "Όλα τα στιγμιότυπα του Μιντόρι τρέχουν ήδη αλλά δεν ανταποκρίνονται.\n"
 
-#: ../midori/main.c:1795
+#: ../midori/main.c:1837
 #, c-format
 msgid "The search engines couldn't be loaded. %s\n"
 msgstr "Οι μηχανές αναζήτησης δεν μπορούν να φορτωθούν. %s\n"
 
-#: ../midori/main.c:1813
+#: ../midori/main.c:1855
 #, c-format
 msgid "The bookmarks couldn't be loaded: %s\n"
 msgstr "Οι σελιδοδείκτες δεν μπορούν να φορτωθούν: %s\n"
 
-#: ../midori/main.c:1828
-#, c-format
-msgid "The session couldn't be loaded: %s\n"
-msgstr "Η συνεδρία δεν μπορεί να φορτωθεί: %s\n"
-
-#: ../midori/main.c:1841
+#: ../midori/main.c:1883
 #, c-format
 msgid "The trash couldn't be loaded: %s\n"
 msgstr "Τα απορρίμματα δεν μπορούν να φορτωθούν: %s\n"
 
-#: ../midori/main.c:1854
+#: ../midori/main.c:1896
 #, c-format
 msgid "The history couldn't be loaded: %s\n"
 msgstr "Το ιστορικό δεν μπορεί να φορτωθεί: %s\n"
 
-#: ../midori/main.c:1866
+#: ../midori/main.c:1908
 msgid "The following errors occured:"
 msgstr "Δημιουργήθηκαν τα ακόλουθα σφάλματα:"
 
-#: ../midori/main.c:1882
+#: ../midori/main.c:1924
 msgid "_Ignore"
 msgstr "Α_γνόησε"
 
@@ -241,1164 +243,1200 @@ msgstr "Το αρχείο δεν βρέθηκε."
 msgid "Malformed document."
 msgstr "Κακοσχηματισμένο έγγραφο."
 
-#: ../midori/midori-array.c:432
-#: ../midori/sokoke.c:699
+#: ../midori/midori-array.c:437
+#: ../midori/sokoke.c:798
 #, c-format
 msgid "Writing failed."
 msgstr "Αποτυχία εγγραφής."
 
-#: ../midori/midori-browser.c:315
-#: ../midori/midori-browser.c:4327
-#: ../midori/midori-browser.c:4333
+#: ../midori/midori-browser.c:310
+#: ../midori/midori-browser.c:4530
+#: ../midori/midori-browser.c:4536
 msgid "Reload the current page"
 msgstr "Ανανέωση της τρέχουσας σελίδας"
 
-#: ../midori/midori-browser.c:326
-#: ../midori/midori-browser.c:4330
+#: ../midori/midori-browser.c:321
+#: ../midori/midori-browser.c:4533
 msgid "Stop loading the current page"
 msgstr "Σταμάτημα φόρτωσης της τρέχουσας σελίδας"
 
-#: ../midori/midori-browser.c:417
+#: ../midori/midori-browser.c:416
 #, c-format
 msgid "%d%% loaded"
 msgstr "%d%% φορτώθηκε"
 
-#: ../midori/midori-browser.c:442
+#: ../midori/midori-browser.c:441
 #, c-format
 msgid "Unexpected action '%s'."
 msgstr "Αναπάντεχη ενέργεια '%s'."
 
-#: ../midori/midori-browser.c:627
+#: ../midori/midori-browser.c:638
 msgid "New folder"
 msgstr "Νέος φάκελος"
 
-#: ../midori/midori-browser.c:627
+#: ../midori/midori-browser.c:638
 msgid "Edit folder"
 msgstr "Επεξεργασία φακέλου"
 
-#: ../midori/midori-browser.c:629
+#: ../midori/midori-browser.c:640
 msgid "New bookmark"
 msgstr "Νέος σελιδοδείκτης"
 
-#: ../midori/midori-browser.c:629
+#: ../midori/midori-browser.c:640
 msgid "Edit bookmark"
 msgstr "Επεξεργασία σελιδοδείκτη"
 
-#: ../midori/midori-browser.c:659
+#: ../midori/midori-browser.c:670
 msgid "_Title:"
 msgstr "_Τίτλος:"
 
-#: ../midori/midori-browser.c:672
+#: ../midori/midori-browser.c:683
 #: ../midori/midori-searchaction.c:952
 msgid "_Description:"
 msgstr "_Περιγραφή:"
 
-#: ../midori/midori-browser.c:691
+#: ../midori/midori-browser.c:702
 #: ../midori/midori-searchaction.c:966
 #: ../extensions/feed-panel/main.c:368
 msgid "_Address:"
 msgstr "_Διεύθυνση:"
 
-#: ../midori/midori-browser.c:710
+#: ../midori/midori-browser.c:725
 msgid "_Folder:"
 msgstr "_Φάκελος:"
 
-#: ../midori/midori-browser.c:715
-#: ../midori/midori-browser.c:756
+#: ../midori/midori-browser.c:730
+#: ../midori/midori-browser.c:771
 msgid "Toplevel folder"
 msgstr "Αρχικός φάκελος"
 
-#: ../midori/midori-browser.c:834
+#: ../midori/midori-browser.c:849
 msgid "Save file as"
 msgstr "Αποθήκευση αρχείου ως"
 
-#: ../midori/midori-browser.c:1211
+#: ../midori/midori-browser.c:1226
 #: ../panels/midori-transfers.c:272
 #, c-format
 msgid "%s of %s"
 msgstr "%s από %s"
 
-#: ../midori/midori-browser.c:1248
+#: ../midori/midori-browser.c:1263
 #, c-format
 msgid "The file '<b>%s</b>' has been downloaded."
 msgstr "Το αρχείο '<b>%s</b>' έχει κατέβει."
 
-#: ../midori/midori-browser.c:1252
+#: ../midori/midori-browser.c:1267
 msgid "Transfer completed"
 msgstr "Η μεταφορά ολοκληρώθηκε"
 
-#: ../midori/midori-browser.c:1393
+#: ../midori/midori-browser.c:1408
 msgid "Save file"
 msgstr "Αποθήκευση αρχείου"
 
-#: ../midori/midori-browser.c:2060
+#: ../midori/midori-browser.c:2069
 msgid "Open file"
 msgstr "Άνοιγμα αρχείου"
 
-#: ../midori/midori-browser.c:3268
+#: ../midori/midori-browser.c:3419
 #: ../extensions/feed-panel/main.c:356
 msgid "New feed"
 msgstr "Νέα ροή"
 
-#: ../midori/midori-browser.c:3523
+#: ../midori/midori-browser.c:3674
 #: ../panels/midori-bookmarks.c:781
 #: ../panels/midori-history.c:812
 msgid "Open all in _Tabs"
 msgstr "Άνοιγμα όλων σε _καρτέλες"
 
-#: ../midori/midori-browser.c:3530
+#: ../midori/midori-browser.c:3681
 #: ../panels/midori-bookmarks.c:787
 #: ../panels/midori-history.c:818
 #: ../extensions/feed-panel/feed-panel.c:542
 msgid "Open in New _Tab"
 msgstr "Άνοιγμα σε νέα_καρτέλα"
 
-#: ../midori/midori-browser.c:3533
+#: ../midori/midori-browser.c:3684
 #: ../panels/midori-bookmarks.c:789
 #: ../panels/midori-history.c:820
 #: ../extensions/feed-panel/feed-panel.c:544
 msgid "Open in New _Window"
 msgstr "Άνοιγμα σε νέο _παράθυρο"
 
-#: ../midori/midori-browser.c:3843
+#: ../midori/midori-browser.c:3994
 msgid "Clear Private Data"
 msgstr "Καθαρισμός προσωπικών δεδομένων"
 
-#: ../midori/midori-browser.c:3847
+#: ../midori/midori-browser.c:3998
 msgid "_Clear private data"
 msgstr "_Καθαρισμός προσωπικών δεδομένων"
 
-#: ../midori/midori-browser.c:3860
+#: ../midori/midori-browser.c:4011
 msgid "Clear the following data:"
 msgstr "Καθαρισμός των παρακάτω δεδομένων:"
 
-#: ../midori/midori-browser.c:3870
-#: ../midori/midori-preferences.c:665
+#: ../midori/midori-browser.c:4021
+#: ../midori/midori-preferences.c:675
 #: ../panels/midori-history.c:108
 msgid "History"
 msgstr "Ιστορικό"
 
-#: ../midori/midori-browser.c:3875
+#: ../midori/midori-browser.c:4026
 msgid "Cookies"
 msgstr "Cookies"
 
-#: ../midori/midori-browser.c:3880
+#: ../midori/midori-browser.c:4031
 msgid "'Flash' Cookies"
 msgstr "Άδειασμα των cookies"
 
-#: ../midori/midori-browser.c:3885
+#: ../midori/midori-browser.c:4036
 msgid "Website icons"
 msgstr "Εικονίδια ιστότοπων"
 
-#: ../midori/midori-browser.c:3890
-#: ../midori/sokoke.c:873
+#: ../midori/midori-browser.c:4041
+#: ../midori/sokoke.c:971
 msgid "_Closed Tabs"
 msgstr "_Κλειστές καρτέλες"
 
-#: ../midori/midori-browser.c:3898
+#: ../midori/midori-browser.c:4049
 msgid "Clear private data when _quitting Midori"
 msgstr "Καθαρισμός προσωπικών δεδομένων κατά τον _τερματισμό του Midori"
 
-#: ../midori/midori-browser.c:3979
+#: ../midori/midori-browser.c:4145
 msgid "A lightweight web browser."
 msgstr "Ένας ελαφρύς περιηγητής ιστού"
 
-#: ../midori/midori-browser.c:3995
+#: ../midori/midori-browser.c:4161
 msgid "translator-credits"
 msgstr "Ευάγγελος Μπαλάσκας <ebalaskas@ebalaskas.gr> 2008"
 
-#: ../midori/midori-browser.c:4261
+#: ../midori/midori-browser.c:4456
 msgid "_File"
 msgstr "_Αρχείο"
 
-#: ../midori/midori-browser.c:4263
-#: ../midori/sokoke.c:874
+#: ../midori/midori-browser.c:4458
+#: ../midori/sokoke.c:972
 msgid "New _Window"
 msgstr "Νέο _παράθυρο"
 
-#: ../midori/midori-browser.c:4264
+#: ../midori/midori-browser.c:4459
 msgid "Open a new window"
 msgstr "Άνοιγμα ενός νέου παραθύρου"
 
-#: ../midori/midori-browser.c:4267
+#: ../midori/midori-browser.c:4462
 msgid "Open a new tab"
 msgstr "Άνοιγμα μίας νέας καρτέλας"
 
-#: ../midori/midori-browser.c:4270
+#: ../midori/midori-browser.c:4465
 msgid "Open a file"
 msgstr "Άνοιγμα αρχείου"
 
-#: ../midori/midori-browser.c:4273
+#: ../midori/midori-browser.c:4468
 msgid "Save to a file"
 msgstr "Αποθήκευση σε αρχείου"
 
-#: ../midori/midori-browser.c:4275
+#: ../midori/midori-browser.c:4470
 msgid "Add to Speed _dial"
 msgstr "Προσθήκη σε γρήγορη σ_ύνδεση"
 
-#: ../midori/midori-browser.c:4276
+#: ../midori/midori-browser.c:4471
 msgid "Add shortcut to speed dial"
 msgstr "Προσθήκη συντόμευσης σε γρήγορη σύνδεση"
 
-#: ../midori/midori-browser.c:4278
+#: ../midori/midori-browser.c:4473
 msgid "_Close Tab"
 msgstr "_Κλείσιμο καρτέλας"
 
-#: ../midori/midori-browser.c:4279
+#: ../midori/midori-browser.c:4474
 msgid "Close the current tab"
 msgstr "Κλείσιμο της τρέχουσας καρτέλας"
 
-#: ../midori/midori-browser.c:4281
+#: ../midori/midori-browser.c:4476
 msgid "C_lose Window"
 msgstr "Κ_λείσιμο παραθύρου"
 
-#: ../midori/midori-browser.c:4282
+#: ../midori/midori-browser.c:4477
 msgid "Close this window"
 msgstr "Κλείσιμο αυτού του παραθύρου"
 
-#: ../midori/midori-browser.c:4285
+#: ../midori/midori-browser.c:4480
 msgid "Print the current page"
 msgstr "Εκτύπωση της τρέχουσας σελίδας"
 
-#: ../midori/midori-browser.c:4288
+#: ../midori/midori-browser.c:4483
 msgid "Quit the application"
 msgstr "Έξοδος από την εφαρμογή"
 
-#: ../midori/midori-browser.c:4290
+#: ../midori/midori-browser.c:4485
 msgid "_Edit"
 msgstr "_Επεξεργασία"
 
-#: ../midori/midori-browser.c:4293
+#: ../midori/midori-browser.c:4489
+msgid "Undo the last modification"
+msgstr "Αναίρεση της τελευταίας τροποποίησης"
+
+#: ../midori/midori-browser.c:4492
+msgid "Redo the last modification"
+msgstr "Επανάληψη της τελευταίας τροποποίησης"
+
+#: ../midori/midori-browser.c:4496
 msgid "Cut the selected text"
 msgstr "Αποκοπή επιλεγμένου κειμένου"
 
-#: ../midori/midori-browser.c:4296
-#: ../midori/midori-browser.c:4299
+#: ../midori/midori-browser.c:4499
+#: ../midori/midori-browser.c:4502
 msgid "Copy the selected text"
 msgstr "Αντιγραφή επιλεγμένου κειμένου"
 
-#: ../midori/midori-browser.c:4302
+#: ../midori/midori-browser.c:4505
 msgid "Paste text from the clipboard"
 msgstr "Επικόλληση κειμένου από το πρόχειρο"
 
-#: ../midori/midori-browser.c:4305
+#: ../midori/midori-browser.c:4508
 msgid "Delete the selected text"
 msgstr "Διαγραφή του επιλεγμένου κειμένου"
 
-#: ../midori/midori-browser.c:4308
+#: ../midori/midori-browser.c:4511
 msgid "Select all text"
 msgstr "Επιλογή όλου του κειμένου"
 
-#: ../midori/midori-browser.c:4311
+#: ../midori/midori-browser.c:4514
 msgid "Find a word or phrase in the page"
 msgstr "Αναζήτηση μίας λέξης ή φράσης στην σελίδα"
 
-#: ../midori/midori-browser.c:4313
+#: ../midori/midori-browser.c:4516
 msgid "Find _Next"
 msgstr "Εύρεση επ_όμενο"
 
-#: ../midori/midori-browser.c:4314
+#: ../midori/midori-browser.c:4517
 msgid "Find the next occurrence of a word or phrase"
 msgstr "Εύρεση της επόμενης ύπαρξης της λέξης ή της φράσης"
 
-#: ../midori/midori-browser.c:4316
+#: ../midori/midori-browser.c:4519
 msgid "Find _Previous"
 msgstr "Εύρεση _προηγούμενο"
 
-#: ../midori/midori-browser.c:4317
+#: ../midori/midori-browser.c:4520
 msgid "Find the previous occurrence of a word or phrase"
 msgstr "Εύρεση της προηγούμενης ύπαρξης της λέξης ή της φράσης"
 
-#: ../midori/midori-browser.c:4321
+#: ../midori/midori-browser.c:4524
 msgid "Configure the application preferences"
 msgstr "Παραμετροποίηση των ρυθμίσεων της εφαρμογής"
 
-#: ../midori/midori-browser.c:4323
+#: ../midori/midori-browser.c:4526
 msgid "_View"
 msgstr "_Εμφάνιση"
 
-#: ../midori/midori-browser.c:4324
+#: ../midori/midori-browser.c:4527
 msgid "_Toolbars"
 msgstr "_Εργαλειοθήκες"
 
-#: ../midori/midori-browser.c:4336
+#: ../midori/midori-browser.c:4539
 msgid "Increase the zoom level"
 msgstr "Αύξηση του επίπεδου εστίασης"
 
-#: ../midori/midori-browser.c:4339
+#: ../midori/midori-browser.c:4542
 msgid "Decrease the zoom level"
 msgstr "Μείωση του επιπέδου εστίασης"
 
-#: ../midori/midori-browser.c:4342
+#: ../midori/midori-browser.c:4545
 msgid "Reset the zoom level"
 msgstr "Επαναφορά του επιπέδου εστίασης"
 
-#: ../midori/midori-browser.c:4343
+#: ../midori/midori-browser.c:4546
 msgid "_Encoding"
 msgstr "_Κωδικοποίηση"
 
-#: ../midori/midori-browser.c:4345
+#: ../midori/midori-browser.c:4548
 msgid "View So_urce"
 msgstr "Προβολή κ_ώδικα"
 
-#: ../midori/midori-browser.c:4346
+#: ../midori/midori-browser.c:4549
 msgid "View the source code of the page"
 msgstr "Προβολή του πηγαίου κώδικα αυτής της σελίδας"
 
-#: ../midori/midori-browser.c:4348
+#: ../midori/midori-browser.c:4551
 msgid "View Selection Source"
 msgstr "Προβολή του επιλεγμένου κώδικα"
 
-#: ../midori/midori-browser.c:4349
+#: ../midori/midori-browser.c:4552
 msgid "View the source code of the selection"
 msgstr "Προβολή του πηγαίου κώδικα του επιλεγμένου"
 
-#: ../midori/midori-browser.c:4353
+#: ../midori/midori-browser.c:4556
 msgid "Toggle fullscreen view"
 msgstr "Εναλλαγή σε πλήρη οθόνη"
 
-#: ../midori/midori-browser.c:4355
+#: ../midori/midori-browser.c:4558
 msgid "_Go"
 msgstr "_Μετάβαση"
 
-#: ../midori/midori-browser.c:4358
+#: ../midori/midori-browser.c:4561
 msgid "Go back to the previous page"
 msgstr "Μετάβαση στην προηγούμενη σελίδα"
 
-#: ../midori/midori-browser.c:4361
+#: ../midori/midori-browser.c:4564
 msgid "Go forward to the next page"
 msgstr "Μετάβαση στην επόμενη σελίδα"
 
-#: ../midori/midori-browser.c:4364
+#: ../midori/midori-browser.c:4567
 msgid "Go to your homepage"
 msgstr "Μετάβαση στην αρχική σελίδα"
 
-#: ../midori/midori-browser.c:4366
+#: ../midori/midori-browser.c:4569
 msgid "Empty Trash"
 msgstr "Άδειασμα αποριμμάτων"
 
-#: ../midori/midori-browser.c:4367
+#: ../midori/midori-browser.c:4570
 msgid "Delete the contents of the trash"
 msgstr "Διαγραφή των περιεχομένων των απορριμάτων"
 
-#: ../midori/midori-browser.c:4369
+#: ../midori/midori-browser.c:4572
 msgid "Undo _Close Tab"
 msgstr "Αναίρεση κλ_είσιμο καρτέλας"
 
-#: ../midori/midori-browser.c:4370
+#: ../midori/midori-browser.c:4573
 msgid "Open the last closed tab"
 msgstr "Άνοιγμα της τελευταίας καρτέλας που έκλεισε"
 
-#: ../midori/midori-browser.c:4374
+#: ../midori/midori-browser.c:4577
 #: ../panels/midori-bookmarks.c:231
 msgid "Add a new bookmark"
 msgstr "Προσθήκη ενός νέου σελιδοδείκτη"
 
-#: ../midori/midori-browser.c:4376
+#: ../midori/midori-browser.c:4579
 msgid "Add a new _folder"
 msgstr "Προσθήκη ενός νέου φ_ακέλου"
 
-#: ../midori/midori-browser.c:4377
+#: ../midori/midori-browser.c:4580
 msgid "Add a new bookmark folder"
 msgstr "Προσθήκη ενός νέου φακέλου σελιδοδεικτών"
 
-#: ../midori/midori-browser.c:4379
+#: ../midori/midori-browser.c:4582
 #: ../midori/midori-searchaction.c:497
 msgid "_Manage Search Engines"
 msgstr "_Διαχείριση των μηχανών αναζήτησης"
 
-#: ../midori/midori-browser.c:4380
+#: ../midori/midori-browser.c:4583
 msgid "Add, edit and remove search engines..."
 msgstr "Προσθήκη, επεξεργασία και διαγραφή των μηχανών αναζήτησης..."
 
-#: ../midori/midori-browser.c:4383
+#: ../midori/midori-browser.c:4586
 msgid "_Clear Private Data"
 msgstr "_Καθαρισμός προσωπικών δεδομένων"
 
-#: ../midori/midori-browser.c:4384
+#: ../midori/midori-browser.c:4587
 msgid "Clear private data..."
 msgstr "Καθαρισμός προσωπικών δεδομένων..."
 
-#: ../midori/midori-browser.c:4388
+#: ../midori/midori-browser.c:4591
 msgid "_Previous Tab"
 msgstr "_Προηγούμενη καρτέλα"
 
-#: ../midori/midori-browser.c:4389
+#: ../midori/midori-browser.c:4592
 msgid "Switch to the previous tab"
 msgstr "Μετάβαση στην προηγούμενη καρτέλα"
 
-#: ../midori/midori-browser.c:4391
+#: ../midori/midori-browser.c:4594
 msgid "_Next Tab"
 msgstr "Επόμε_νη καρτέλα"
 
-#: ../midori/midori-browser.c:4392
+#: ../midori/midori-browser.c:4595
 msgid "Switch to the next tab"
 msgstr "Μετάβαση στην επόμενη καρτέλα"
 
-#: ../midori/midori-browser.c:4394
+#: ../midori/midori-browser.c:4597
+msgid "Focus _Current Tab"
+msgstr "Εστίαση στην _ισχύουσα καρτέλα"
+
+#: ../midori/midori-browser.c:4598
+msgid "Focus the current tab"
+msgstr "Εστίαση στην ισχύουσα καρτέλα"
+
+#: ../midori/midori-browser.c:4600
+msgid "Open last _session"
+msgstr "Επαναφορά της τελευταίας _συνεδρίας"
+
+#: ../midori/midori-browser.c:4601
+msgid "Open the tabs saved in the last session"
+msgstr "Άνοιγμα των καρτέλων που αποθηκεύτηκαν κατά την τελευταία συνεδρία"
+
+#: ../midori/midori-browser.c:4603
 msgid "_Help"
 msgstr "_Βοήθεια"
 
-#: ../midori/midori-browser.c:4396
+#: ../midori/midori-browser.c:4605
 msgid "_Contents"
 msgstr "_Περιεχόμενα"
 
-#: ../midori/midori-browser.c:4397
+#: ../midori/midori-browser.c:4606
 msgid "Show the documentation"
 msgstr "Εμφάνιση της τεκμηρίωσης"
 
-#: ../midori/midori-browser.c:4399
+#: ../midori/midori-browser.c:4608
 msgid "_Frequent Questions"
 msgstr "Σ_υχνές ερωτήσεις"
 
-#: ../midori/midori-browser.c:4400
+#: ../midori/midori-browser.c:4609
 msgid "Show the Frequently Asked Questions"
 msgstr "Εμφάνιση των πιο συχνά ερωτηθέντων ερωτήσεων"
 
-#: ../midori/midori-browser.c:4402
+#: ../midori/midori-browser.c:4611
 msgid "_Report a Bug"
 msgstr "Α_ναφορά σφάλματος"
 
-#: ../midori/midori-browser.c:4403
+#: ../midori/midori-browser.c:4612
 msgid "Open Midori's bug tracker"
 msgstr "Άνοιγμα καταγραφής σφαλμάτων midori"
 
-#: ../midori/midori-browser.c:4406
+#: ../midori/midori-browser.c:4615
 msgid "Show information about the program"
 msgstr "Εμφάνιση πληροφοριών σχετικά με την εφαρμογή"
 
-#: ../midori/midori-browser.c:4413
+#: ../midori/midori-browser.c:4622
 msgid "P_rivate Browsing"
 msgstr "Π_ροσωπική περιήγηση"
 
-#: ../midori/midori-browser.c:4414
+#: ../midori/midori-browser.c:4623
 msgid "Don't save any private data while browsing"
 msgstr "Να μην γίνει αποθήκευση προσωπικών δεδομένων κατά την περιήγηση"
 
-#: ../midori/midori-browser.c:4419
+#: ../midori/midori-browser.c:4628
 msgid "_Menubar"
 msgstr "_Μπάρα μενού"
 
-#: ../midori/midori-browser.c:4420
+#: ../midori/midori-browser.c:4629
 msgid "Show menubar"
 msgstr "Προβολή μπάρας μενού"
 
-#: ../midori/midori-browser.c:4423
+#: ../midori/midori-browser.c:4632
 msgid "_Navigationbar"
 msgstr "_Μπάρα περιήγησης"
 
-#: ../midori/midori-browser.c:4424
+#: ../midori/midori-browser.c:4633
 msgid "Show navigationbar"
 msgstr "Εμφάνιση περιήγησης"
 
-#: ../midori/midori-browser.c:4427
+#: ../midori/midori-browser.c:4636
 msgid "Side_panel"
 msgstr "Πλαϊνό _πλαίσιο"
 
-#: ../midori/midori-browser.c:4428
+#: ../midori/midori-browser.c:4637
 msgid "Show sidepanel"
 msgstr "Εμφάνιση πλαϊνού πλαισίου"
 
-#: ../midori/midori-browser.c:4431
+#: ../midori/midori-browser.c:4640
 msgid "_Bookmarkbar"
 msgstr "_Μπάρα σελιδοδείκτη"
 
-#: ../midori/midori-browser.c:4432
+#: ../midori/midori-browser.c:4641
 msgid "Show bookmarkbar"
 msgstr "Εμφάνιση μπάρα σελιδοδείκτη"
 
-#: ../midori/midori-browser.c:4435
+#: ../midori/midori-browser.c:4644
 msgid "_Transferbar"
 msgstr "_Μπάρα μεταφορών"
 
-#: ../midori/midori-browser.c:4436
+#: ../midori/midori-browser.c:4645
 msgid "Show transferbar"
 msgstr "Εμφάνιση μπάρα μεταφορών"
 
-#: ../midori/midori-browser.c:4439
+#: ../midori/midori-browser.c:4648
 msgid "_Statusbar"
 msgstr "_Γραμμή κατάστασης"
 
-#: ../midori/midori-browser.c:4440
+#: ../midori/midori-browser.c:4649
 msgid "Show statusbar"
 msgstr "Εμφάνιση γραμμής κατάστασης"
 
-#: ../midori/midori-browser.c:4447
+#: ../midori/midori-browser.c:4656
 msgid "_Automatic"
 msgstr "_Αυτόματα"
 
-#: ../midori/midori-browser.c:4450
-#: ../midori/midori-websettings.c:214
+#: ../midori/midori-browser.c:4659
+#: ../midori/midori-websettings.c:216
 msgid "Chinese (BIG5)"
 msgstr "Κινέζικα (BIG5)"
 
 #. i18n: A double underscore "__" is used to prevent an unwanted mnemonic
-#: ../midori/midori-browser.c:4454
+#: ../midori/midori-browser.c:4663
 msgid "Japanese (SHIFT__JIS)"
 msgstr "Ιαπωνικά (SHIFT__JIS)"
 
-#: ../midori/midori-browser.c:4457
-#: ../midori/midori-websettings.c:216
+#: ../midori/midori-browser.c:4666
+#: ../midori/midori-websettings.c:218
 msgid "Russian (KOI8-R)"
 msgstr "Ρωσικά (KOI8-R)"
 
-#: ../midori/midori-browser.c:4460
-#: ../midori/midori-websettings.c:217
+#: ../midori/midori-browser.c:4669
+#: ../midori/midori-websettings.c:219
 msgid "Unicode (UTF-8)"
 msgstr "Unicode (UTF-8)"
 
-#: ../midori/midori-browser.c:4463
-#: ../midori/midori-websettings.c:218
+#: ../midori/midori-browser.c:4672
+#: ../midori/midori-websettings.c:220
 msgid "Western (ISO-8859-1)"
 msgstr "Δυτικά (ISO-8859-1)"
 
-#: ../midori/midori-browser.c:4466
-#: ../midori/midori-websettings.c:219
-#: ../midori/midori-websettings.c:291
+#: ../midori/midori-browser.c:4675
+#: ../midori/midori-websettings.c:221
+#: ../midori/midori-websettings.c:294
 msgid "Custom..."
 msgstr "Προσαρμογή..."
 
-#: ../midori/midori-browser.c:4907
+#: ../midori/midori-browser.c:5159
 msgid "_Separator"
 msgstr "_Διαχωριστής"
 
-#: ../midori/midori-browser.c:4914
+#: ../midori/midori-browser.c:5166
 msgid "_Location..."
 msgstr "_Τοποθεσία:"
 
-#: ../midori/midori-browser.c:4916
+#: ../midori/midori-browser.c:5168
 msgid "Open a particular location"
 msgstr "Άνοιγμα συγκεκριμένης τοποθεσίας"
 
-#: ../midori/midori-browser.c:4940
+#: ../midori/midori-browser.c:5192
 msgid "_Web Search..."
 msgstr "_Αναζήτηση ιστού..."
 
-#: ../midori/midori-browser.c:4942
+#: ../midori/midori-browser.c:5194
 msgid "Run a web search"
 msgstr "Εκκίνηση μίας αναζήτησης ιστού"
 
-#: ../midori/midori-browser.c:4963
+#: ../midori/midori-browser.c:5215
 msgid "Reopen a previously closed tab or window"
 msgstr "Ξανα-άνοιγμα προηγούμενης καρτέλας ή παράθυρο που έχει κλείσει"
 
-#: ../midori/midori-browser.c:4978
+#: ../midori/midori-browser.c:5230
 msgid "_Recently visited pages"
 msgstr "_Πρόσφατες επισκεπτόμενες σελίδες "
 
-#: ../midori/midori-browser.c:4980
+#: ../midori/midori-browser.c:5232
 msgid "Reopen pages that you visited earlier"
 msgstr "Ξανα-άνοιγμα σελίδων που επισκεφτήκατε νωρίτερα"
 
-#: ../midori/midori-browser.c:4995
-#: ../midori/sokoke.c:862
+#: ../midori/midori-browser.c:5247
+#: ../midori/sokoke.c:961
 msgid "_Bookmarks"
 msgstr "_Σελιδοδείκτες"
 
-#: ../midori/midori-browser.c:4997
+#: ../midori/midori-browser.c:5249
 msgid "Show the saved bookmarks"
 msgstr "Εμφάνιση των αποθηκευμένων σελιδοδεικτών"
 
-#: ../midori/midori-browser.c:5012
+#: ../midori/midori-browser.c:5264
 msgid "_Tools"
 msgstr "_Εργαλεία"
 
-#: ../midori/midori-browser.c:5024
+#: ../midori/midori-browser.c:5276
 msgid "_Window"
 msgstr "_Παράθυρο"
 
-#: ../midori/midori-browser.c:5026
+#: ../midori/midori-browser.c:5278
 msgid "Show a list of all open tabs"
 msgstr "Εμφάνιση μίας λίστας με όλα τις ανοιχτές καρτέλες"
 
-#: ../midori/midori-browser.c:5040
+#: ../midori/midori-browser.c:5292
 msgid "_Menu"
 msgstr "_Μενού"
 
-#: ../midori/midori-browser.c:5042
+#: ../midori/midori-browser.c:5294
 msgid "Menu"
 msgstr "Μενού"
 
 #. i18n: A panel at the bottom, to search text in pages
-#: ../midori/midori-browser.c:5228
+#: ../midori/midori-browser.c:5477
 msgid "_Inline Find:"
 msgstr "Ε_νσωματωμένη αναζήτηση:"
 
-#: ../midori/midori-browser.c:5253
+#: ../midori/midori-browser.c:5502
 msgid "Previous"
 msgstr "Προηγούμενο"
 
-#: ../midori/midori-browser.c:5258
+#: ../midori/midori-browser.c:5507
 msgid "Next"
 msgstr "Επόμενο"
 
-#: ../midori/midori-browser.c:5263
+#: ../midori/midori-browser.c:5512
 msgid "Match Case"
 msgstr "Ταίριασμα πεζών"
 
-#: ../midori/midori-browser.c:5271
+#: ../midori/midori-browser.c:5520
 msgid "Highlight Matches"
 msgstr "Τονισμός των ταιριασμάτων"
 
-#: ../midori/midori-browser.c:5281
+#: ../midori/midori-browser.c:5530
 msgid "Close Findbar"
 msgstr "Κλείσιμο μπάρας εύρεσης"
 
-#: ../midori/midori-browser.c:5316
+#: ../midori/midori-browser.c:5565
 #: ../panels/midori-transfers.c:143
 msgid "Clear All"
 msgstr "Καθαρισμός όλων"
 
-#: ../midori/midori-browser.c:5670
+#: ../midori/midori-browser.c:5919
 #, c-format
 msgid "Unexpected setting '%s'"
 msgstr "Αναπάντεχη ρύθμιση '%s'"
 
-#: ../midori/midori-locationaction.c:941
+#: ../midori/midori-locationaction.c:968
 #, c-format
 msgid "Search with %s"
 msgstr "Αναζήτηση με %s"
 
-#: ../midori/midori-panel.c:382
-#: ../midori/midori-panel.c:384
+#: ../midori/midori-panel.c:381
+#: ../midori/midori-panel.c:383
 msgid "Detach chosen panel from the window"
 msgstr "Αποσύνδεση επιλεγμένου πλαισίου από το παράθυρο"
 
-#: ../midori/midori-panel.c:394
-#: ../midori/midori-panel.c:396
-#: ../midori/midori-panel.c:577
-#: ../midori/midori-panel.c:580
+#: ../midori/midori-panel.c:393
+#: ../midori/midori-panel.c:395
+#: ../midori/midori-panel.c:576
+#: ../midori/midori-panel.c:579
 msgid "Align sidepanel to the right"
 msgstr "Εάν θα ευθυγραμμίζεται το πλαϊνό πλαίσιο στα δεξιά"
 
+#: ../midori/midori-panel.c:405
 #: ../midori/midori-panel.c:406
-#: ../midori/midori-panel.c:407
 msgid "Close panel"
 msgstr "Κλείσιμο πλαισίου"
 
-#: ../midori/midori-panel.c:578
-#: ../midori/midori-panel.c:581
+#: ../midori/midori-panel.c:577
+#: ../midori/midori-panel.c:580
 msgid "Align sidepanel to the left"
 msgstr "Εάν θα ευθυγραμμίζεται το πλαϊνό πλαίσιο στα αριστερά"
 
-#: ../midori/midori-panel.c:704
+#: ../midori/midori-panel.c:703
 msgid "Show panel _titles"
 msgstr "Εμφάνιση των _τίτλων στο ταμπλό"
 
-#: ../midori/midori-panel.c:712
+#: ../midori/midori-panel.c:711
 msgid "Show operating _controls"
 msgstr "Εμφάνιση των στοιχείων λειτουργίας"
 
-#: ../midori/midori-panel.c:783
+#: ../midori/midori-panel.c:782
 msgid "Options"
 msgstr "Επιλογές"
 
-#: ../midori/midori-websettings.c:197
+#: ../midori/midori-websettings.c:199
 msgid "Show Blank page"
 msgstr "Εμφάνιση κενής σελίδας"
 
-#: ../midori/midori-websettings.c:198
+#: ../midori/midori-websettings.c:200
 msgid "Show Homepage"
 msgstr "Εμφάνιση αρχικής σελίδας"
 
-#: ../midori/midori-websettings.c:199
+#: ../midori/midori-websettings.c:201
 msgid "Show last open tabs"
 msgstr "Εμφάνιση των τελευταίων ανοιχτών καρτέλων"
 
-#: ../midori/midori-websettings.c:215
+#: ../midori/midori-websettings.c:217
 msgid "Japanese (SHIFT_JIS)"
 msgstr "Ιαπωνικά (SHIFT_JIS)"
 
-#: ../midori/midori-websettings.c:234
+#: ../midori/midori-websettings.c:236
 msgid "New tab"
 msgstr "Νέα καρτέλα"
 
-#: ../midori/midori-websettings.c:235
+#: ../midori/midori-websettings.c:237
 msgid "New window"
 msgstr "Νέο παράθυρο"
 
-#: ../midori/midori-websettings.c:236
+#: ../midori/midori-websettings.c:238
 msgid "Current tab"
 msgstr "Τρέχον καρτέλα"
 
-#: ../midori/midori-websettings.c:251
+#: ../midori/midori-websettings.c:253
 msgid "Default"
 msgstr "Προκαθορισμένο"
 
-#: ../midori/midori-websettings.c:252
+#: ../midori/midori-websettings.c:254
 msgid "Icons"
 msgstr "Εικονίδια"
 
-#: ../midori/midori-websettings.c:253
+#: ../midori/midori-websettings.c:255
 msgid "Text"
 msgstr "Κείμενο"
 
-#: ../midori/midori-websettings.c:254
+#: ../midori/midori-websettings.c:256
 msgid "Icons and text"
 msgstr "Εικονίδια με κείμενο"
 
-#: ../midori/midori-websettings.c:255
+#: ../midori/midori-websettings.c:257
 msgid "Text beside icons"
 msgstr "Κείμενο δίπλα στα εικονίδια"
 
-#: ../midori/midori-websettings.c:270
+#: ../midori/midori-websettings.c:272
 msgid "All cookies"
 msgstr "Όλα τα cookies"
 
-#: ../midori/midori-websettings.c:271
+#: ../midori/midori-websettings.c:273
 msgid "Session cookies"
 msgstr "Cookies συνεδρίας"
 
-#: ../midori/midori-websettings.c:272
-#: ../panels/midori-addons.c:94
+#: ../midori/midori-websettings.c:274
+#: ../panels/midori-addons.c:93
 #: ../extensions/shortcuts.c:93
 msgid "None"
 msgstr "Κανένα"
 
-#: ../midori/midori-websettings.c:288
+#: ../midori/midori-websettings.c:290
 msgid "Safari"
 msgstr "Safari"
 
-#: ../midori/midori-websettings.c:289
+#: ../midori/midori-websettings.c:291
+msgid "iPhone"
+msgstr "iPhone"
+
+#: ../midori/midori-websettings.c:292
 msgid "Firefox"
 msgstr "Firefox"
 
-#: ../midori/midori-websettings.c:290
+#: ../midori/midori-websettings.c:293
 msgid "Internet Explorer"
 msgstr "Internet Explorer"
 
-#: ../midori/midori-websettings.c:343
+#: ../midori/midori-websettings.c:346
 msgid "Remember last window size"
 msgstr "Απομνημόνευση μεγέθους τελευταίου παραθύρου"
 
-#: ../midori/midori-websettings.c:344
+#: ../midori/midori-websettings.c:347
 msgid "Whether to save the last window size"
 msgstr "Εάν θα αποθηκεύεται το μέγεθος του τελευταίου παραθύρου"
 
-#: ../midori/midori-websettings.c:352
+#: ../midori/midori-websettings.c:355
 msgid "Last window width"
 msgstr "Πλάτος τελευταίου παραθύρου"
 
-#: ../midori/midori-websettings.c:353
+#: ../midori/midori-websettings.c:356
 msgid "The last saved window width"
 msgstr "Το τελευταίο αποθηκευμένο πλάτος παραθύρου"
 
-#: ../midori/midori-websettings.c:361
+#: ../midori/midori-websettings.c:364
 msgid "Last window height"
 msgstr "Ύψος τελευταίου παραθύρου"
 
-#: ../midori/midori-websettings.c:362
+#: ../midori/midori-websettings.c:365
 msgid "The last saved window height"
 msgstr "Το τελευταίο ύψος αποθηκευμένου παραθύρου"
 
-#: ../midori/midori-websettings.c:387
+#: ../midori/midori-websettings.c:390
 msgid "Last panel position"
 msgstr "Η τελευταία θέση πλαισίου"
 
-#: ../midori/midori-websettings.c:388
+#: ../midori/midori-websettings.c:391
 msgid "The last saved panel position"
 msgstr "Η τελευταία αποθηκευμένη θέση πλαισίου"
 
 #. i18n: The internal index of the last opened panel
-#: ../midori/midori-websettings.c:397
+#: ../midori/midori-websettings.c:400
 msgid "Last panel page"
 msgstr "Η τελευταία σελίδα πλαισίου"
 
-#: ../midori/midori-websettings.c:398
+#: ../midori/midori-websettings.c:401
 msgid "The last saved panel page"
 msgstr "Η τελευταία αποθηκευμένη σελίδα πλαισίου"
 
-#: ../midori/midori-websettings.c:406
+#: ../midori/midori-websettings.c:409
 msgid "Last Web search"
 msgstr "Τελευταία αναζήτηση ιστού"
 
-#: ../midori/midori-websettings.c:407
+#: ../midori/midori-websettings.c:410
 msgid "The last saved Web search"
 msgstr "Η τελευταία αποθηκευμένη αναζήτηση ιστού"
 
-#: ../midori/midori-websettings.c:416
+#: ../midori/midori-websettings.c:419
 msgid "Show Menubar"
 msgstr "Εμφάνιση γραμμής μενού"
 
-#: ../midori/midori-websettings.c:417
+#: ../midori/midori-websettings.c:420
 msgid "Whether to show the menubar"
 msgstr "Εάν θα φαίνεται η μπάρα του μενού"
 
-#: ../midori/midori-websettings.c:425
+#: ../midori/midori-websettings.c:428
 msgid "Show Navigationbar"
 msgstr "Εμφάνιση της γραμμής πλοήγησης"
 
-#: ../midori/midori-websettings.c:426
+#: ../midori/midori-websettings.c:429
 msgid "Whether to show the navigationbar"
 msgstr "Εάν θα φαίνεται η γραμμή πλοήγησης"
 
-#: ../midori/midori-websettings.c:434
+#: ../midori/midori-websettings.c:437
 msgid "Show Bookmarkbar"
 msgstr "Εμφάνιση μπάρας σελιδοδεικτών"
 
-#: ../midori/midori-websettings.c:435
+#: ../midori/midori-websettings.c:438
 msgid "Whether to show the bookmarkbar"
 msgstr "Εάν θα φαίνεται η μπάρα των σελιλοδεικτών"
 
-#: ../midori/midori-websettings.c:443
+#: ../midori/midori-websettings.c:446
 msgid "Show Panel"
 msgstr "Εμφάνιση πλαισίου"
 
-#: ../midori/midori-websettings.c:444
+#: ../midori/midori-websettings.c:447
 msgid "Whether to show the panel"
 msgstr "Εάν θα φαίνεται το πλαίσιο"
 
-#: ../midori/midori-websettings.c:459
+#: ../midori/midori-websettings.c:462
 msgid "Show Transferbar"
 msgstr "Εμφάνιση μπάρας μεταφορών"
 
-#: ../midori/midori-websettings.c:460
+#: ../midori/midori-websettings.c:463
 msgid "Whether to show the transferbar"
 msgstr "Εάν θα φαίνεται η μπάρα μεταφορών"
 
-#: ../midori/midori-websettings.c:468
+#: ../midori/midori-websettings.c:471
 msgid "Show Statusbar"
 msgstr "Εμφάνιση γραμμής κατάστασης"
 
-#: ../midori/midori-websettings.c:469
+#: ../midori/midori-websettings.c:472
 msgid "Whether to show the statusbar"
 msgstr "Εάν θα φαίνεται η γραμμή κατάστασης"
 
-#: ../midori/midori-websettings.c:478
+#: ../midori/midori-websettings.c:481
 msgid "Toolbar Style:"
 msgstr "Στυλ εργαλειοθήκης:"
 
-#: ../midori/midori-websettings.c:479
+#: ../midori/midori-websettings.c:482
 msgid "The style of the toolbar"
 msgstr "Το στυλ της εργαλειοθήκης"
 
-#: ../midori/midori-websettings.c:495
+#: ../midori/midori-websettings.c:498
 msgid "Show progress in location entry"
 msgstr "Να εμφανίζεται η πρόοδος στην τοποθεσίας εισαγωγής"
 
-#: ../midori/midori-websettings.c:496
+#: ../midori/midori-websettings.c:499
 msgid "Whether to show loading progress in the location entry"
 msgstr "Εάν θα εμφανίζεται η φόρτωση προόδου στην τοποθεσία εισαγωγής"
 
-#: ../midori/midori-websettings.c:511
+#: ../midori/midori-websettings.c:514
 msgid "Search engines in location completion"
 msgstr "Μηχανές αναζήτησης στην τοποθεσία συμπλήρωσης"
 
-#: ../midori/midori-websettings.c:512
+#: ../midori/midori-websettings.c:515
 msgid "Whether to show search engines in the location completion"
 msgstr "Εάν θα φαίνονται οι μηχανές αναζήτησης στην τοποθεσία συμπλήρωσης"
 
-#: ../midori/midori-websettings.c:520
+#: ../midori/midori-websettings.c:523
 msgid "Toolbar Items"
 msgstr "Αντικείμενα εργαλειοθήκης"
 
-#: ../midori/midori-websettings.c:521
+#: ../midori/midori-websettings.c:524
 msgid "The items to show on the toolbar"
 msgstr "Τι αντικείμενα να εμφανίζονται στην εργαλειοθήκη"
 
-#: ../midori/midori-websettings.c:529
+#: ../midori/midori-websettings.c:532
 msgid "Compact Sidepanel"
 msgstr "Σύμπτυξη πλαϊνού πλαισίου"
 
-#: ../midori/midori-websettings.c:530
+#: ../midori/midori-websettings.c:533
 msgid "Whether to make the sidepanel compact"
 msgstr "Εάν θα γίνει σύμπτυξη του πλαϊνού πλαισίου"
 
-#: ../midori/midori-websettings.c:545
+#: ../midori/midori-websettings.c:548
 msgid "Show operating controls of the panel"
 msgstr "Εμφάνιση των στοιχείων λειτουργίας στο ταμπλό"
 
-#: ../midori/midori-websettings.c:546
+#: ../midori/midori-websettings.c:549
 msgid "Whether to show the operating controls of the panel"
 msgstr "Εάν θα φαίνονται τα στοιχεία λειτουργίας στο ταμπλό"
 
-#: ../midori/midori-websettings.c:561
+#: ../midori/midori-websettings.c:564
 msgid "Align sidepanel on the right"
 msgstr "Ευθυγράμμιση πλαϊνού πλαισίου στα δεξιά"
 
-#: ../midori/midori-websettings.c:562
+#: ../midori/midori-websettings.c:565
 msgid "Whether to align the sidepanel on the right"
 msgstr "Εάν θα ευθυγραμμίζεται το πλαϊνό πλαίσιο στα δεξιά"
 
-#: ../midori/midori-websettings.c:571
+#: ../midori/midori-websettings.c:574
 msgid "When Midori starts:"
 msgstr "Κατά την εκκίνηση του midori:"
 
-#: ../midori/midori-websettings.c:572
+#: ../midori/midori-websettings.c:575
 msgid "What to do when Midori starts"
 msgstr "Κατά την εκκίνηση του midori να φορτώνει:"
 
-#: ../midori/midori-websettings.c:581
+#: ../midori/midori-websettings.c:584
 msgid "Homepage:"
 msgstr "Αρχική σελίδα:"
 
-#: ../midori/midori-websettings.c:582
+#: ../midori/midori-websettings.c:585
 msgid "The homepage"
 msgstr "Η αρχική σελίδα"
 
-#: ../midori/midori-websettings.c:597
+#: ../midori/midori-websettings.c:600
 msgid "Show crash dialog"
 msgstr "Εμφάνιση παραθύρου αποτυχίας"
 
-#: ../midori/midori-websettings.c:598
+#: ../midori/midori-websettings.c:601
 msgid "Show a dialog after Midori crashed"
 msgstr "Εμφάνιση διαλόγου μετά από αποτυχία"
 
 #. i18n: Speed dial, webpage shortcuts, named for the phone function
-#: ../midori/midori-websettings.c:614
+#: ../midori/midori-websettings.c:617
 msgid "Show speed dial in new tabs"
 msgstr "Εμφάνιση γρήγορης σύνδεσης σε νέες καρτέλες"
 
-#: ../midori/midori-websettings.c:615
+#: ../midori/midori-websettings.c:618
 msgid "Show speed dial in newly opened tabs"
 msgstr "Εμφάνιση γρήγορης σύνδεσης στις νέες ανοιχτές καρτέλες"
 
-#: ../midori/midori-websettings.c:623
+#: ../midori/midori-websettings.c:626
 msgid "Save downloaded files to:"
 msgstr "Αποθήκευση των αρχείων που κατέβηκαν στο:"
 
-#: ../midori/midori-websettings.c:624
+#: ../midori/midori-websettings.c:627
 msgid "The folder downloaded files are saved to"
 msgstr "Ο κατάλογος στον οποίο αποθηκεύονται τα αρχεία που κατεβαίνουν"
 
-#: ../midori/midori-websettings.c:643
+#: ../midori/midori-websettings.c:648
 msgid "Ask for the destination folder"
 msgstr "Ερώτηση για τον κατάλογο αποθήκευσης"
 
-#: ../midori/midori-websettings.c:644
+#: ../midori/midori-websettings.c:649
 msgid "Whether to ask for the destination folder when downloading a file"
 msgstr "Εάν θα ρωτάει για τον κατάλογο αποθήκευσης όταν κατεβαίνει ένα αρχείο"
 
-#: ../midori/midori-websettings.c:663
+#: ../midori/midori-websettings.c:668
 msgid "Notify when a transfer has been completed"
 msgstr "Ειδοποίηση όταν μία μεταφορά έχει ολοκληρωθεί"
 
-#: ../midori/midori-websettings.c:664
+#: ../midori/midori-websettings.c:669
 msgid "Whether to show a notification when a transfer has been completed"
 msgstr "Εάν θα εμφανίζεται μία ειδοποίηση όταν ολοκληρωθεί μία μεταφορά"
 
-#: ../midori/midori-websettings.c:676
+#: ../midori/midori-websettings.c:681
 msgid "Download Manager"
 msgstr "Διαχειριστής μεταφορών"
 
-#: ../midori/midori-websettings.c:677
+#: ../midori/midori-websettings.c:682
 msgid "An external download manager"
 msgstr "Εξωτερικός διαχειριστής μεταφορών"
 
-#: ../midori/midori-websettings.c:685
+#: ../midori/midori-websettings.c:690
 msgid "Text Editor"
 msgstr "Κειμενογράφος"
 
-#: ../midori/midori-websettings.c:686
+#: ../midori/midori-websettings.c:691
 msgid "An external text editor"
 msgstr "Εξωτερικός κειμενογράφος"
 
-#: ../midori/midori-websettings.c:701
+#: ../midori/midori-websettings.c:706
 msgid "News Aggregator"
 msgstr "Διαχειριστής νέων"
 
-#: ../midori/midori-websettings.c:702
+#: ../midori/midori-websettings.c:707
 msgid "An external news aggregator"
 msgstr "Εξωτερικός διαχειριστής νέων"
 
-#: ../midori/midori-websettings.c:710
+#: ../midori/midori-websettings.c:715
 msgid "Location entry Search"
 msgstr "Διεύθυνση για αναζήτηση"
 
-#: ../midori/midori-websettings.c:711
+#: ../midori/midori-websettings.c:716
 msgid "The search to perform inside the location entry"
 msgstr "Η αναζήτηση να πραγματοποιηθεί εσωτερικά της τοποθεσίας εισαγωγής"
 
-#: ../midori/midori-websettings.c:719
+#: ../midori/midori-websettings.c:724
 msgid "Preferred Encoding"
 msgstr "Προτιμώμενη κωδικοποίηση"
 
-#: ../midori/midori-websettings.c:720
+#: ../midori/midori-websettings.c:725
 msgid "The preferred character encoding"
 msgstr "Η προτιμώμενη κωδικοποίηση χαρακτήρων"
 
-#: ../midori/midori-websettings.c:730
+#: ../midori/midori-websettings.c:735
 msgid "Always Show Tabbar"
 msgstr "Εμφάνιση πάντα της γραμμής καρτέλων"
 
-#: ../midori/midori-websettings.c:731
+#: ../midori/midori-websettings.c:736
 msgid "Always show the tabbar"
 msgstr "Εμφάνιση πάντα της μπάρας με τις καρτέλες"
 
-#: ../midori/midori-websettings.c:739
+#: ../midori/midori-websettings.c:744
 msgid "Close Buttons on Tabs"
 msgstr "Κουμπιά κλεισίματος στις καρτέλες"
 
-#: ../midori/midori-websettings.c:740
+#: ../midori/midori-websettings.c:745
 msgid "Whether tabs have close buttons"
 msgstr "Εάν οι καρτέλες θα έχουν κουμπί κλεισίματος"
 
-#: ../midori/midori-websettings.c:748
+#: ../midori/midori-websettings.c:753
 msgid "Open new pages in:"
 msgstr "Άνοιγμα νέων σελίδων σε:"
 
-#: ../midori/midori-websettings.c:749
+#: ../midori/midori-websettings.c:754
 msgid "Where to open new pages"
 msgstr "Που να ανοίγουν οι νέες σελίδες"
 
-#: ../midori/midori-websettings.c:758
+#: ../midori/midori-websettings.c:763
 msgid "Open external pages in:"
 msgstr "Άνοιγμα εξωτερικών σελίδων σε:"
 
-#: ../midori/midori-websettings.c:759
+#: ../midori/midori-websettings.c:764
 msgid "Where to open externally opened pages"
 msgstr "Που να ανοίγουν οι εξωτερικές ανοιγμένες σελίδες"
 
-#: ../midori/midori-websettings.c:768
+#: ../midori/midori-websettings.c:773
 msgid "Middle click opens Selection"
 msgstr "Το μεσαίο κλικ ανοίγει την Επιλογή"
 
-#: ../midori/midori-websettings.c:769
+#: ../midori/midori-websettings.c:774
 msgid "Load an address from the selection via middle click"
 msgstr "Φόρτωση μίας διεύθυνσης από την επιλογή μέσω του μεσαίου κλικ"
 
-#: ../midori/midori-websettings.c:777
+#: ../midori/midori-websettings.c:782
 msgid "Open tabs in the background"
 msgstr "Άνοιγμα των καρτελών στο παρασκήνιο"
 
-#: ../midori/midori-websettings.c:778
+#: ../midori/midori-websettings.c:783
 msgid "Whether to open new tabs in the background"
 msgstr "Εάν θα ανοίγονται νέες καρτέλες στο παρασκήνιο"
 
-#: ../midori/midori-websettings.c:786
+#: ../midori/midori-websettings.c:791
 msgid "Open Tabs next to Current"
 msgstr "Άνοιγμα των καρτελών δίπλα στο τρέχων"
 
-#: ../midori/midori-websettings.c:787
+#: ../midori/midori-websettings.c:792
 msgid "Whether to open new tabs next to the current tab or after the last one"
 msgstr "Εάν θα ανοίγονται νέες καρτέλες δίπλα στην τρέχουσα καρτέλα ή μετά την τελευταία"
 
-#: ../midori/midori-websettings.c:795
+#: ../midori/midori-websettings.c:800
 msgid "Open popups in tabs"
 msgstr "Άνοιγμα αναδυόμενων παραθύρων σε καρτέλες"
 
-#: ../midori/midori-websettings.c:796
+#: ../midori/midori-websettings.c:801
 msgid "Whether to open popup windows in tabs"
 msgstr "Εάν θα ανοίγονται τα αναδυόμενα παράθυρα σε καρτέλες"
 
-#: ../midori/midori-websettings.c:812
+#: ../midori/midori-websettings.c:817
 msgid "Zoom Text and Images"
 msgstr "Εστίαση κειμένου και εικόνων"
 
-#: ../midori/midori-websettings.c:813
+#: ../midori/midori-websettings.c:818
 msgid "Whether to zoom text and images"
 msgstr "Εάν θα εστιάζεται το κείμενο και οι εικόνες"
 
-#: ../midori/midori-websettings.c:828
+#: ../midori/midori-websettings.c:833
 msgid "Find inline while typing"
 msgstr "Ενσωματωμένη εύρεση κατά την πληκτρολόγηση"
 
-#: ../midori/midori-websettings.c:829
+#: ../midori/midori-websettings.c:834
 msgid "Whether to automatically find inline while typing"
 msgstr "Εάν θα γίνεται αυτόματη ενσωματωμένη αναζήτηση κατά την πληκτρολόγηση"
 
-#: ../midori/midori-websettings.c:837
+#: ../midori/midori-websettings.c:849
+msgid "Kinetic scrolling"
+msgstr "Κινητική κύλιση"
+
+#: ../midori/midori-websettings.c:850
+msgid "Whether scrolling should kinetically move according to speed"
+msgstr "Εάν η κύλιση θα κινείται ανάλογα με την ταχύτητα "
+
+#: ../midori/midori-websettings.c:858
 msgid "Accept cookies"
 msgstr "Αποδοχή cookies"
 
-#: ../midori/midori-websettings.c:838
+#: ../midori/midori-websettings.c:859
 msgid "What type of cookies to accept"
 msgstr "Τι τύπο cookies να γίνονται αποδεκτά"
 
-#: ../midori/midori-websettings.c:847
+#: ../midori/midori-websettings.c:868
 msgid "Original cookies only"
 msgstr "Μόνο πρωτότυπα cookies"
 
-#: ../midori/midori-websettings.c:848
+#: ../midori/midori-websettings.c:869
 msgid "Accept cookies from the original website only"
 msgstr "Αποδοχή cookies μόνο από πρωτότυπους ιστότοπους"
 
-#: ../midori/midori-websettings.c:856
+#: ../midori/midori-websettings.c:877
 msgid "Maximum cookie age"
 msgstr "Μέγιστος χρόνος cookie"
 
-#: ../midori/midori-websettings.c:857
+#: ../midori/midori-websettings.c:878
 msgid "The maximum number of days to save cookies for"
 msgstr "Ο μέγιστος χρόνος σε μέρες για την αποθήκευση των cookies"
 
-#: ../midori/midori-websettings.c:867
+#: ../midori/midori-websettings.c:888
 msgid "Remember last visited pages"
 msgstr "Απομνημόνευση των τελευταίων επισκεπτόμενων σελίδων"
 
-#: ../midori/midori-websettings.c:868
+#: ../midori/midori-websettings.c:889
 msgid "Whether the last visited pages are saved"
 msgstr "Εάν θα αποθηκεύονται οι τελευταίες επισκεπτόμενες σελίδες"
 
-#: ../midori/midori-websettings.c:876
+#: ../midori/midori-websettings.c:897
 msgid "Maximum history age"
 msgstr "Μέγιστο χρόνος ιστορικού"
 
-#: ../midori/midori-websettings.c:877
+#: ../midori/midori-websettings.c:898
 msgid "The maximum number of days to save the history for"
 msgstr "Ο μέγιστος χρόνος σε μέρες για την αποθήκευση του ιστορικού"
 
-#: ../midori/midori-websettings.c:885
+#: ../midori/midori-websettings.c:906
 msgid "Remember last form inputs"
 msgstr "Απομνημόνευση των τελευταίων εισαγωγών"
 
-#: ../midori/midori-websettings.c:886
+#: ../midori/midori-websettings.c:907
 msgid "Whether the last form inputs are saved"
 msgstr "Εάν θα αποθηκεύονται οι τελευταίες εισαγωγές φορμών"
 
-#: ../midori/midori-websettings.c:894
+#: ../midori/midori-websettings.c:915
 msgid "Remember last downloaded files"
 msgstr "Απομνημόνευση των τελευταίων αρχείων που κατέβηκαν"
 
-#: ../midori/midori-websettings.c:895
+#: ../midori/midori-websettings.c:916
 msgid "Whether the last downloaded files are saved"
 msgstr "Εάν θα αποθηκεύονται τα τελευταία αρχεία που κατέβηκαν"
 
-#: ../midori/midori-websettings.c:905
+#: ../midori/midori-websettings.c:926
 msgid "Proxy Server"
 msgstr "Διακομιστής μεσολάβησης"
 
-#: ../midori/midori-websettings.c:906
+#: ../midori/midori-websettings.c:927
 msgid "The proxy server used for HTTP connections"
 msgstr "Ο μεσολαβητής χρησιμοποιείται για http συνδέσεις"
 
-#: ../midori/midori-websettings.c:921
+#: ../midori/midori-websettings.c:942
 msgid "Detect proxy server automatically"
 msgstr "Αυτόματη εύρεση διακομιστή μεσολάβησης"
 
-#: ../midori/midori-websettings.c:922
+#: ../midori/midori-websettings.c:943
 msgid "Whether to detect the proxy server automatically from the environment"
 msgstr "Εάν θα εντοπίζεται αυτόματα από το περιβάλλον ο διακομιστής μεσολάβησης"
 
 #. i18n: This refers to an application, not the 'user agent' string
-#: ../midori/midori-websettings.c:938
+#: ../midori/midori-websettings.c:959
 msgid "Identify as"
 msgstr "Αναγνώριση ως"
 
-#: ../midori/midori-websettings.c:939
+#: ../midori/midori-websettings.c:960
 msgid "What to identify as to web pages"
 msgstr "Με τι να αναγνωρίζεται στις σελίδες ιστού"
 
-#: ../midori/midori-websettings.c:955
+#: ../midori/midori-websettings.c:976
 msgid "Identification string"
 msgstr "Αλφαριθμητικό αναγνώρισης"
 
-#: ../midori/midori-websettings.c:956
+#: ../midori/midori-websettings.c:977
 msgid "The application identification string"
 msgstr "Το αλφαριθμητικό αναγνώρισης της εφαρμογής"
 
-#: ../midori/midori-websettings.c:964
+#: ../midori/midori-websettings.c:985
 msgid "Cache size"
 msgstr "Μέγεθος προσωρινής μνήμης"
 
-#: ../midori/midori-websettings.c:965
+#: ../midori/midori-websettings.c:986
 msgid "The allowed size of the cache"
 msgstr "Το επιτρεπόμενο μέγεθος της προσωρινής  μνήμης"
 
-#: ../midori/midori-websettings.c:980
+#: ../midori/midori-websettings.c:1001
 msgid "Clear private data"
 msgstr "Καθαρισμός προσωπικών δεδομένων"
 
-#: ../midori/midori-websettings.c:981
+#: ../midori/midori-websettings.c:1002
 msgid "The private data selected for deletion"
 msgstr "Τα προσωπικά δεδομένα που επιλέχθηκαν για διαγραφή"
 
@@ -1406,150 +1444,200 @@ msgstr "Τα προσωπικά δεδομένα που επιλέχθηκαν 
 #. so reloading via Javascript works but not via API calls.
 #. Error pages are special, we want to try loading the destination
 #. again, not the error page which isn't even a proper page
-#: ../midori/midori-view.c:782
-#: ../midori/midori-view.c:3043
-#: ../midori/midori-view.c:3047
+#: ../midori/midori-view.c:847
+#: ../midori/midori-view.c:3643
+#: ../midori/midori-view.c:3647
 #, c-format
 msgid "Error - %s"
 msgstr "Σφάλμα- %s"
 
-#: ../midori/midori-view.c:783
+#: ../midori/midori-view.c:848
 #, c-format
 msgid "The page '%s' couldn't be loaded."
 msgstr "Η σελίδα '%s' δεν μπορεί να φορτωθεί."
 
-#: ../midori/midori-view.c:788
+#: ../midori/midori-view.c:853
 msgid "Try again"
 msgstr "Δοκιμάστε ξανά"
 
 #. i18n: The title of the 404 - Not found error page
-#: ../midori/midori-view.c:821
+#: ../midori/midori-view.c:886
 #, c-format
 msgid "Not found - %s"
 msgstr "Δεν βρέθηκε - %s"
 
-#: ../midori/midori-view.c:1218
+#: ../midori/midori-view.c:1100
+#: ../midori/midori-view.c:1813
+#, c-format
+msgid "Send a message to %s"
+msgstr "Αποστολή μηνύματος στο: %s"
+
+#: ../midori/midori-view.c:1652
+#: ../midori/midori-view.c:1715
 msgid "Open _Link"
 msgstr "Άνοιγμα _συνδέσμου"
 
-#: ../midori/midori-view.c:1220
+#: ../midori/midori-view.c:1655
+#: ../midori/midori-view.c:1717
 msgid "Open Link in New _Tab"
 msgstr "Άνοιγμα συνδέσμου σε νέα κ_αρτέλα"
 
-#: ../midori/midori-view.c:1237
+#: ../midori/midori-view.c:1658
+#: ../midori/midori-view.c:1724
 msgid "Open Link in New _Window"
 msgstr "Άνοιγμα συνδέσμου σε νέο _παραθύρο"
 
-#: ../midori/midori-view.c:1243
-msgid "_Download Link destination"
-msgstr "Î\9a_αÏ\84έβαÏ\83μα συνδέσμου προορισμού"
+#: ../midori/midori-view.c:1661
+msgid "_Copy Link destination"
+msgstr "Î\91_νÏ\84ιγÏ\81αÏ\86ή συνδέσμου προορισμού"
 
-#: ../midori/midori-view.c:1249
+#: ../midori/midori-view.c:1664
+#: ../midori/midori-view.c:1736
 msgid "_Save Link destination"
 msgstr "Απ_οθήκευση συνδέσμου προορισμού"
 
-#: ../midori/midori-view.c:1258
+#: ../midori/midori-view.c:1665
+#: ../midori/midori-view.c:1730
+msgid "_Download Link destination"
+msgstr "Κ_ατέβασμα συνδέσμου προορισμού"
+
+#: ../midori/midori-view.c:1669
+#: ../midori/midori-view.c:1705
+#: ../midori/midori-view.c:1741
 msgid "Download with Download _Manager"
 msgstr "Κατέβασμα με τον διαχειριστή μεταφορών"
 
-#: ../midori/midori-view.c:1287
+#: ../midori/midori-view.c:1681
+msgid "Open _Image in New Tab"
+msgstr "Άνοιγμα ει_κόνας σε νέα καρτέλα"
+
+#: ../midori/midori-view.c:1684
+msgid "Open _Image in New Window"
+msgstr "Άνοιγμα ει_κόνας σε νέο παράθυρο"
+
+#: ../midori/midori-view.c:1687
+msgid "Copy Image _Address"
+msgstr "Αντιγραφή _διεύθυνσης εικόνας"
+
+#: ../midori/midori-view.c:1690
+msgid "Save I_mage"
+msgstr "Αποθήκευση ει_κόνας"
+
+#: ../midori/midori-view.c:1691
+msgid "Download I_mage"
+msgstr "Αποθήκευση ει_κόνας"
+
+#: ../midori/midori-view.c:1698
+msgid "Copy Video _Address"
+msgstr "Αντιγραφή _διεύθυνσης βίντεο"
+
+#: ../midori/midori-view.c:1701
+msgid "Save _Video"
+msgstr "Αποθήκευση _βίντεο"
+
+#: ../midori/midori-view.c:1701
+msgid "Download _Video"
+msgstr "Αποθήκευση _βίντεο"
+
+#: ../midori/midori-view.c:1761
 msgid "Search _with"
 msgstr "Αναζήτηση _με"
 
-#: ../midori/midori-view.c:1319
+#: ../midori/midori-view.c:1789
+#: ../midori/midori-view.c:1800
 msgid "_Search the Web"
 msgstr "_Αναζήτηση στον ιστό"
 
-#: ../midori/midori-view.c:1329
+#: ../midori/midori-view.c:1821
 msgid "Open Address in New _Tab"
 msgstr "Άνοιγμα διεύθυνσης σε νέα_καρτέλα"
 
-#: ../midori/midori-view.c:1507
+#: ../midori/midori-view.c:2030
 msgid "Open or download file"
 msgstr "Άνοιγμα ή κατέβασμα αρχείου"
 
-#: ../midori/midori-view.c:1524
+#: ../midori/midori-view.c:2047
 #, c-format
 msgid "File Type: '%s'"
 msgstr "Τύπος αρχείου: '%s'"
 
-#: ../midori/midori-view.c:1527
+#: ../midori/midori-view.c:2050
 #, c-format
 msgid "File Type: %s ('%s')"
 msgstr "Τύπος αρχείου: %s ('%s')"
 
 #. i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz"
-#: ../midori/midori-view.c:1531
+#: ../midori/midori-view.c:2054
 #, c-format
 msgid "Open %s"
 msgstr "Άνοιγμα %s"
 
-#: ../midori/midori-view.c:1981
+#: ../midori/midori-view.c:2567
 #, c-format
 msgid "Inspect page - %s"
 msgstr "Εξέταση σελίδα -%s"
 
-#: ../midori/midori-view.c:2176
+#: ../midori/midori-view.c:2766
 msgid "Speed dial"
 msgstr "Γρήγορη σύνδεση"
 
-#: ../midori/midori-view.c:2177
+#: ../midori/midori-view.c:2767
 msgid "Click to add a shortcut"
 msgstr "Κάντε click για προσθήκη συντόμευσης"
 
-#: ../midori/midori-view.c:2178
+#: ../midori/midori-view.c:2768
 msgid "Enter shortcut address"
 msgstr "Εισάγεται διεύθυνση συντόμευσης"
 
-#: ../midori/midori-view.c:2179
+#: ../midori/midori-view.c:2769
 msgid "Enter shortcut title"
 msgstr "Εισάγετε τίτλο συντόμευσης"
 
-#: ../midori/midori-view.c:2180
+#: ../midori/midori-view.c:2770
 msgid "Are you sure you want to delete this shortcut?"
 msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την συντόμευση;"
 
-#: ../midori/midori-view.c:2210
+#: ../midori/midori-view.c:2800
 #, c-format
 msgid "Document cannot be displayed"
 msgstr "Το αρχείο δεν μπορεί να εμφανιστεί"
 
-#: ../midori/midori-view.c:2227
+#: ../midori/midori-view.c:2817
 #, c-format
 msgid "No documentation installed"
 msgstr "Δεν έχει εγκατασταθεί τεκμηρίωση"
 
-#: ../midori/midori-view.c:2352
+#: ../midori/midori-view.c:2942
 msgid "Blank page"
 msgstr "Κενή σελίδα"
 
-#: ../midori/midori-view.c:2581
-#: ../midori/sokoke.c:870
+#: ../midori/midori-view.c:3171
+#: ../midori/sokoke.c:968
 msgid "New _Tab"
 msgstr "Νέα _καρτέλα"
 
-#: ../midori/midori-view.c:2595
+#: ../midori/midori-view.c:3185
 msgid "_Duplicate Tab"
 msgstr "_Διπλότυπη καρτέλα"
 
-#: ../midori/midori-view.c:2600
+#: ../midori/midori-view.c:3190
 msgid "_Restore Tab"
 msgstr "_Επαναφορά καρτέλας"
 
-#: ../midori/midori-view.c:2600
+#: ../midori/midori-view.c:3190
 msgid "_Minimize Tab"
 msgstr "_Ελαχιστοποίηση καρτέλας"
 
-#: ../midori/midori-view.c:3149
+#: ../midori/midori-view.c:3749
 msgid "Print background images"
 msgstr "Εκτύπωση εικόνων παρασκηνίου"
 
-#: ../midori/midori-view.c:3150
+#: ../midori/midori-view.c:3750
 msgid "Whether background images should be printed"
 msgstr "Εάν θα τυπώνονται οι εικόνες παρασκηνίου"
 
-#: ../midori/midori-view.c:3194
-#: ../midori/midori-preferences.c:484
+#: ../midori/midori-view.c:3794
+#: ../midori/midori-preferences.c:489
 msgid "Features"
 msgstr "Χαρακτηριστικά"
 
@@ -1559,188 +1647,188 @@ msgid "Preferences for %s"
 msgstr "Προτιμήσεις για %s"
 
 #. Page "General"
-#: ../midori/midori-preferences.c:398
+#: ../midori/midori-preferences.c:404
 msgid "General"
 msgstr "Γενικά"
 
-#: ../midori/midori-preferences.c:399
+#: ../midori/midori-preferences.c:405
 msgid "Startup"
 msgstr "Εκκίνηση"
 
-#: ../midori/midori-preferences.c:415
+#: ../midori/midori-preferences.c:421
 msgid "Use current page as homepage"
 msgstr "Τρέχουσα σελίδα ως αρχική"
 
-#: ../midori/midori-preferences.c:425
+#: ../midori/midori-preferences.c:431
 #: ../panels/midori-transfers.c:88
 msgid "Transfers"
 msgstr "Μεταφορές"
 
 #. Page "Appearance"
-#: ../midori/midori-preferences.c:440
+#: ../midori/midori-preferences.c:445
 msgid "Appearance"
 msgstr "Εμφάνιση"
 
-#: ../midori/midori-preferences.c:441
+#: ../midori/midori-preferences.c:446
 msgid "Font settings"
 msgstr "Ρυθμίσεις γραμματοσειράς"
 
-#: ../midori/midori-preferences.c:443
+#: ../midori/midori-preferences.c:448
 msgid "Default Font Family"
 msgstr "Προεπιλεγμένη οικογένεια γραμματοσειράς"
 
-#: ../midori/midori-preferences.c:447
+#: ../midori/midori-preferences.c:452
 msgid "The default font family used to display text"
 msgstr "Η προκαθορισμένη οικογένεια γραμματοσειράς χρησιμοποιείται για την εμφάνιση του κειμένου"
 
-#: ../midori/midori-preferences.c:450
+#: ../midori/midori-preferences.c:455
 msgid "The default font size used to display text"
 msgstr "Το προκαθορισμένο μέγεθος γραμματοσειράς για την εμφάνιση του κειμένου"
 
-#: ../midori/midori-preferences.c:453
+#: ../midori/midori-preferences.c:458
 msgid "Fixed-width Font Family"
 msgstr "Σταθερού-μεγέθους οικογένεια γραμματοσειράς"
 
-#: ../midori/midori-preferences.c:457
+#: ../midori/midori-preferences.c:462
 msgid "The font family used to display fixed-width text"
 msgstr "Η οικογένεια γραμματοσειράς χρησιμοποιείται για την εμφάνιση σταθερού μεγέθους κειμένου"
 
-#: ../midori/midori-preferences.c:460
+#: ../midori/midori-preferences.c:465
 msgid "The font size used to display fixed-width text"
 msgstr "Το μέγεθος της γραμματοσειράς που χρησιμοποιείται για την εμφάνιση κειμένου σταθερού μεγέθους"
 
-#: ../midori/midori-preferences.c:463
+#: ../midori/midori-preferences.c:468
 msgid "Minimum Font Size"
 msgstr "Ελάχιστο μέγεθος γραμματοσειράς"
 
-#: ../midori/midori-preferences.c:466
+#: ../midori/midori-preferences.c:471
 msgid "The minimum font size used to display text"
 msgstr "Το ελάχιστο μέγεθος γραμματοσειράς για την εμφάνιση του κειμένου"
 
-#: ../midori/midori-preferences.c:473
+#: ../midori/midori-preferences.c:478
 msgid "Encoding"
 msgstr "Κωδικοποίηση"
 
-#: ../midori/midori-preferences.c:476
+#: ../midori/midori-preferences.c:481
 msgid "The character encoding to use by default"
 msgstr "Η προτιμώμενη κωδικοποίηση χαρακτήρων προς χρήση"
 
 #. Page "Behavior"
-#: ../midori/midori-preferences.c:483
+#: ../midori/midori-preferences.c:488
 msgid "Behavior"
 msgstr "Συμπεριφορά"
 
-#: ../midori/midori-preferences.c:487
+#: ../midori/midori-preferences.c:492
 #: ../extensions/statusbar-features.c:88
 msgid "Load images automatically"
 msgstr "Αυτόματη φόρτωση εικόνων"
 
-#: ../midori/midori-preferences.c:488
+#: ../midori/midori-preferences.c:493
 msgid "Load and display images automatically"
 msgstr "Αυτόματη φόρτωση και εμφάνιση εικόνων"
 
-#: ../midori/midori-preferences.c:492
+#: ../midori/midori-preferences.c:501
 msgid "Shrink images automatically"
 msgstr "Αυτόματη σμίκρυνσης εικόνων"
 
-#: ../midori/midori-preferences.c:493
+#: ../midori/midori-preferences.c:502
 msgid "Automatically shrink standalone images to fit"
 msgstr "Αυτόματη σμίκρυνση αυτόνομων εικόνων για ταίριασμα"
 
-#: ../midori/midori-preferences.c:499
+#: ../midori/midori-preferences.c:509
 #: ../extensions/statusbar-features.c:100
 msgid "Enable scripts"
 msgstr "Ενεργοποίηση σεναρίων"
 
-#: ../midori/midori-preferences.c:500
+#: ../midori/midori-preferences.c:510
 msgid "Enable embedded scripting languages"
 msgstr "Ενεργοποίηση ενσωματωμένων γλωσσών κειμένου"
 
-#: ../midori/midori-preferences.c:503
+#: ../midori/midori-preferences.c:513
 #: ../extensions/statusbar-features.c:112
 msgid "Enable Netscape plugins"
 msgstr "Ενεργοποίηση αρθρωμάτων netscape"
 
-#: ../midori/midori-preferences.c:504
+#: ../midori/midori-preferences.c:514
 msgid "Enable embedded Netscape plugin objects"
 msgstr "Ενεργοποίηση ενσωματωμένων αρθρωμάτων netscape"
 
-#: ../midori/midori-preferences.c:507
+#: ../midori/midori-preferences.c:517
 msgid "Enforce 96 dots per inch"
 msgstr "Επιβολή 96 dots ανά ίντσα"
 
-#: ../midori/midori-preferences.c:508
+#: ../midori/midori-preferences.c:518
 msgid "Enforce a video dot density of 96 DPI"
 msgstr "Επιβολή της πυκνότητας βίντεο dot στα 96DPI"
 
-#: ../midori/midori-preferences.c:511
+#: ../midori/midori-preferences.c:521
 msgid "Enable developer tools"
 msgstr "Ενεργοποίηση εργαλείων ανάπτυξης"
 
-#: ../midori/midori-preferences.c:512
+#: ../midori/midori-preferences.c:522
 msgid "Enable special extensions for developers"
 msgstr "Ενεργοποίηση συγκεκριμένων επεκτάσεων για προγραμματιστές"
 
-#: ../midori/midori-preferences.c:519
+#: ../midori/midori-preferences.c:529
 msgid "Spell Checking"
 msgstr "Ορθογραφία πληκτρολόγησης"
 
-#: ../midori/midori-preferences.c:522
+#: ../midori/midori-preferences.c:532
 msgid "Enable Spell Checking"
 msgstr "Ενεργοποίηση ορθογραφίας"
 
-#: ../midori/midori-preferences.c:523
+#: ../midori/midori-preferences.c:533
 msgid "Enable spell checking while typing"
 msgstr "Ενεργοποίηση ορθογραφίας κατά την πληκτρολόγηση"
 
 #. i18n: The example should be adjusted to contain a good local default
-#: ../midori/midori-preferences.c:527
+#: ../midori/midori-preferences.c:537
 msgid "A comma separated list of languages to be used for spell checking, for example \"en_GB,de_DE\""
 msgstr "Μία διαχωρισμένη λίστα με τις γλώσσες που μπορείτε να χρησιμοποιήσετε κατά την ορθογραφία πληκτρολόγησης, για παράδειγμα \"en_GB,de_DE\""
 
 #. Page "Interface"
-#: ../midori/midori-preferences.c:532
+#: ../midori/midori-preferences.c:542
 msgid "Interface"
 msgstr "Διεπαφή"
 
-#: ../midori/midori-preferences.c:533
+#: ../midori/midori-preferences.c:543
 msgid "Navigationbar"
 msgstr "Γραμμή πλοήγησης"
 
-#: ../midori/midori-preferences.c:544
+#: ../midori/midori-preferences.c:554
 msgid "Browsing"
 msgstr "Περιήγηση"
 
 #. Page "Applications"
-#: ../midori/midori-preferences.c:568
+#: ../midori/midori-preferences.c:578
 msgid "Applications"
 msgstr "Εφαρμογές"
 
-#: ../midori/midori-preferences.c:569
+#: ../midori/midori-preferences.c:579
 msgid "External applications"
 msgstr "Εξωτερικές εφαρμογές"
 
 #. Page "Network"
-#: ../midori/midori-preferences.c:615
-#: ../midori/midori-preferences.c:616
+#: ../midori/midori-preferences.c:625
+#: ../midori/midori-preferences.c:626
 msgid "Network"
 msgstr "Δίκτυο"
 
-#: ../midori/midori-preferences.c:643
+#: ../midori/midori-preferences.c:653
 msgid "MB"
 msgstr "ΜΒ"
 
 #. Page "Privacy"
-#: ../midori/midori-preferences.c:648
+#: ../midori/midori-preferences.c:658
 msgid "Privacy"
 msgstr "Προσωπικό απόρρητο"
 
-#: ../midori/midori-preferences.c:649
+#: ../midori/midori-preferences.c:659
 msgid "Web Cookies"
 msgstr "Cookies ιστού"
 
-#: ../midori/midori-preferences.c:662
 #: ../midori/midori-preferences.c:672
+#: ../midori/midori-preferences.c:682
 msgid "days"
 msgstr "ημέρες"
 
@@ -1782,56 +1870,61 @@ msgstr "Χρήση ως _προκαθορισμένο"
 msgid "Could not run external program."
 msgstr "Δεν μπορεί να εκτελεστεί το εξωτερικό πρόγραμμα."
 
-#: ../midori/sokoke.c:861
+#: ../midori/sokoke.c:960
 msgid "_Bookmark"
 msgstr "_Σελιδοδείκτης"
 
-#: ../midori/sokoke.c:863
+#: ../midori/sokoke.c:962
 msgid "Add Boo_kmark"
 msgstr "Προσθήκη σ_ελιδοδείκτη"
 
-#: ../midori/sokoke.c:864
+#: ../midori/sokoke.c:963
 msgid "_Console"
 msgstr "_Τερματικό"
 
-#: ../midori/sokoke.c:865
+#: ../midori/sokoke.c:964
 msgid "_Extensions"
 msgstr "_Επεκτάσεις"
 
-#: ../midori/sokoke.c:866
+#: ../midori/sokoke.c:965
 msgid "_History"
 msgstr "_Ιστορικό"
 
-#: ../midori/sokoke.c:867
+#: ../midori/sokoke.c:966
 msgid "_Homepage"
 msgstr "_Αρχική σελίδα"
 
-#: ../midori/sokoke.c:868
+#: ../midori/sokoke.c:967
 msgid "_Userscripts"
 msgstr "_Σενάρια χρήστη"
 
-#: ../midori/sokoke.c:869
-msgid "User_styles"
-msgstr "_Θέματα χρήστη"
-
-#: ../midori/sokoke.c:871
+#: ../midori/sokoke.c:969
 msgid "_Transfers"
 msgstr "_Μεταφορές"
 
-#: ../midori/sokoke.c:872
+#: ../midori/sokoke.c:970
 msgid "Netscape p_lugins"
 msgstr "Α_ρθρωμάτων netscape"
 
-#: ../panels/midori-addons.c:95
-#: ../panels/midori-addons.c:141
+#: ../panels/midori-addons.c:94
+#: ../panels/midori-addons.c:139
 msgid "Userscripts"
 msgstr "Σενάρια χρηστών"
 
-#: ../panels/midori-addons.c:96
-#: ../panels/midori-addons.c:143
+#: ../panels/midori-addons.c:95
 msgid "Userstyles"
 msgstr "Θέματα χρήστη"
 
+#: ../panels/midori-addons.c:287
+#, c-format
+msgid "Copy userscripts to the folder %s and copy userstyles to the folder %s."
+msgstr "Αντιγραφή σεναρίων χρήστη στον κατάλογο %s και αντιγραφή των θεμάτων χρήση στον κατάλογο %s."
+
+#: ../panels/midori-addons.c:889
+#, c-format
+msgid "Can't monitor folder '%s': %s"
+msgstr "Αδυναμία παρακολούθησης του καταλόγου '%s': %s"
+
 #: ../panels/midori-bookmarks.c:108
 msgid "Bookmarks"
 msgstr "Σελιδοδείκτες"
@@ -1908,11 +2001,11 @@ msgstr "Άνοιγμα φακέλου προορισμού"
 msgid "Copy Link Loc_ation"
 msgstr "Αντιγραφή τοποθεσίας σ_υνδέσμου"
 
-#: ../katze/katze-http-auth.c:124
+#: ../katze/katze-http-auth.c:209
 msgid "Authentication Required"
 msgstr "Απαιτείται αυθεντικοποίηση"
 
-#: ../katze/katze-http-auth.c:140
+#: ../katze/katze-http-auth.c:225
 msgid ""
 "A username and a password are required\n"
 "to open this location:"
@@ -1920,14 +2013,18 @@ msgstr ""
 "Απαιτείται ένα όνομα χρήσης και ένα συνθηματικό\n"
 "για το άνοιγμα της τοποθεσίας:"
 
-#: ../katze/katze-http-auth.c:154
+#: ../katze/katze-http-auth.c:239
 msgid "Username"
 msgstr "Όνομα χρήσης"
 
-#: ../katze/katze-http-auth.c:170
+#: ../katze/katze-http-auth.c:252
 msgid "Password"
 msgstr "Συνθηματικό"
 
+#: ../katze/katze-http-auth.c:266
+msgid "_Remember password"
+msgstr "Α_πομνημόνευση συνθηματικού"
+
 #: ../katze/katze-throbber.c:828
 #, c-format
 msgid "Named icon '%s' couldn't be loaded"
@@ -1942,34 +2039,39 @@ msgstr "Το εικονίδιο Stock '%s' δεν μπορεί να φορτωθ
 msgid "Animation frames are broken"
 msgstr "Τα κινούμενα γραφικά πλαίσια δεν λειτουργούν"
 
-#: ../katze/katze-utils.c:200
-#: ../katze/katze-utils.c:407
+#: ../katze/katze-utils.c:203
+#: ../katze/katze-utils.c:420
 #, c-format
 msgid "Property '%s' is invalid for %s"
 msgstr "Η ιδιότητα '%s' δεν είναι έγκυρη για το %s"
 
-#: ../katze/katze-utils.c:235
-#: ../katze/katze-utils.c:264
+#: ../katze/katze-utils.c:238
+#: ../katze/katze-utils.c:267
 msgid "Choose file"
 msgstr "Επιλογή αρχείου"
 
-#: ../katze/katze-utils.c:250
+#: ../katze/katze-utils.c:253
 msgid "Choose folder"
 msgstr "Επιλογή φακέλου"
 
-#: ../extensions/adblock.c:167
+#: ../extensions/adblock.c:235
 msgid "Configure Advertisement filters"
 msgstr "Ρύθμιση φίλτρων διαφημίσεων"
 
-#: ../extensions/adblock.c:304
+#: ../extensions/adblock.c:372
 msgid "Configure _Advertisement filters..."
 msgstr "Ρύθμιση φίλτρων δ_ιαφημίσεων..."
 
-#: ../extensions/adblock.c:565
+#: ../extensions/adblock.c:704
+#, c-format
+msgid "Not available: %s required"
+msgstr "Μη διαθέσιμο: απαιτείται %s"
+
+#: ../extensions/adblock.c:709
 msgid "Advertisement blocker"
 msgstr "Εμποδιστής διαφημίσεων"
 
-#: ../extensions/adblock.c:566
+#: ../extensions/adblock.c:711
 msgid "Block advertisements according to a filter list"
 msgstr "Μπλόκαρε διαφημίσεις σύμφωνα με μία λίστα με φίλτρα"
 
@@ -2075,6 +2177,14 @@ msgstr "_Διαχειριστής cookie"
 msgid "List, view and delete cookies"
 msgstr "Λίστα, εμφάνιση και διαγραφή cookies"
 
+#: ../extensions/dnsprefetch.c:143
+msgid "DNS prefetching"
+msgstr "Προ ανάκληση DNS"
+
+#: ../extensions/dnsprefetch.c:144
+msgid "Prefetch IP addresses of hovered links"
+msgstr "Προ φόρτωση των διευθύνσεων IP των συνδέσμων"
+
 #: ../extensions/feed-panel/feed-atom.c:237
 msgid "Failed to find required Atom \"entry\" elements in XML data."
 msgstr "Αποτυχία εύρεσης απαιτούμενου στοιχείου Atom \"entry\" στα δεδομένα XML."
@@ -2159,11 +2269,28 @@ msgstr "Πλαίσιο ροής"
 msgid "Read Atom/ RSS feeds"
 msgstr "Ανάγνωση Atom / RSS ροών"
 
-#: ../extensions/mouse-gestures/main.c:236
+#: ../extensions/formhistory.c:276
+msgid "Stores history of entered form data"
+msgstr "Αποθηκεύει το ιστορικό των δεδομένων που έχουν εισαχθεί σε φόρμες"
+
+#: ../extensions/formhistory.c:280
+#, c-format
+msgid "Not available: %s"
+msgstr "Μη διαθέσιμα: %s"
+
+#: ../extensions/formhistory.c:281
+msgid "Resource files not installed"
+msgstr "Τα αρχεία πόρων δεν έχουν εγκατασταθεί"
+
+#: ../extensions/formhistory.c:286
+msgid "Form history filler"
+msgstr "Ιστορικό δεδομένων φόρμας"
+
+#: ../extensions/mouse-gestures/main.c:246
 msgid "Mouse Gestures"
 msgstr "Κινήσεις ποντικιού"
 
-#: ../extensions/mouse-gestures/main.c:237
+#: ../extensions/mouse-gestures/main.c:247
 msgid "Control Midori by moving the mouse"
 msgstr "Χειρισμός του midori μετακινώντας το ποντίκι"
 
@@ -2209,16 +2336,16 @@ msgstr "Γραμμή κατάστασης χαρακτηριστικών"
 msgid "Easily toggle features on web pages on and off"
 msgstr "Εύκολη εναλλαγή χαρακτηριστικών στις ιστοσελίδες ενεργοποίηση και απενεργοποίηση"
 
-#: ../extensions/tab-panel.c:558
-#: ../extensions/tab-panel.c:613
+#: ../extensions/tab-panel.c:562
+#: ../extensions/tab-panel.c:619
 msgid "Tab Panel"
 msgstr "Πλαίσιο καρτέλας"
 
-#: ../extensions/tab-panel.c:597
+#: ../extensions/tab-panel.c:603
 msgid "T_ab Panel"
 msgstr "Πλαίσιο κ_αρτέλας"
 
-#: ../extensions/tab-panel.c:614
+#: ../extensions/tab-panel.c:620
 msgid "Show tabs in a vertical panel"
 msgstr "Εμφάνιση καρτελών στο κάθετο πλαίσιο"
 
@@ -2242,11 +2369,15 @@ msgstr "Εμφανίσιμα αντικείμενα"
 msgid "Customize _Toolbar..."
 msgstr "Προσαρμογή _εργαλειοθήκης..."
 
-#: ../extensions/toolbar-editor.c:611
+#: ../extensions/toolbar-editor.c:612
 msgid "Toolbar Editor"
 msgstr "Επεξεργασία εργαλειοθήκης"
 
-#: ../extensions/toolbar-editor.c:612
+#: ../extensions/toolbar-editor.c:614
 msgid "Easily edit the toolbar layout"
 msgstr "Εύκολη επεξεργασία της εμφάνισης της εργαλειοθήκης"
 
+#: ../extensions/toolbar-editor.c:617
+msgid "Not available on this platform"
+msgstr "Μη διαθέσιμο σε αυτή την πλατφόρμα"
+
index 7ba6abcd210a72c1abf167b3dd16ffccb340f19a..7168c460d2c4cc46e94ec4dbadbab5c3f75a5fba 100644 (file)
--- a/po/id.po
+++ b/po/id.po
 # Indonesian translations for midori package.
 # Copyright (C) 2008 THE midori'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the midori package.
-# Andhika Padmawan <andhika.padmawan@gmail.com> 2008
+# Andhika Padmawan <andhika.padmawan@gmail.com>, 2009.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: midori\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-06 05:25+0100\n"
-"PO-Revision-Date: 2008-11-13 21:26+0700\n"
+"POT-Creation-Date: 2009-07-29 23:58+0200\n"
+"PO-Revision-Date: 2009-09-26 10:42-0400\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Bookmarks: -1,-1,-1,-1,-1,54,-1,-1,-1,-1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../midori.desktop.in.h:1
+#: ../data/midori.desktop.in.h:1
 msgid "Lightweight web browser"
 msgstr "Peramban web ringan"
 
-#: ../midori.desktop.in.h:2 ../midori/main.c:1338 ../midori/main.c:1347
-#: ../midori/main.c:1370 ../midori/main.c:1394
+#: ../data/midori.desktop.in.h:2 ../midori/main.c:1343 ../midori/main.c:1517
+#: ../midori/main.c:1525 ../midori/main.c:1536
+#: ../midori/midori-websettings.c:287
 msgid "Midori"
 msgstr "Midori"
 
-#: ../midori.desktop.in.h:3
+#: ../data/midori.desktop.in.h:3
 msgid "Web Browser"
 msgstr "Peramban Web"
 
-#: ../midori/main.c:86
-msgid "_Bookmark"
-msgstr "B_ookmark"
-
-#: ../midori/main.c:87 ../midori/midori-browser.c:3744
-msgid "_Bookmarks"
-msgstr "B_ookmark"
-
-#: ../midori/main.c:88
-msgid "_Add Bookmark"
-msgstr "_Tambah Bookmark"
-
-#: ../midori/main.c:89
-msgid "_Console"
-msgstr "_Konsol"
-
-#: ../midori/main.c:90
-msgid "_Extensions"
-msgstr "_Ekstensi"
-
-#: ../midori/main.c:91
-msgid "_History"
-msgstr "_Riwayat"
-
-#: ../midori/main.c:92
-msgid "_Homepage"
-msgstr "_Beranda"
-
-#: ../midori/main.c:93
-msgid "_Userscripts"
-msgstr "_Skrip pengguna"
-
-#: ../midori/main.c:94
-msgid "User_styles"
-msgstr "Ga_ya pengguna"
-
-#: ../midori/main.c:95
-msgid "New _Tab"
-msgstr "Tab _Baru"
-
 #: ../midori/main.c:96
-msgid "_Transfers"
-msgstr "_Transfer"
-
-#: ../midori/main.c:97
-msgid "_Closed Tabs and Windows"
-msgstr "Tutup Tab dan _Jendela"
-
-#: ../midori/main.c:98
-msgid "New _Window"
-msgstr "Jendela _Baru"
-
-#: ../midori/main.c:143
 #, c-format
 msgid "The configuration couldn't be loaded: %s\n"
 msgstr "Konfigurasi tak dapat dimuat: %s\n"
 
-#: ../midori/main.c:198
+#: ../midori/main.c:151
 #, c-format
 msgid "Value '%s' is invalid for %s"
 msgstr "Nilai '%s' hanya sah untuk %s"
 
-#: ../midori/main.c:205 ../midori/main.c:275
+#: ../midori/main.c:158 ../midori/main.c:238
 #, c-format
 msgid "Invalid configuration value '%s'"
 msgstr "Nilai konfigurasi '%s' tidak sah"
 
-#: ../midori/main.c:532
-msgid "File not found."
-msgstr "Berkas tak ditemukan."
-
-#: ../midori/main.c:540 ../midori/main.c:549
-msgid "Malformed document."
-msgstr "Dokumen salah bentuk."
-
-#: ../midori/main.c:571 ../midori/main.c:603
+#: ../midori/main.c:350
 #, c-format
 msgid "Failed to open database: %s\n"
 msgstr "Gagal membuka basis data: %s\n"
 
-#: ../midori/main.c:657
+#: ../midori/main.c:382
+#, c-format
+msgid "Failed to execute database statement: %s\n"
+msgstr "Gagal mengeksekusi pernyataan basis data: %s\n"
+
+#: ../midori/main.c:436
 #, c-format
 msgid "Failed to remove history item: %s\n"
 msgstr "Gagal menghapus item riwayat: %s\n"
 
-#: ../midori/main.c:681
+#: ../midori/main.c:460
 #, c-format
 msgid "Failed to clear history: %s\n"
 msgstr "Gagal membersihkan riwayat: %s\n"
 
-#: ../midori/main.c:714 ../midori/main.c:728
+#: ../midori/main.c:483 ../midori/main.c:517 ../midori/main.c:533
 #, c-format
 msgid "Failed to add history item: %s\n"
 msgstr "Gagal menambah item riwayat: %s\n"
 
 #. i18n: Couldn't remove items that are older than n days
-#: ../midori/main.c:844
+#: ../midori/main.c:712
 #, c-format
 msgid "Failed to remove old history items: %s\n"
 msgstr "Gagal menghapus item riwayat lama: %s\n"
 
-#: ../midori/main.c:976 ../midori/sokoke.c:459
+#: ../midori/main.c:741
 #, c-format
-msgid "Writing failed."
-msgstr "Penulisan gagal."
+msgid "The configuration couldn't be saved. %s"
+msgstr "Konfigurasi tak dapat disimpan. %s"
 
-#: ../midori/main.c:1000 ../midori/midori-preferences.c:350
-msgid "Transfers"
-msgstr "Transfer"
+#: ../midori/main.c:779
+#, c-format
+msgid "The search engines couldn't be saved. %s"
+msgstr "Mesin pencari tak dapat disimpan. %s"
+
+#: ../midori/main.c:798 ../midori/main.c:826 ../midori/main.c:855
+#, c-format
+msgid "The bookmarks couldn't be saved. %s"
+msgstr "Bookmark tak dapat disimpan. %s"
 
-#: ../midori/main.c:1040
+#. i18n: Trash, or wastebin, containing closed tabs
+#: ../midori/main.c:878 ../midori/main.c:901
+#, c-format
+msgid "The trash couldn't be saved. %s"
+msgstr "Kotak sampah tak dapat disimpan. %s"
+
+#: ../midori/main.c:974
 #, c-format
 msgid "The session couldn't be saved. %s"
 msgstr "Sesi tak dapat disimpan. %s"
 
-#: ../midori/main.c:1297
+#: ../midori/main.c:1101
+msgid ""
+"Midori seems to have crashed the last time it was opened. If this happened "
+"repeatedly, try one of the following options to solve the problem."
+msgstr ""
+"Midori kelihatannya telah macet saat terakhir kali dibuka. Jika hal ini "
+"terjadi berulang kali, coba salah satu opsi berikut untuk memecahkan "
+"masalah tersebut."
+
+#: ../midori/main.c:1116
+msgid "Modify _preferences"
+msgstr "Ubah _pengaturan"
+
+#: ../midori/main.c:1120
+msgid "Reset the last _session"
+msgstr "Atur ulang _sesi terakhir"
+
+#: ../midori/main.c:1125
+msgid "Disable all _extensions"
+msgstr "Nonaktifkan semua _ekstensi"
+
+#: ../midori/main.c:1343
+msgid "No filename specified"
+msgstr "Tak ada nama berkas yang ditentukan"
+
+#: ../midori/main.c:1366
+msgid "An unknown error occured."
+msgstr "Galat tak diketahui terjadi."
+
+#: ../midori/main.c:1398
+#, c-format
+msgid "Snapshot saved to: %s\n"
+msgstr "Cuplikan layar disimpan ke: %s\n"
+
+#: ../midori/main.c:1447
+msgid "Run ADDRESS as a web application"
+msgstr "Jalankan ALAMAT sebagai sebuah aplikasi web"
+
+#: ../midori/main.c:1447
+msgid "ADDRESS"
+msgstr "ALAMAT"
+
+#: ../midori/main.c:1449
+msgid "Use FOLDER as configuration folder"
+msgstr "Gunakan FOLDER sebagai folder konfigurasi"
+
+#: ../midori/main.c:1449
+msgid "FOLDER"
+msgstr "FOLDER"
+
+#: ../midori/main.c:1451
 msgid "Run the specified filename as javascript"
 msgstr "Jalankan nama berkas yang ditentukan sebagai javascript"
 
-#: ../midori/main.c:1299
+#: ../midori/main.c:1454
+msgid "Take a snapshot of the specified URI"
+msgstr "Ambil cuplikan layar dari URI yang ditentukan"
+
+#: ../midori/main.c:1457
+msgid "Execute the specified command"
+msgstr "Eksekusi perintah yang ditentukan"
+
+#: ../midori/main.c:1459
 msgid "Display program version"
 msgstr "Tampilkan versi program"
 
-#: ../midori/main.c:1301
-msgid "URIs"
-msgstr "URI"
+#: ../midori/main.c:1461
+msgid "Addresses"
+msgstr "Alamat"
 
-#: ../midori/main.c:1335
-msgid "[URIs]"
-msgstr "[URI]"
+#: ../midori/main.c:1514
+msgid "[Addresses]"
+msgstr "[Alamat]"
 
-#: ../midori/main.c:1371
+#: ../midori/main.c:1537
 msgid "Please report comments, suggestions and bugs to:"
 msgstr "Silakan laporkan komentar, saran dan kutu ke:"
 
-#: ../midori/main.c:1373
+#: ../midori/main.c:1539
 msgid "Check for new versions at:"
 msgstr "Cek versi baru di:"
 
-#: ../midori/main.c:1394
-msgid "No filename specified"
-msgstr "Tak ada nama berkas yang ditentukan"
+#: ../midori/main.c:1619
+msgid "The specified configuration folder is invalid."
+msgstr "Folder konfigurasi yang ditentukan tidak valid."
 
-#: ../midori/main.c:1411
-#, c-format
+#: ../midori/main.c:1655
 msgid "An instance of Midori is already running but not responding.\n"
 msgstr "Sebuah instansi Midori telah berjalan namun tidak merespon.\n"
 
-#: ../midori/main.c:1447
+#: ../midori/main.c:1715
+#, c-format
+msgid "The search engines couldn't be loaded. %s\n"
+msgstr "Mesin pencari tak dapat dimuat. %s\n"
+
+#: ../midori/main.c:1727
 #, c-format
 msgid "The bookmarks couldn't be loaded: %s\n"
 msgstr "Bookmark tak dapat dimuat: %s\n"
 
-#: ../midori/main.c:1463
+#: ../midori/main.c:1742
 #, c-format
 msgid "The session couldn't be loaded: %s\n"
 msgstr "Sesi tak dapat dimuat: %s\n"
 
-#: ../midori/main.c:1477
+#: ../midori/main.c:1755
 #, c-format
 msgid "The trash couldn't be loaded: %s\n"
 msgstr "Kotak sampah tak dapat dimuat: %s\n"
 
-#: ../midori/main.c:1491
+#: ../midori/main.c:1768
 #, c-format
 msgid "The history couldn't be loaded: %s\n"
 msgstr "Riwayat tak dapat dimuat: %s\n"
 
-#: ../midori/main.c:1504
+#: ../midori/main.c:1780
 msgid "The following errors occured:"
 msgstr "Galat berikut terjadi:"
 
-#: ../midori/main.c:1520
+#: ../midori/main.c:1796
 msgid "_Ignore"
-msgstr ""
-
-#: ../midori/main.c:1688
-#, c-format
-msgid "The search engines couldn't be saved. %s"
-msgstr "Mesin pencari tak dapat disimpan. %s"
+msgstr "_Abaikan"
 
-#: ../midori/main.c:1698
-#, c-format
-msgid "The bookmarks couldn't be saved. %s"
-msgstr "Bookmark tak dapat disimpan. %s"
+#: ../midori/midori-array.c:250
+msgid "File not found."
+msgstr "Berkas tak ditemukan."
 
-#: ../midori/main.c:1707
-#, c-format
-msgid "The trash couldn't be saved. %s"
-msgstr "Kotak sampah tak dapat disimpan. %s"
+#: ../midori/midori-array.c:258 ../midori/midori-array.c:267
+msgid "Malformed document."
+msgstr "Dokumen salah bentuk."
 
-#: ../midori/main.c:1715
+#: ../midori/midori-array.c:429 ../midori/sokoke.c:694
 #, c-format
-msgid "The configuration couldn't be saved. %s"
-msgstr "Konfigurasi tak dapat disimpan. %s"
+msgid "Writing failed."
+msgstr "Penulisan gagal."
 
-#: ../midori/midori-browser.c:249 ../midori/midori-browser.c:3130
-#: ../midori/midori-browser.c:3136
+#: ../midori/midori-browser.c:307 ../midori/midori-browser.c:4229
+#: ../midori/midori-browser.c:4235
 msgid "Reload the current page"
 msgstr "Muat ulang halaman ini"
 
-#: ../midori/midori-browser.c:261 ../midori/midori-browser.c:3133
+#: ../midori/midori-browser.c:318 ../midori/midori-browser.c:4232
 msgid "Stop loading the current page"
 msgstr "Stop memuat halaman ini"
 
-#: ../midori/midori-browser.c:319
+#: ../midori/midori-browser.c:409
 #, c-format
 msgid "%d%% loaded"
 msgstr "%d%% termuat"
 
-#: ../midori/midori-browser.c:342
+#: ../midori/midori-browser.c:434
 #, c-format
 msgid "Unexpected action '%s'."
 msgstr "Aksi tak diharapkan '%s'."
 
-#: ../midori/midori-browser.c:508
+#: ../midori/midori-browser.c:616
+msgid "New folder"
+msgstr "Folder baru"
+
+#: ../midori/midori-browser.c:616
+msgid "Edit folder"
+msgstr "Sunting folder"
+
+#: ../midori/midori-browser.c:618
 msgid "New bookmark"
 msgstr "Bookmark baru"
 
-#: ../midori/midori-browser.c:508
+#: ../midori/midori-browser.c:618
 msgid "Edit bookmark"
 msgstr "Sunting bookmark"
 
-#: ../midori/midori-browser.c:530
+#: ../midori/midori-browser.c:648
 msgid "_Title:"
 msgstr "_Judul:"
 
-#: ../midori/midori-browser.c:543 ../midori/midori-searchaction.c:841
+#: ../midori/midori-browser.c:661 ../midori/midori-searchaction.c:952
 msgid "_Description:"
 msgstr "_Keterangan:"
 
-#: ../midori/midori-browser.c:562 ../midori/midori-searchaction.c:855
-msgid "_URL:"
-msgstr "_URL:"
+#: ../midori/midori-browser.c:680 ../midori/midori-searchaction.c:966
+#: ../extensions/feed-panel/main.c:343
+msgid "_Address:"
+msgstr "_Alamat"
 
-#: ../midori/midori-browser.c:578
+#: ../midori/midori-browser.c:699
 msgid "_Folder:"
 msgstr "_Folder:"
 
-#: ../midori/midori-browser.c:582
-msgid "Root"
-msgstr "Root"
+#: ../midori/midori-browser.c:704 ../midori/midori-browser.c:745
+msgid "Toplevel folder"
+msgstr "Folder level atas"
 
-#: ../midori/midori-browser.c:668
+#: ../midori/midori-browser.c:821
 msgid "Save file as"
 msgstr "Simpan berkas sebagai"
 
-#: ../midori/midori-browser.c:1248
+#: ../midori/midori-browser.c:1172
+#, c-format
+msgid "The file '<b>%s</b>' has been downloaded."
+msgstr "Berkas '<b>%s</b>' telah diunduh."
+
+#: ../midori/midori-browser.c:1176
+msgid "Transfer completed"
+msgstr "Transfer selesai"
+
+#: ../midori/midori-browser.c:1317
+msgid "Save file"
+msgstr "Simpan berkas"
+
+#: ../midori/midori-browser.c:1984
 msgid "Open file"
 msgstr "Buka berkas"
 
-#: ../midori/midori-browser.c:2328
+#: ../midori/midori-browser.c:3430 ../panels/midori-bookmarks.c:781
+#: ../panels/midori-history.c:812
+msgid "Open all in _Tabs"
+msgstr "Buka semua di _Tab"
+
+#: ../midori/midori-browser.c:3437 ../panels/midori-bookmarks.c:787
+#: ../panels/midori-history.c:818 ../extensions/feed-panel/feed-panel.c:542
 msgid "Open in New _Tab"
 msgstr "Buka di _Tab Baru"
 
-#: ../midori/midori-browser.c:2330
+#: ../midori/midori-browser.c:3440 ../panels/midori-bookmarks.c:789
+#: ../panels/midori-history.c:820 ../extensions/feed-panel/feed-panel.c:544
 msgid "Open in New _Window"
 msgstr "Buka di _Jendela Baru"
 
-#: ../midori/midori-browser.c:2601
-msgid "<i>Separator</i>"
-msgstr "<i>Pemisah</i>"
+#: ../midori/midori-browser.c:3750
+msgid "Clear Private Data"
+msgstr "Hapus Data Pribadi"
 
-#: ../midori/midori-browser.c:2712
-#, c-format
-msgid "A week ago"
-msgstr "Seminggu yang lalu"
+#: ../midori/midori-browser.c:3754
+msgid "_Clear private data"
+msgstr "_Hapus data pribadi"
 
-#: ../midori/midori-browser.c:2718
-#, c-format
-msgid "%d days ago"
-msgstr "%d hari yang lalu"
+#: ../midori/midori-browser.c:3767
+msgid "Clear the following data:"
+msgstr "Hapus data berikut:"
 
-#: ../midori/midori-browser.c:2725
-msgid "Today"
-msgstr "Hari Ini"
+#: ../midori/midori-browser.c:3777 ../midori/midori-preferences.c:671
+#: ../panels/midori-history.c:108
+msgid "History"
+msgstr "Riwayat"
 
-#: ../midori/midori-browser.c:2727
-msgid "Yesterday"
-msgstr "Kemarin"
+#: ../midori/midori-browser.c:3782
+msgid "Cookies"
+msgstr "Kuki"
+
+#: ../midori/midori-browser.c:3787
+msgid "'Flash' Cookies"
+msgstr "Kuki 'Flash'"
 
-#: ../midori/midori-browser.c:2816
+#: ../midori/midori-browser.c:3792
+msgid "Website icons"
+msgstr "Ikon situs web"
+
+#: ../midori/midori-browser.c:3797 ../midori/sokoke.c:868
+msgid "_Closed Tabs"
+msgstr "_Tab Tertutup"
+
+#: ../midori/midori-browser.c:3805
+msgid "Clear private data when _quitting Midori"
+msgstr "Hapus data pribadi ketika _keluar Midori"
+
+#: ../midori/midori-browser.c:3889
 msgid "A lightweight web browser."
 msgstr "Peramban web ringan."
 
-#: ../midori/midori-browser.c:2824
+#: ../midori/midori-browser.c:3897
 msgid "translator-credits"
 msgstr "Andhika Padmawan <andhika.padmawan@gmail.com>"
 
-#: ../midori/midori-browser.c:2958
-msgid "Are you sure you want to remove all history items?"
-msgstr "Anda yakin ingin menghapus semua item riwayat?"
-
-#: ../midori/midori-browser.c:3064
+#: ../midori/midori-browser.c:4163
 msgid "_File"
 msgstr "_Berkas"
 
-#: ../midori/midori-browser.c:3067
+#: ../midori/midori-browser.c:4165 ../midori/sokoke.c:869
+msgid "New _Window"
+msgstr "Jendela _Baru"
+
+#: ../midori/midori-browser.c:4166
 msgid "Open a new window"
 msgstr "Buka di jendela baru"
 
-#: ../midori/midori-browser.c:3070
+#: ../midori/midori-browser.c:4169
 msgid "Open a new tab"
 msgstr "Buka di tab baru"
 
-#: ../midori/midori-browser.c:3073
+#: ../midori/midori-browser.c:4172
 msgid "Open a file"
 msgstr "Buka berkas"
 
-#: ../midori/midori-browser.c:3076
+#: ../midori/midori-browser.c:4175
 msgid "Save to a file"
 msgstr "Simpan ke berkas"
 
-#: ../midori/midori-browser.c:3078
+#: ../midori/midori-browser.c:4177
+msgid "Add to Speed _dial"
+msgstr "Tambah ke Panggil _cepat"
+
+#: ../midori/midori-browser.c:4178
+msgid "Add shortcut to speed dial"
+msgstr "Tambah jalan pintas ke panggil cepat"
+
+#: ../midori/midori-browser.c:4180
 msgid "_Close Tab"
 msgstr "_Tutup Tab"
 
-#: ../midori/midori-browser.c:3079
+#: ../midori/midori-browser.c:4181
 msgid "Close the current tab"
 msgstr "Tutup tab saat ini"
 
-#: ../midori/midori-browser.c:3081
+#: ../midori/midori-browser.c:4183
 msgid "C_lose Window"
 msgstr "T_utup Jendela"
 
-#: ../midori/midori-browser.c:3082
+#: ../midori/midori-browser.c:4184
 msgid "Close this window"
 msgstr "Tutup jendela ini"
 
-#: ../midori/midori-browser.c:3085
+#: ../midori/midori-browser.c:4187
 msgid "Print the current page"
 msgstr "Cetak halaman saat ini"
 
-#: ../midori/midori-browser.c:3088
+#: ../midori/midori-browser.c:4190
 msgid "Quit the application"
 msgstr "Keluar aplikasi"
 
-#: ../midori/midori-browser.c:3090
+#: ../midori/midori-browser.c:4192
 msgid "_Edit"
 msgstr "_Sunting"
 
-#: ../midori/midori-browser.c:3093
+#: ../midori/midori-browser.c:4195
 msgid "Cut the selected text"
 msgstr "Potong teks terpilih"
 
-#: ../midori/midori-browser.c:3096 ../midori/midori-browser.c:3099
+#: ../midori/midori-browser.c:4198 ../midori/midori-browser.c:4201
 msgid "Copy the selected text"
 msgstr "Salin teks terpilih"
 
-#: ../midori/midori-browser.c:3102
+#: ../midori/midori-browser.c:4204
 msgid "Paste text from the clipboard"
 msgstr "Tempel teks dari papan klip"
 
-#: ../midori/midori-browser.c:3105
+#: ../midori/midori-browser.c:4207
 msgid "Delete the selected text"
 msgstr "Hapus teks terpilih"
 
-#: ../midori/midori-browser.c:3108
+#: ../midori/midori-browser.c:4210
 msgid "Select all text"
 msgstr "Pilih semua teks"
 
-#: ../midori/midori-browser.c:3111
+#: ../midori/midori-browser.c:4213
 msgid "Find a word or phrase in the page"
 msgstr "Cari kata atau frasa di halaman"
 
-#: ../midori/midori-browser.c:3113
+#: ../midori/midori-browser.c:4215
 msgid "Find _Next"
 msgstr "Cari _Berikutnya"
 
-#: ../midori/midori-browser.c:3114
+#: ../midori/midori-browser.c:4216
 msgid "Find the next occurrence of a word or phrase"
 msgstr "Cari kejadian berikutnya dari kata atau frasa"
 
-#: ../midori/midori-browser.c:3116
+#: ../midori/midori-browser.c:4218
 msgid "Find _Previous"
 msgstr "Cari _Sebelumnya"
 
-#: ../midori/midori-browser.c:3117
+#: ../midori/midori-browser.c:4219
 msgid "Find the previous occurrence of a word or phrase"
 msgstr "Cari kejadian sebelumnya dari kata atau frasa"
 
-#: ../midori/midori-browser.c:3120
-msgid "_Quick Find"
-msgstr "_Cari Cepat"
-
-#: ../midori/midori-browser.c:3121
-msgid "Quickly jump to a word or phrase"
-msgstr "Lompat segera ke kata atau frasa"
-
-#: ../midori/midori-browser.c:3124
+#: ../midori/midori-browser.c:4223
 msgid "Configure the application preferences"
 msgstr "Konfigurasi pilihan aplikasi"
 
-#: ../midori/midori-browser.c:3126
+#: ../midori/midori-browser.c:4225
 msgid "_View"
 msgstr "_Tampilan"
 
-#: ../midori/midori-browser.c:3127
+#: ../midori/midori-browser.c:4226
 msgid "_Toolbars"
 msgstr "_Batang Alat"
 
-#: ../midori/midori-browser.c:3139
+#: ../midori/midori-browser.c:4238
 msgid "Increase the zoom level"
 msgstr "Naikkan level pembesaran"
 
-#: ../midori/midori-browser.c:3142
+#: ../midori/midori-browser.c:4241
 msgid "Decrease the zoom level"
 msgstr "Turunkan level pembesaran"
 
-#: ../midori/midori-browser.c:3145
+#: ../midori/midori-browser.c:4244
 msgid "Reset the zoom level"
 msgstr "Reset level pembesaran"
 
-#: ../midori/midori-browser.c:3147 ../midori/midori-view.c:998
-msgid "View _Source"
-msgstr "Tampilkan _Sumber"
+#: ../midori/midori-browser.c:4245
+msgid "_Encoding"
+msgstr "_Penyandian"
+
+#: ../midori/midori-browser.c:4247
+msgid "View So_urce"
+msgstr "Tampilkan S_umber"
 
-#: ../midori/midori-browser.c:3148
+#: ../midori/midori-browser.c:4248
 msgid "View the source code of the page"
 msgstr "Tampilkan kode program dari halaman"
 
-#: ../midori/midori-browser.c:3150
+#: ../midori/midori-browser.c:4250
 msgid "View Selection Source"
 msgstr "Tampilkan Pemilihan Sumber"
 
-#: ../midori/midori-browser.c:3151
+#: ../midori/midori-browser.c:4251
 msgid "View the source code of the selection"
 msgstr "Tampilkan kode program dari pemilihan"
 
-#: ../midori/midori-browser.c:3155
+#: ../midori/midori-browser.c:4255
 msgid "Toggle fullscreen view"
 msgstr "Aktifkan tampilan layar penuh"
 
-#: ../midori/midori-browser.c:3157
+#: ../midori/midori-browser.c:4257
 msgid "_Go"
 msgstr "_Ke"
 
-#: ../midori/midori-browser.c:3160
+#: ../midori/midori-browser.c:4260
 msgid "Go back to the previous page"
 msgstr "Mundur ke halaman sebelumnya"
 
-#: ../midori/midori-browser.c:3163
+#: ../midori/midori-browser.c:4263
 msgid "Go forward to the next page"
 msgstr "Maju ke halaman berikutnya"
 
-#: ../midori/midori-browser.c:3166
+#: ../midori/midori-browser.c:4266
 msgid "Go to your homepage"
 msgstr "Ke laman anda"
 
-#: ../midori/midori-browser.c:3168
+#: ../midori/midori-browser.c:4268
 msgid "Empty Trash"
 msgstr "Kosongkan Tempat Sampah"
 
-#: ../midori/midori-browser.c:3169
+#: ../midori/midori-browser.c:4269
 msgid "Delete the contents of the trash"
 msgstr "Hapus isi tempat sampah"
 
-#: ../midori/midori-browser.c:3171 ../midori/midori-view.c:970
-msgid "Undo Close Tab"
-msgstr "Batalkan Menutup Tab"
+#: ../midori/midori-browser.c:4271
+msgid "Undo _Close Tab"
+msgstr "Tak _Jadi Tutup Tab"
 
-#: ../midori/midori-browser.c:3172
+#: ../midori/midori-browser.c:4272
 msgid "Open the last closed tab"
 msgstr "Buka tab yang terakhir ditutup"
 
-#: ../midori/midori-browser.c:3176
+#: ../midori/midori-browser.c:4276 ../panels/midori-bookmarks.c:231
 msgid "Add a new bookmark"
 msgstr "Tambah bookmark baru"
 
-#: ../midori/midori-browser.c:3179
-msgid "Edit the selected bookmark"
-msgstr "Sunting bookmark terpilih"
-
-#: ../midori/midori-browser.c:3182
-msgid "Delete the selected bookmark"
-msgstr "Hapus bookmark terpilih"
-
-#: ../midori/midori-browser.c:3185
-msgid "Delete the selected history item"
-msgstr "Hapus item riwayat terpilih"
+#: ../midori/midori-browser.c:4278
+msgid "Add a new _folder"
+msgstr "Tambah sebuah _folder baru"
 
-#: ../midori/midori-browser.c:3188
-msgid "Clear the entire history"
-msgstr "Bersihkan seluruh riwayat"
-
-#: ../midori/midori-browser.c:3191
-msgid "Bookmark the selected history item"
-msgstr "Bookmark item riwayat terpilih"
-
-#: ../midori/midori-browser.c:3193
-msgid "_Tools"
-msgstr "_Alat"
+#: ../midori/midori-browser.c:4279
+msgid "Add a new bookmark folder"
+msgstr "Tambah sebuah folder penanda baru"
 
-#: ../midori/midori-browser.c:3195 ../midori/midori-searchaction.c:465
+#: ../midori/midori-browser.c:4281 ../midori/midori-searchaction.c:497
 msgid "_Manage Search Engines"
 msgstr "_Atur Mesin Pencari"
 
-#: ../midori/midori-browser.c:3196
+#: ../midori/midori-browser.c:4282
 msgid "Add, edit and remove search engines..."
 msgstr "Tambah, sunting dan hapus mesin pencari..."
 
-#: ../midori/midori-browser.c:3200
+#: ../midori/midori-browser.c:4285
+msgid "_Clear Private Data"
+msgstr "_Hapus Data Pribadi"
+
+#: ../midori/midori-browser.c:4286
+msgid "Clear private data..."
+msgstr "Hapus data pribadi..."
+
+#: ../midori/midori-browser.c:4290
 msgid "_Previous Tab"
 msgstr "_Tab Sebelumnya"
 
-#: ../midori/midori-browser.c:3201
+#: ../midori/midori-browser.c:4291
 msgid "Switch to the previous tab"
 msgstr "Pindah ke tab sebelumnya"
 
-#: ../midori/midori-browser.c:3203
+#: ../midori/midori-browser.c:4293
 msgid "_Next Tab"
 msgstr "Tab _Berikutnya"
 
-#: ../midori/midori-browser.c:3204
+#: ../midori/midori-browser.c:4294
 msgid "Switch to the next tab"
 msgstr "Pindah ke tab berikutnya"
 
-#: ../midori/midori-browser.c:3206
+#: ../midori/midori-browser.c:4296
 msgid "_Help"
 msgstr "Ba_ntuan"
 
-#: ../midori/midori-browser.c:3208
+#: ../midori/midori-browser.c:4298
 msgid "_Contents"
 msgstr "_Isi"
 
-#: ../midori/midori-browser.c:3209
+#: ../midori/midori-browser.c:4299
 msgid "Show the documentation"
 msgstr "Tampilkan dokumentasi"
 
-#: ../midori/midori-browser.c:3211
-msgid "_Frequent questions"
-msgstr "_Sering ditanyakan"
+#: ../midori/midori-browser.c:4301
+msgid "_Frequent Questions"
+msgstr "_Pertanyaan Sering Ditanyakan"
 
-#: ../midori/midori-browser.c:3212
+#: ../midori/midori-browser.c:4302
 msgid "Show the Frequently Asked Questions"
 msgstr "Tampilkan Pertanyaan Acapkali Diajukan"
 
-#: ../midori/midori-browser.c:3214
-msgid "_Report a bug"
-msgstr "_Laporkan kutu"
+#: ../midori/midori-browser.c:4304
+msgid "_Report a Bug"
+msgstr "_Laporkan Kutu"
 
-#: ../midori/midori-browser.c:3215
+#: ../midori/midori-browser.c:4305
 msgid "Open Midori's bug tracker"
 msgstr "Buka pelacak kutu Midori"
 
-#: ../midori/midori-browser.c:3218
+#: ../midori/midori-browser.c:4308
 msgid "Show information about the program"
 msgstr "Tampilkan informasi tentang program"
 
-#: ../midori/midori-browser.c:3225
+#: ../midori/midori-browser.c:4315
 msgid "P_rivate Browsing"
 msgstr "Meramban P_rivat"
 
-#: ../midori/midori-browser.c:3226
+#: ../midori/midori-browser.c:4316
 msgid "Don't save any private data while browsing"
 msgstr "Jangan simpan data privat ketika meramban"
 
-#: ../midori/midori-browser.c:3231
+#: ../midori/midori-browser.c:4321
 msgid "_Menubar"
 msgstr "_Batang menu"
 
-#: ../midori/midori-browser.c:3232
+#: ../midori/midori-browser.c:4322
 msgid "Show menubar"
 msgstr "Tampilkan batang menu"
 
-#: ../midori/midori-browser.c:3235
+#: ../midori/midori-browser.c:4325
 msgid "_Navigationbar"
 msgstr "Batang _navigasi"
 
-#: ../midori/midori-browser.c:3236
+#: ../midori/midori-browser.c:4326
 msgid "Show navigationbar"
 msgstr "Tampilkan batang navigasi"
 
-#: ../midori/midori-browser.c:3239
+#: ../midori/midori-browser.c:4329
 msgid "Side_panel"
 msgstr "Panel _sisi"
 
-#: ../midori/midori-browser.c:3240
+#: ../midori/midori-browser.c:4330
 msgid "Show sidepanel"
 msgstr "Tampilkan panel sisi"
 
-#: ../midori/midori-browser.c:3243
+#: ../midori/midori-browser.c:4333
 msgid "_Bookmarkbar"
-msgstr "Batang _bookmark"
+msgstr "Batang _penanda"
 
-#: ../midori/midori-browser.c:3244
+#: ../midori/midori-browser.c:4334
 msgid "Show bookmarkbar"
-msgstr "Tampilkan batang bookmark"
+msgstr "Tampilkan batang penanda"
 
-#: ../midori/midori-browser.c:3247
+#: ../midori/midori-browser.c:4337
 msgid "_Transferbar"
 msgstr "Batang _transfer"
 
-#: ../midori/midori-browser.c:3248
+#: ../midori/midori-browser.c:4338
 msgid "Show transferbar"
 msgstr "Tampilkan batang transfer"
 
-#: ../midori/midori-browser.c:3251
+#: ../midori/midori-browser.c:4341
 msgid "_Statusbar"
 msgstr "Batang stat_us"
 
-#: ../midori/midori-browser.c:3252
+#: ../midori/midori-browser.c:4342
 msgid "Show statusbar"
 msgstr "Tampilkan batang status"
 
-#: ../midori/midori-browser.c:3669
+#: ../midori/midori-browser.c:4349
+msgid "_Automatic"
+msgstr "_Otomatis"
+
+#: ../midori/midori-browser.c:4352 ../midori/midori-websettings.c:214
+msgid "Chinese (BIG5)"
+msgstr "China (BIG5)"
+
+#. i18n: A double underscore "__" is used to prevent an unwanted mnemonic
+#: ../midori/midori-browser.c:4356
+msgid "Japanese (SHIFT__JIS)"
+msgstr "Jepang (SHIFT__JIS)"
+
+#: ../midori/midori-browser.c:4359 ../midori/midori-websettings.c:216
+msgid "Russian (KOI8-R)"
+msgstr "Rusia (KOI8-R)"
+
+#: ../midori/midori-browser.c:4362 ../midori/midori-websettings.c:217
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: ../midori/midori-browser.c:4365 ../midori/midori-websettings.c:218
+msgid "Western (ISO-8859-1)"
+msgstr "Barat (ISO-8859-1)"
+
+#: ../midori/midori-browser.c:4368 ../midori/midori-websettings.c:219
+#: ../midori/midori-websettings.c:291
+msgid "Custom..."
+msgstr "Suai..."
+
+#: ../midori/midori-browser.c:4806
+msgid "_Separator"
+msgstr "_Pemisah"
+
+#: ../midori/midori-browser.c:4813
 msgid "_Location..."
 msgstr "_Lokasi..."
 
-#: ../midori/midori-browser.c:3671
+#: ../midori/midori-browser.c:4815
 msgid "Open a particular location"
 msgstr "Buka lokasi khusus"
 
-#: ../midori/midori-browser.c:3695
+#: ../midori/midori-browser.c:4839
 msgid "_Web Search..."
 msgstr "Penelusuran _Web..."
 
-#: ../midori/midori-browser.c:3697
+#: ../midori/midori-browser.c:4841
 msgid "Run a web search"
 msgstr "Jalankan penelusuran web"
 
-#: ../midori/midori-browser.c:3716
+#: ../midori/midori-browser.c:4862
 msgid "Reopen a previously closed tab or window"
 msgstr "Buka kembali tab atau jendela yang sebelumnya tertutup"
 
-#: ../midori/midori-browser.c:3729
+#: ../midori/midori-browser.c:4877
 msgid "_Recently visited pages"
 msgstr "_Halaman yang baru dikunjungi"
 
-#: ../midori/midori-browser.c:3731
+#: ../midori/midori-browser.c:4879
 msgid "Reopen pages that you visited earlier"
 msgstr "Buka kembali halaman yang sebelumnya anda kunjungi"
 
-#: ../midori/midori-browser.c:3746
+#: ../midori/midori-browser.c:4894 ../midori/sokoke.c:857
+msgid "_Bookmarks"
+msgstr "B_ookmark"
+
+#: ../midori/midori-browser.c:4896
 msgid "Show the saved bookmarks"
-msgstr "Tampilkan bookmark tersimpan"
+msgstr "Tampilkan penanda tersimpan"
 
-#: ../midori/midori-browser.c:3759
+#: ../midori/midori-browser.c:4911
+msgid "_Tools"
+msgstr "_Alat"
+
+#: ../midori/midori-browser.c:4923
 msgid "_Window"
 msgstr "_Jendela"
 
-#: ../midori/midori-browser.c:3761
+#: ../midori/midori-browser.c:4925
 msgid "Show a list of all open tabs"
 msgstr "Tampilkan senarai semua tab yang terbuka"
 
-#: ../midori/midori-browser.c:3883
-msgid "Bookmarks"
-msgstr "Bookmark"
+#: ../midori/midori-browser.c:4939
+msgid "_Menu"
+msgstr "_Menu"
 
-#: ../midori/midori-browser.c:3926 ../midori/midori-preferences.c:517
-msgid "History"
-msgstr "Riwayat"
+#: ../midori/midori-browser.c:4941
+msgid "Menu"
+msgstr "Menu"
 
 #. i18n: A panel at the bottom, to search text in pages
-#: ../midori/midori-browser.c:3969
-msgid "_Inline find:"
-msgstr "_Cari dalam baris:"
+#: ../midori/midori-browser.c:5127
+msgid "_Inline Find:"
+msgstr "_Cari Dalam Baris:"
+
+#: ../midori/midori-browser.c:5152
+msgid "Previous"
+msgstr "Sebelumnya"
 
-#: ../midori/midori-browser.c:4004
+#: ../midori/midori-browser.c:5157
+msgid "Next"
+msgstr "Berikutnya"
+
+#: ../midori/midori-browser.c:5162
 msgid "Match Case"
 msgstr "Cocokkan Huruf"
 
-#: ../midori/midori-browser.c:4012
+#: ../midori/midori-browser.c:5170
 msgid "Highlight Matches"
 msgstr "Sorot Kecocokan"
 
-#: ../midori/midori-browser.c:4021
+#: ../midori/midori-browser.c:5180
 msgid "Close Findbar"
 msgstr "Tutup batang cari"
 
-#: ../midori/midori-browser.c:4262
+#: ../midori/midori-browser.c:5215
+#: ../extensions/cookie-manager/cookie-manager-page.c:109
+msgid "Delete All"
+msgstr "Hapus Semua"
+
+#: ../midori/midori-browser.c:5552
 #, c-format
 msgid "Unexpected setting '%s'"
 msgstr "Pengaturan tak diharapkan '%s'"
 
-#: ../midori/midori-panel.c:223 ../midori/midori-panel.c:224
+#: ../midori/midori-locationaction.c:901
+#, c-format
+msgid "Search with %s"
+msgstr "Cari %s"
+
+#: ../midori/midori-panel.c:382 ../midori/midori-panel.c:384
+msgid "Detach chosen panel from the window"
+msgstr "Lepaskan panel terpilih dari jendela"
+
+#: ../midori/midori-panel.c:394 ../midori/midori-panel.c:396
+#: ../midori/midori-panel.c:577 ../midori/midori-panel.c:580
+msgid "Align sidepanel to the right"
+msgstr "Ratakan panel sisi ke kanan"
+
+#: ../midori/midori-panel.c:406 ../midori/midori-panel.c:407
 msgid "Close panel"
 msgstr "Tutup panel"
 
-#: ../midori/midori-websettings.c:131 ../midori/midori-view.c:1635
-msgid "Blank page"
-msgstr "Halaman kosong"
+#: ../midori/midori-panel.c:578 ../midori/midori-panel.c:581
+msgid "Align sidepanel to the left"
+msgstr "Ratakan panel sisi ke kiri"
 
-#: ../midori/midori-websettings.c:132 ../midori/midori-websettings.c:387
-msgid "Homepage"
-msgstr "Beranda"
+#: ../midori/midori-panel.c:704
+msgid "Show panel _titles"
+msgstr "Tampilkan _judul panel"
 
-#: ../midori/midori-websettings.c:133
-msgid "Last open pages"
-msgstr "Halaman terakhir dibuka"
+#: ../midori/midori-panel.c:712
+msgid "Show operating _controls"
+msgstr "Tampilkan _kendali operasi"
 
-#: ../midori/midori-websettings.c:148
-msgid "Chinese (BIG5)"
-msgstr "China (BIG5)"
+#: ../midori/midori-panel.c:783
+msgid "Options"
+msgstr "Opsi"
 
-#: ../midori/midori-websettings.c:149
-msgid "Japanese (SHIFT_JIS)"
-msgstr "Jepang (SHIFT_JIS)"
+#: ../midori/midori-websettings.c:197
+msgid "Show Blank page"
+msgstr "Tampilkan halaman Kosong"
 
-#: ../midori/midori-websettings.c:150
-msgid "Russian (KOI8-R)"
-msgstr "Rusia (KOI8-R)"
+#: ../midori/midori-websettings.c:198
+msgid "Show Homepage"
+msgstr "Tampilkan Beranda"
 
-#: ../midori/midori-websettings.c:151
-msgid "Unicode (UTF-8)"
-msgstr "Unicode (UTF-8)"
+#: ../midori/midori-websettings.c:199
+msgid "Show last open tabs"
+msgstr "Tampilkan tab yang terakhir terbuka"
 
-#: ../midori/midori-websettings.c:152
-msgid "Western (ISO-8859-1)"
-msgstr "Barat (ISO-8859-1)"
-
-#: ../midori/midori-websettings.c:153
-msgid "Custom..."
-msgstr "Suai..."
+#: ../midori/midori-websettings.c:215
+msgid "Japanese (SHIFT_JIS)"
+msgstr "Jepang (SHIFT_JIS)"
 
-#: ../midori/midori-websettings.c:168
+#: ../midori/midori-websettings.c:234
 msgid "New tab"
 msgstr "Tab baru"
 
-#: ../midori/midori-websettings.c:169
+#: ../midori/midori-websettings.c:235
 msgid "New window"
 msgstr "Jendela baru"
 
-#: ../midori/midori-websettings.c:170
+#: ../midori/midori-websettings.c:236
 msgid "Current tab"
 msgstr "Tab saat ini"
 
-#: ../midori/midori-websettings.c:185
+#: ../midori/midori-websettings.c:251
 msgid "Default"
 msgstr "Standar"
 
-#: ../midori/midori-websettings.c:186
+#: ../midori/midori-websettings.c:252
 msgid "Icons"
 msgstr "Ikon"
 
-#: ../midori/midori-websettings.c:187
+#: ../midori/midori-websettings.c:253
 msgid "Text"
 msgstr "Teks"
 
-#: ../midori/midori-websettings.c:188
-msgid "Both"
-msgstr "Keduanya"
+#: ../midori/midori-websettings.c:254
+msgid "Icons and text"
+msgstr "Ikon dan teks"
 
-#: ../midori/midori-websettings.c:189
-msgid "Both horizontal"
-msgstr "Keduanya horizontal"
+#: ../midori/midori-websettings.c:255
+msgid "Text beside icons"
+msgstr "Teks di samping ikon"
 
-#: ../midori/midori-websettings.c:204
+#: ../midori/midori-websettings.c:270
 msgid "All cookies"
 msgstr "Semua kuki"
 
-#: ../midori/midori-websettings.c:205
+#: ../midori/midori-websettings.c:271
 msgid "Session cookies"
 msgstr "Kuki sesi"
 
-#: ../midori/midori-websettings.c:206 ../panels/midori-addons.c:97
+#: ../midori/midori-websettings.c:272 ../panels/midori-addons.c:94
+#: ../extensions/shortcuts.c:93
 msgid "None"
 msgstr "Tak ada"
 
-#: ../midori/midori-websettings.c:246
+#: ../midori/midori-websettings.c:288
+msgid "Safari"
+msgstr "Safari"
+
+#: ../midori/midori-websettings.c:289
+msgid "Firefox"
+msgstr "Firefox"
+
+#: ../midori/midori-websettings.c:290
+msgid "Internet Explorer"
+msgstr "Internet Explorer"
+
+#: ../midori/midori-websettings.c:343
 msgid "Remember last window size"
 msgstr "Ingat ukuran jendela terakhir"
 
-#: ../midori/midori-websettings.c:247
+#: ../midori/midori-websettings.c:344
 msgid "Whether to save the last window size"
 msgstr "Apakah ingin menyimpan ukuran jendela yang terakhir tersimpan"
 
-#: ../midori/midori-websettings.c:255
+#: ../midori/midori-websettings.c:352
 msgid "Last window width"
 msgstr "Lebar jendela terakhir"
 
-#: ../midori/midori-websettings.c:256
+#: ../midori/midori-websettings.c:353
 msgid "The last saved window width"
 msgstr "Lebar jendela terakhir tersimpan"
 
-#: ../midori/midori-websettings.c:264
+#: ../midori/midori-websettings.c:361
 msgid "Last window height"
 msgstr "Tinggi jendela terakhir"
 
-#: ../midori/midori-websettings.c:265
+#: ../midori/midori-websettings.c:362
 msgid "The last saved window height"
 msgstr "Tinggi jendela terakhir tersimpan"
 
-#: ../midori/midori-websettings.c:273
+#: ../midori/midori-websettings.c:387
 msgid "Last panel position"
 msgstr "Posisi panel terakhir"
 
-#: ../midori/midori-websettings.c:274
+#: ../midori/midori-websettings.c:388
 msgid "The last saved panel position"
 msgstr "Posisi panel terakhir tersimpan"
 
 #. i18n: The internal index of the last opened panel
-#: ../midori/midori-websettings.c:283
+#: ../midori/midori-websettings.c:397
 msgid "Last panel page"
 msgstr "Halaman panel terakhir"
 
-#: ../midori/midori-websettings.c:284
+#: ../midori/midori-websettings.c:398
 msgid "The last saved panel page"
 msgstr "Halaman panel terakhir tersimpan"
 
-#: ../midori/midori-websettings.c:292
+#: ../midori/midori-websettings.c:406
 msgid "Last Web search"
 msgstr "Penelusuran Web terakhir"
 
-#: ../midori/midori-websettings.c:293
+#: ../midori/midori-websettings.c:407
 msgid "The last saved Web search"
 msgstr "Penelusuran Web terakhir tersimpan"
 
-#: ../midori/midori-websettings.c:302
+#: ../midori/midori-websettings.c:416
 msgid "Show Menubar"
 msgstr "Tampilkan Batang Menu"
 
-#: ../midori/midori-websettings.c:303
+#: ../midori/midori-websettings.c:417
 msgid "Whether to show the menubar"
 msgstr "Apakah ingin menampilkan batang menu"
 
-#: ../midori/midori-websettings.c:311
+#: ../midori/midori-websettings.c:425
 msgid "Show Navigationbar"
 msgstr "Tampilkan Batang Navigasi"
 
-#: ../midori/midori-websettings.c:312
+#: ../midori/midori-websettings.c:426
 msgid "Whether to show the navigationbar"
 msgstr "Apakah ingin menampilkan batang navigasi"
 
-#: ../midori/midori-websettings.c:320
+#: ../midori/midori-websettings.c:434
 msgid "Show Bookmarkbar"
-msgstr "Tampilkan Batang Bookmark"
+msgstr "Tampilkan Batang Penanda"
 
-#: ../midori/midori-websettings.c:321
+#: ../midori/midori-websettings.c:435
 msgid "Whether to show the bookmarkbar"
-msgstr "Apakah ingin menampilkan batang bookmark"
+msgstr "Apakah ingin menampilkan batang penanda"
 
-#: ../midori/midori-websettings.c:329
+#: ../midori/midori-websettings.c:443
 msgid "Show Panel"
 msgstr "Tampilkan Panel"
 
-#: ../midori/midori-websettings.c:330
+#: ../midori/midori-websettings.c:444
 msgid "Whether to show the panel"
 msgstr "Apakah ingin menampilkan panel"
 
-#: ../midori/midori-websettings.c:338
+#: ../midori/midori-websettings.c:459
+msgid "Show Transferbar"
+msgstr "Tampilkan Batang Transfer"
+
+#: ../midori/midori-websettings.c:460
+msgid "Whether to show the transferbar"
+msgstr "Apakah ingin menampilkan batang transfer"
+
+#: ../midori/midori-websettings.c:468
 msgid "Show Statusbar"
 msgstr "Tampilkan Batang Status"
 
-#: ../midori/midori-websettings.c:339
+#: ../midori/midori-websettings.c:469
 msgid "Whether to show the statusbar"
 msgstr "Apakah ingin menampilkan batang status"
 
-#: ../midori/midori-websettings.c:348
-msgid "Toolbar Style"
-msgstr "Gaya Batang Alat"
+#: ../midori/midori-websettings.c:478
+msgid "Toolbar Style:"
+msgstr "Gaya Batang Alat:"
 
-#: ../midori/midori-websettings.c:349
+#: ../midori/midori-websettings.c:479
 msgid "The style of the toolbar"
 msgstr "Gaya dari batang alat"
 
-#: ../midori/midori-websettings.c:358
+#: ../midori/midori-websettings.c:495
+msgid "Show progress in location entry"
+msgstr "Tampilkan progres di lema lokasi"
+
+#: ../midori/midori-websettings.c:496
+msgid "Whether to show loading progress in the location entry"
+msgstr "Apakah ingin menampilkan progres memuat di lema lokasi"
+
+#: ../midori/midori-websettings.c:511
+msgid "Search engines in location completion"
+msgstr "Mesin pencari di penyelesai lokasi"
+
+#: ../midori/midori-websettings.c:512
+msgid "Whether to show search engines in the location completion"
+msgstr "Apakah akan menampilkan mesin pencari di penyelesai lokasi"
+
+#: ../midori/midori-websettings.c:520
 msgid "Toolbar Items"
 msgstr "Item Batang Alat"
 
-#: ../midori/midori-websettings.c:359
+#: ../midori/midori-websettings.c:521
 msgid "The items to show on the toolbar"
 msgstr "Item yang akan ditampilkan di batang alat"
 
-#: ../midori/midori-websettings.c:367
+#: ../midori/midori-websettings.c:529
 msgid "Compact Sidepanel"
 msgstr "Panel Sisi Kompak"
 
-#: ../midori/midori-websettings.c:368
+#: ../midori/midori-websettings.c:530
 msgid "Whether to make the sidepanel compact"
 msgstr "Apakah ingin membuat panel sisi kompak"
 
-#: ../midori/midori-websettings.c:377
-msgid "Load on Startup"
-msgstr "Dimuat Saat Hidupkan"
+#: ../midori/midori-websettings.c:545
+msgid "Show operating controls of the panel"
+msgstr "Tampilkan kendali operasi dari panel"
 
-#: ../midori/midori-websettings.c:378
-msgid "What to load on startup"
-msgstr "Apa yang akan dimuat saat hidupkan"
+#: ../midori/midori-websettings.c:546
+msgid "Whether to show the operating controls of the panel"
+msgstr "Apakah ingin menampilkan kendali operasi dari panel"
 
-#: ../midori/midori-websettings.c:388
+#: ../midori/midori-websettings.c:561
+msgid "Align sidepanel on the right"
+msgstr "Ratakan panel sisi di kanan"
+
+#: ../midori/midori-websettings.c:562
+msgid "Whether to align the sidepanel on the right"
+msgstr "Apakah ingin meratakan panel sisi di sebelah kanan"
+
+#: ../midori/midori-websettings.c:571
+msgid "When Midori starts:"
+msgstr "Jika Midori dijalankan:"
+
+#: ../midori/midori-websettings.c:572
+msgid "What to do when Midori starts"
+msgstr "Apa yang akan dilakukan saat Midori dijalankan"
+
+#: ../midori/midori-websettings.c:581
+msgid "Homepage:"
+msgstr "Beranda:"
+
+#: ../midori/midori-websettings.c:582
 msgid "The homepage"
 msgstr "Laman"
 
-#: ../midori/midori-websettings.c:396
-msgid "Download Folder"
-msgstr "Folder Unduh"
+#: ../midori/midori-websettings.c:597
+msgid "Show crash dialog"
+msgstr "Tampilkan dialog macet"
 
-#: ../midori/midori-websettings.c:397
+#: ../midori/midori-websettings.c:598
+msgid "Show a dialog after Midori crashed"
+msgstr "Tampilkan sebuah dialog setelah Midori macet"
+
+#. i18n: Speed dial, webpage shortcuts, named for the phone function
+#: ../midori/midori-websettings.c:614
+msgid "Show speed dial in new tabs"
+msgstr "Tampilkan panggil cepat di tab baru"
+
+#: ../midori/midori-websettings.c:615
+msgid "Show speed dial in newly opened tabs"
+msgstr "Tampilkan panggil cepat di tab yang baru dibuka"
+
+#: ../midori/midori-websettings.c:623
+msgid "Save downloaded files to:"
+msgstr "Simpan berkas yang diunduh ke:"
+
+#: ../midori/midori-websettings.c:624
 msgid "The folder downloaded files are saved to"
 msgstr "Folder berkas terunduh disimpan di"
 
-#: ../midori/midori-websettings.c:405
+#: ../midori/midori-websettings.c:643
+msgid "Ask for the destination folder"
+msgstr "Tanya folder tujuan"
+
+#: ../midori/midori-websettings.c:644
+msgid "Whether to ask for the destination folder when downloading a file"
+msgstr "Apakah akan menanyakan folder tujuan ketika mengunduh sebuah berkas"
+
+#: ../midori/midori-websettings.c:663
+msgid "Notify when a transfer has been completed"
+msgstr "Beritahu jika sebuah transfer telah selesai"
+
+#: ../midori/midori-websettings.c:664
+msgid "Whether to show a notification when a transfer has been completed"
+msgstr "Apakah akan menampilkan sebuah notifikasi ketika sebuah transfer "
+"telah selesai"
+
+#: ../midori/midori-websettings.c:676
 msgid "Download Manager"
 msgstr "Manajer Unduh"
 
-#: ../midori/midori-websettings.c:406
+#: ../midori/midori-websettings.c:677
 msgid "An external download manager"
 msgstr "Manajer unduh eksternal"
 
-#: ../midori/midori-websettings.c:414
+#: ../midori/midori-websettings.c:685
 msgid "Text Editor"
 msgstr "Penyunting Teks"
 
-#: ../midori/midori-websettings.c:415
+#: ../midori/midori-websettings.c:686
 msgid "An external text editor"
 msgstr "Penyunting teks eksternal"
 
-#: ../midori/midori-websettings.c:423
+#: ../midori/midori-websettings.c:701
+msgid "News Aggregator"
+msgstr "Agregator Berita"
+
+#: ../midori/midori-websettings.c:702
+msgid "An external news aggregator"
+msgstr "Sebuah agregator berita eksternal"
+
+#: ../midori/midori-websettings.c:710
 msgid "Location entry Search"
 msgstr "Pencari entri lokasi"
 
-#: ../midori/midori-websettings.c:424
+#: ../midori/midori-websettings.c:711
 msgid "The search to perform inside the location entry"
 msgstr "Pencarian yang dilakukan di dalam entri lokasi"
 
-#: ../midori/midori-websettings.c:432
+#: ../midori/midori-websettings.c:719
 msgid "Preferred Encoding"
 msgstr "Penyandian Kesukaan"
 
-#: ../midori/midori-websettings.c:433
+#: ../midori/midori-websettings.c:720
 msgid "The preferred character encoding"
 msgstr "Penyandian karakter kesukaan"
 
-#: ../midori/midori-websettings.c:443
+#: ../midori/midori-websettings.c:730
 msgid "Always Show Tabbar"
 msgstr "Selalu Tampilkan Batang Tab"
 
-#: ../midori/midori-websettings.c:444
+#: ../midori/midori-websettings.c:731
 msgid "Always show the tabbar"
 msgstr "Selalu tampilkan batang tab"
 
-#: ../midori/midori-websettings.c:452
+#: ../midori/midori-websettings.c:739
 msgid "Close Buttons on Tabs"
 msgstr "Tutup Tombol di Tab"
 
-#: ../midori/midori-websettings.c:453
+#: ../midori/midori-websettings.c:740
 msgid "Whether tabs have close buttons"
 msgstr "Apakah tab memiliki tombol tutup"
 
-#: ../midori/midori-websettings.c:462
-msgid "Open new pages in"
-msgstr "Buka halaman baru di"
+#: ../midori/midori-websettings.c:748
+msgid "Open new pages in:"
+msgstr "Buka halaman baru di:"
 
-#: ../midori/midori-websettings.c:463
+#: ../midori/midori-websettings.c:749
 msgid "Where to open new pages"
 msgstr "Dimana membuka halaman baru"
 
-#: ../midori/midori-websettings.c:473
-msgid "Open external pages in"
-msgstr "Buka halaman eksternal di"
+#: ../midori/midori-websettings.c:758
+msgid "Open external pages in:"
+msgstr "Buka halaman eksternal di:"
 
-#: ../midori/midori-websettings.c:474
+#: ../midori/midori-websettings.c:759
 msgid "Where to open externally opened pages"
 msgstr "Dimana ingin membuka halaman yang dibuka secara eksternal"
 
-#: ../midori/midori-websettings.c:483
+#: ../midori/midori-websettings.c:768
 msgid "Middle click opens Selection"
 msgstr "Klik Tengah Membuka Pilihan"
 
-#: ../midori/midori-websettings.c:484
-msgid "Load an URL from the selection via middle click"
-msgstr "Muat URI dari pilihan via klik tengah"
+#: ../midori/midori-websettings.c:769
+msgid "Load an address from the selection via middle click"
+msgstr "Muat sebuah alamat dari pilihan via klik tengah"
 
-#: ../midori/midori-websettings.c:492
+#: ../midori/midori-websettings.c:777
 msgid "Open tabs in the background"
 msgstr "Buka Tab di Latar Belakang"
 
-#: ../midori/midori-websettings.c:493
+#: ../midori/midori-websettings.c:778
 msgid "Whether to open new tabs in the background"
 msgstr "Apakah ingin membuka tab baru di latar belakang"
 
-#: ../midori/midori-websettings.c:501
+#: ../midori/midori-websettings.c:786
 msgid "Open Tabs next to Current"
 msgstr "Buka Tab di Samping Saat Ini"
 
-#: ../midori/midori-websettings.c:502
+#: ../midori/midori-websettings.c:787
 msgid "Whether to open new tabs next to the current tab or after the last one"
 msgstr ""
 "Apakah ingin membuka tab baru di sebelah tab saat ini atau setelah tab "
 "terakhir"
 
-#: ../midori/midori-websettings.c:510
+#: ../midori/midori-websettings.c:795
 msgid "Open popups in tabs"
 msgstr "Buka popup di tab"
 
-#: ../midori/midori-websettings.c:511
+#: ../midori/midori-websettings.c:796
 msgid "Whether to open popup windows in tabs"
 msgstr "Apakah ingin membuka jendela popup di tab"
 
-#: ../midori/midori-websettings.c:537
+#: ../midori/midori-websettings.c:812
+msgid "Zoom Text and Images"
+msgstr "Pembesaran Teks dan Gambar"
+
+#: ../midori/midori-websettings.c:813
+msgid "Whether to zoom text and images"
+msgstr "Apakah ingin memperbesar teks dan gambar"
+
+#: ../midori/midori-websettings.c:828
+msgid "Find inline while typing"
+msgstr "Cari dalam baris ketika mengetik"
+
+#: ../midori/midori-websettings.c:829
+msgid "Whether to automatically find inline while typing"
+msgstr "Apakah akan secara otomatis mencari dalam baris ketika mengetik"
+
+#: ../midori/midori-websettings.c:837
 msgid "Accept cookies"
 msgstr "Terima kuki"
 
-#: ../midori/midori-websettings.c:538
+#: ../midori/midori-websettings.c:838
 msgid "What type of cookies to accept"
 msgstr "Tipe kuki apa yang diterima"
 
-#: ../midori/midori-websettings.c:547
+#: ../midori/midori-websettings.c:847
 msgid "Original cookies only"
 msgstr "Hanya kuki asli"
 
-#: ../midori/midori-websettings.c:548
+#: ../midori/midori-websettings.c:848
 msgid "Accept cookies from the original website only"
 msgstr "Terima kuki hanya dari situs web asli"
 
-#: ../midori/midori-websettings.c:556
+#: ../midori/midori-websettings.c:856
 msgid "Maximum cookie age"
 msgstr "Usia kuki maksimum"
 
-#: ../midori/midori-websettings.c:557
+#: ../midori/midori-websettings.c:857
 msgid "The maximum number of days to save cookies for"
 msgstr "Jumlah maksimum hari untuk menyimpan kuki"
 
-#: ../midori/midori-websettings.c:567
+#: ../midori/midori-websettings.c:867
 msgid "Remember last visited pages"
 msgstr "Ingat halaman terakhir dikunjungi"
 
-#: ../midori/midori-websettings.c:568
+#: ../midori/midori-websettings.c:868
 msgid "Whether the last visited pages are saved"
 msgstr "Apakah halaman terakhir dikunjungi tersimpan"
 
-#: ../midori/midori-websettings.c:576
+#: ../midori/midori-websettings.c:876
 msgid "Maximum history age"
 msgstr "Usia riwayat maksimum"
 
-#: ../midori/midori-websettings.c:577
+#: ../midori/midori-websettings.c:877
 msgid "The maximum number of days to save the history for"
 msgstr "Jumlah maksimum hari untuk tetap menyimpan riwayat"
 
-#: ../midori/midori-websettings.c:585
+#: ../midori/midori-websettings.c:885
 msgid "Remember last form inputs"
 msgstr "Ingat bentuk terakhir masukan"
 
-#: ../midori/midori-websettings.c:586
+#: ../midori/midori-websettings.c:886
 msgid "Whether the last form inputs are saved"
 msgstr "Apakah bentuk terakhir masukan disimpan"
 
-#: ../midori/midori-websettings.c:594
+#: ../midori/midori-websettings.c:894
 msgid "Remember last downloaded files"
 msgstr "Ingat berkas terakhir diunduh"
 
-#: ../midori/midori-websettings.c:595
+#: ../midori/midori-websettings.c:895
 msgid "Whether the last downloaded files are saved"
 msgstr "Apakah berkas terakhir diunduh akan disimpan"
 
-#: ../midori/midori-websettings.c:605
-msgid "HTTP Proxy"
-msgstr "Proxy HTTP"
+#: ../midori/midori-websettings.c:905
+msgid "Proxy Server"
+msgstr "Server Proxy"
 
-#: ../midori/midori-websettings.c:606
-msgid "The proxy used for HTTP connections"
-msgstr "Proxy yang digunakan untuk koneksi HTTP"
+#: ../midori/midori-websettings.c:906
+msgid "The proxy server used for HTTP connections"
+msgstr "Proxy server yang digunakan untuk koneksi HTTP"
 
-#: ../midori/midori-websettings.c:614
+#: ../midori/midori-websettings.c:921
+msgid "Detect proxy server automatically"
+msgstr "Deteksi server proxy secara otomatis"
+
+#: ../midori/midori-websettings.c:922
+msgid "Whether to detect the proxy server automatically from the environment"
+msgstr "Apakah akan mendeteksi server proxy secara otomatis dari lingkungan"
+
+#. i18n: This refers to an application, not the 'user agent' string
+#: ../midori/midori-websettings.c:938
+msgid "Identify as"
+msgstr "Identifikasi sebagai"
+
+#: ../midori/midori-websettings.c:939
+msgid "What to identify as to web pages"
+msgstr "Apa yang diidentifikasi sebagai halaman web"
+
+#: ../midori/midori-websettings.c:955
+msgid "Identification string"
+msgstr "Tali identifikasi"
+
+#: ../midori/midori-websettings.c:956
+msgid "The application identification string"
+msgstr "Tali identifikasi aplikasi"
+
+#: ../midori/midori-websettings.c:964
 msgid "Cache size"
 msgstr "Ukuran tembolok"
 
-#: ../midori/midori-websettings.c:615
+#: ../midori/midori-websettings.c:965
 msgid "The allowed size of the cache"
 msgstr "Ukuran tembolok yang diizinkan"
 
+#: ../midori/midori-websettings.c:980
+msgid "Clear private data"
+msgstr "Hapus data pribadi"
+
+#: ../midori/midori-websettings.c:981
+msgid "The private data selected for deletion"
+msgstr "Data pribadi yang dipilih untuk dihapus"
+
+#: ../midori/midori-view.c:781
+#, c-format
+msgid "The page '%s' couldn't be loaded."
+msgstr "Halaman bernama '%s' tak dapat dimuat"
+
+#. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
+#. so reloading via Javascript works but not via API calls.
+#: ../midori/midori-view.c:783 ../midori/midori-view.c:3013
+#: ../extensions/feed-panel/main.c:112
+msgid "Error"
+msgstr "Galat"
+
+#: ../midori/midori-view.c:786
+msgid "Try again"
+msgstr "Coba lagi"
+
 #. i18n: The title of the 404 - Not found error page
-#: ../midori/midori-view.c:632
+#. Error pages are special, we want to try loading the destination
+#. again, not the error page which isn't even a proper page
+#: ../midori/midori-view.c:818 ../midori/midori-view.c:3017
 #, c-format
 msgid "Not found - %s"
-msgstr ""
+msgstr "Tak ditemukan - %s"
 
-#: ../midori/midori-view.c:902
+#: ../midori/midori-view.c:1205
+msgid "Open _Link"
+msgstr "Buka _Tautan"
+
+#: ../midori/midori-view.c:1207
 msgid "Open Link in New _Tab"
 msgstr "Buka Taut di _Tab Baru"
 
-#: ../midori/midori-view.c:925
-msgid "_Save Link destination"
-msgstr "_Simpan Taut tujuan"
+#: ../midori/midori-view.c:1224
+msgid "Open Link in New _Window"
+msgstr "Buka Tautan di _Jendela Baru"
 
-#: ../midori/midori-view.c:933
+#: ../midori/midori-view.c:1230
 msgid "_Download Link destination"
 msgstr "_Unduh Taut tujuan"
 
-#: ../midori/midori-view.c:955
-msgid "Open URL in New _Tab"
-msgstr "Buka URL di _Tab Baru"
+#: ../midori/midori-view.c:1236
+msgid "_Save Link destination"
+msgstr "_Simpan Taut tujuan"
+
+#: ../midori/midori-view.c:1245
+msgid "Download with Download _Manager"
+msgstr "Unduh Dengan _Manajer Unduh"
+
+#: ../midori/midori-view.c:1274
+msgid "Search _with"
+msgstr "Cari _dengan"
+
+#: ../midori/midori-view.c:1306
+msgid "_Search the Web"
+msgstr "_Cari web"
+
+#: ../midori/midori-view.c:1316
+msgid "Open Address in New _Tab"
+msgstr "Buka Alamat di _Tab Baru"
+
+#: ../midori/midori-view.c:1494
+msgid "Open or download file"
+msgstr "Buka atau unduh berkas"
+
+#: ../midori/midori-view.c:1511
+#, c-format
+msgid "File Type: '%s'"
+msgstr "Tipe Berkas: '%s'"
+
+#: ../midori/midori-view.c:1514
+#, c-format
+msgid "File Type: %s ('%s')"
+msgstr "Tipe Berkas: %s ('%s')"
+
+#. i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz"
+#: ../midori/midori-view.c:1518
+#, c-format
+msgid "Open %s"
+msgstr "Buka %s"
 
-#: ../midori/midori-view.c:1365
+#: ../midori/midori-view.c:1957
 #, c-format
 msgid "Inspect page - %s"
 msgstr "Periksa halaman - %s"
 
-#: ../midori/midori-view.c:1503
-msgid "Source"
-msgstr "Sumber"
+#: ../midori/midori-view.c:2147
+msgid "Speed dial"
+msgstr "Panggil cepat"
+
+#: ../midori/midori-view.c:2148
+msgid "Click to add a shortcut"
+msgstr "Klik untuk menambah jalan pintas"
+
+#: ../midori/midori-view.c:2149
+msgid "Enter shortcut address"
+msgstr "Masukkan alamat jalan pintas"
+
+#: ../midori/midori-view.c:2150
+msgid "Enter shortcut title"
+msgstr "Masukkan judul jalan pintas"
 
-#: ../midori/midori-view.c:1527
-#, fuzzy, c-format
+#: ../midori/midori-view.c:2151
+msgid "Are you sure you want to delete this shortcut?"
+msgstr "Anda yakin ingin menghapus jalan pintas ini?"
+
+#: ../midori/midori-view.c:2181
+#, c-format
+msgid "Document cannot be displayed"
+msgstr "Dokumen tak dapat ditampilkan"
+
+#: ../midori/midori-view.c:2198
+#, c-format
 msgid "No documentation installed"
-msgstr "Tampilkan dokumentasi"
+msgstr "Tak ada dokumentasi yang terinstal"
+
+#: ../midori/midori-view.c:2323
+msgid "Blank page"
+msgstr "Halaman kosong"
 
-#: ../midori/midori-preferences.c:87
+#: ../midori/midori-view.c:2551 ../midori/sokoke.c:865
+msgid "New _Tab"
+msgstr "Tab _Baru"
+
+#: ../midori/midori-view.c:2565
+msgid "_Duplicate Tab"
+msgstr "_Duplikasi Tab"
+
+#: ../midori/midori-view.c:2570
+msgid "_Restore Tab"
+msgstr "_Kembalikan Tab"
+
+#: ../midori/midori-view.c:2570
+msgid "_Minimize Tab"
+msgstr "_Kecilkan Tab"
+
+#: ../midori/midori-preferences.c:91
 #, c-format
 msgid "Preferences for %s"
 msgstr "Pengaturan untuk %s"
 
 #. Page "General"
-#: ../midori/midori-preferences.c:338
+#: ../midori/midori-preferences.c:398
 msgid "General"
 msgstr "Umum"
 
-#: ../midori/midori-preferences.c:339
+#: ../midori/midori-preferences.c:399
 msgid "Startup"
 msgstr "Mulai"
 
+#: ../midori/midori-preferences.c:415
+msgid "Use current page as homepage"
+msgstr "Gunakan halaman saat ini sebagai beranda"
+
+#: ../midori/midori-preferences.c:425 ../panels/midori-transfers.c:88
+msgid "Transfers"
+msgstr "Transfer"
+
 #. Page "Appearance"
-#: ../midori/midori-preferences.c:386
+#: ../midori/midori-preferences.c:440
 msgid "Appearance"
 msgstr "Tampilan"
 
-#: ../midori/midori-preferences.c:387
+#: ../midori/midori-preferences.c:441
 msgid "Font settings"
 msgstr "Pengaturan fonta"
 
-#: ../midori/midori-preferences.c:389
+#: ../midori/midori-preferences.c:443
 msgid "Default Font Family"
 msgstr "Keluarga Fonta Standar"
 
-#: ../midori/midori-preferences.c:397
+#: ../midori/midori-preferences.c:447
+msgid "The default font family used to display text"
+msgstr "Keluarga fonta standar yang digunakan untuk menampilkan teks"
+
+#: ../midori/midori-preferences.c:450
+msgid "The default font size used to display text"
+msgstr "Ukuran fonta standar yang digunakan untuk menampilkan teks"
+
+#: ../midori/midori-preferences.c:453
+msgid "Fixed-width Font Family"
+msgstr "Keluarga Fonta Sesuai Lebar"
+
+#: ../midori/midori-preferences.c:457
+msgid "The font family used to display fixed-width text"
+msgstr "Keluarga fonta yang digunakan untuk menampilkan teks sesuai lebar"
+
+#: ../midori/midori-preferences.c:460
+msgid "The font size used to display fixed-width text"
+msgstr "Ukuran fonta yang digunakan untuk menampilkan teks sesuai lebar"
+
+#: ../midori/midori-preferences.c:463
 msgid "Minimum Font Size"
 msgstr "Ukuran Fonta Minimum"
 
+#: ../midori/midori-preferences.c:466
+msgid "The minimum font size used to display text"
+msgstr "Ukuran fonta minimum yang digunakan untuk menampilkan teks"
+
+#: ../midori/midori-preferences.c:473
+msgid "Encoding"
+msgstr "Penyandian"
+
+#: ../midori/midori-preferences.c:476
+msgid "The character encoding to use by default"
+msgstr "Penyandian karakter untuk digunakan sebagai standar"
+
 #. Page "Behavior"
-#: ../midori/midori-preferences.c:407
+#: ../midori/midori-preferences.c:483
 msgid "Behavior"
 msgstr "Perilaku"
 
-#: ../midori/midori-preferences.c:408
+#: ../midori/midori-preferences.c:484
 msgid "Features"
 msgstr "Fitur"
 
-#: ../midori/midori-preferences.c:411 ../extensions/statusbar-features.c:32
+#: ../midori/midori-preferences.c:487 ../extensions/statusbar-features.c:88
 msgid "Load images automatically"
-msgstr "Muat citra secara otomatis"
+msgstr "Muat gambar secara otomatis"
 
-#: ../midori/midori-preferences.c:414
+#: ../midori/midori-preferences.c:488
+msgid "Load and display images automatically"
+msgstr "Muat dan tampilkan gambar secara otomatis"
+
+#: ../midori/midori-preferences.c:491
 msgid "Shrink images automatically"
-msgstr "Kecilkan citra secara otomatis"
+msgstr "Kecilkan gambar secara otomatis"
+
+#: ../midori/midori-preferences.c:492
+msgid "Automatically shrink standalone images to fit"
+msgstr "Secara otomatis mengecilkan gambar tunggal agar muat"
 
-#: ../midori/midori-preferences.c:417
+#: ../midori/midori-preferences.c:495
 msgid "Print background images"
-msgstr "Cetak citra latar belakang"
+msgstr "Cetak gambar latar belakang"
+
+#: ../midori/midori-preferences.c:496
+msgid "Whether background images should be printed"
+msgstr "Apakah gambar latar belakang harus dicetak"
 
-#: ../midori/midori-preferences.c:420
+#: ../midori/midori-preferences.c:499
 msgid "Resizable text areas"
 msgstr "Area teks dapat diubah ukurannya"
 
-#: ../midori/midori-preferences.c:423 ../extensions/statusbar-features.c:39
+#: ../midori/midori-preferences.c:500
+msgid "Whether text areas are resizable"
+msgstr "Apakah area teks dapat diubah ukurannya"
+
+#: ../midori/midori-preferences.c:503 ../extensions/statusbar-features.c:100
 msgid "Enable scripts"
 msgstr "Aktifkan skrip"
 
-#: ../midori/midori-preferences.c:426 ../extensions/statusbar-features.c:46
-msgid "Enable plugins"
-msgstr "Aktifkan plugin"
+#: ../midori/midori-preferences.c:504
+msgid "Enable embedded scripting languages"
+msgstr "Aktifkan bahasa skrip terbenam"
+
+#: ../midori/midori-preferences.c:507 ../extensions/statusbar-features.c:112
+msgid "Enable Netscape plugins"
+msgstr "Aktifkan plugin Netscape"
+
+#: ../midori/midori-preferences.c:508
+msgid "Enable embedded Netscape plugin objects"
+msgstr "Aktifkan objek plugin Netscape terbenam"
 
-#: ../midori/midori-preferences.c:429
+#: ../midori/midori-preferences.c:511
+msgid "Enforce 96 dots per inch"
+msgstr "Paksa 96 titik per inci"
+
+#: ../midori/midori-preferences.c:512
+msgid "Enforce a video dot density of 96 DPI"
+msgstr "Paksa kerapatan titik video 96 DPI"
+
+#: ../midori/midori-preferences.c:515
 msgid "Enable developer tools"
 msgstr "Aktifkan alat pengembang"
 
+#: ../midori/midori-preferences.c:516
+msgid "Enable special extensions for developers"
+msgstr "Aktifkan ekstensi khusus untuk pengembang"
+
+#: ../midori/midori-preferences.c:523
+msgid "Spell Checking"
+msgstr "Pemeriksa Ejaan"
+
+#: ../midori/midori-preferences.c:526
+msgid "Enable Spell Checking"
+msgstr "Aktifkan Pemeriksa Ejaan"
+
+#: ../midori/midori-preferences.c:527
+msgid "Enable spell checking while typing"
+msgstr "Aktifkan pemeriksa ejaan ketika mengetik"
+
+#. i18n: The example should be adjusted to contain a good local default
+#: ../midori/midori-preferences.c:531
+msgid ""
+"A comma separated list of languages to be used for spell checking, for "
+"example \"en_GB,de_DE\""
+msgstr ""
+"Senarai dipisahkan koma dari bahasa yang akan digunakan untuk pemeriksa "
+"ejaan, misalnya \"en_GB,de_DE\""
+
 #. Page "Interface"
-#: ../midori/midori-preferences.c:437
+#: ../midori/midori-preferences.c:536
 msgid "Interface"
 msgstr "Antarmuka"
 
-#: ../midori/midori-preferences.c:438
+#: ../midori/midori-preferences.c:537
 msgid "Navigationbar"
 msgstr "Batang navigasi"
 
-#: ../midori/midori-preferences.c:453
+#: ../midori/midori-preferences.c:548
 msgid "Browsing"
 msgstr "Meramban"
 
-#: ../midori/midori-preferences.c:480 ../midori/midori-preferences.c:481
+#. Page "Applications"
+#: ../midori/midori-preferences.c:574
+msgid "Applications"
+msgstr "Aplikasi"
+
+#: ../midori/midori-preferences.c:575
+msgid "External applications"
+msgstr "Aplikasi Eksternal"
+
+#. Page "Network"
+#: ../midori/midori-preferences.c:621 ../midori/midori-preferences.c:622
 msgid "Network"
 msgstr "Jaringan"
 
-#: ../midori/midori-preferences.c:492
+#: ../midori/midori-preferences.c:649
 msgid "MB"
 msgstr "MB"
 
 #. Page "Privacy"
-#: ../midori/midori-preferences.c:498
+#: ../midori/midori-preferences.c:654
 msgid "Privacy"
 msgstr "Privasi"
 
-#: ../midori/midori-preferences.c:500
+#: ../midori/midori-preferences.c:655
 msgid "Web Cookies"
 msgstr "Kuki Web"
 
-#: ../midori/midori-preferences.c:513 ../midori/midori-preferences.c:524
+#: ../midori/midori-preferences.c:668 ../midori/midori-preferences.c:678
 msgid "days"
 msgstr "hari"
 
-#: ../midori/midori-searchaction.c:456 ../katze/katze-arrayaction.c:273
+#: ../midori/midori-searchaction.c:488 ../katze/katze-arrayaction.c:335
 msgid "Empty"
 msgstr "Kosong"
 
-#: ../midori/midori-searchaction.c:797
+#: ../midori/midori-searchaction.c:908
 msgid "Add search engine"
 msgstr "Tambah mesin pencari"
 
-#: ../midori/midori-searchaction.c:797
+#: ../midori/midori-searchaction.c:908
 msgid "Edit search engine"
 msgstr "Sunting mesin pencari"
 
-#: ../midori/midori-searchaction.c:825
+#: ../midori/midori-searchaction.c:936
 msgid "_Name:"
 msgstr "_Nama:"
 
-#: ../midori/midori-searchaction.c:869
-msgid "_Icon (name or file):"
-msgstr "_Ikon (nama atau berkas):"
+#: ../midori/midori-searchaction.c:980
+msgid "_Icon:"
+msgstr "_Ikon:"
 
-#: ../midori/midori-searchaction.c:883
+#: ../midori/midori-searchaction.c:994
 msgid "_Token:"
 msgstr "_Token:"
 
-#: ../midori/midori-searchaction.c:1060
-msgid "Manage search engines"
-msgstr "Atur mesin pencari"
+#: ../midori/midori-searchaction.c:1213
+msgid "Manage Search Engines"
+msgstr "Atur Mesin Pencari"
 
-#: ../midori/sokoke.c:63 ../midori/sokoke.c:75
+#: ../midori/midori-searchaction.c:1312
+msgid "Use as _default"
+msgstr "Gunakan sebagai stan_dar"
+
+#: ../midori/sokoke.c:162 ../midori/sokoke.c:174
 msgid "Could not run external program."
 msgstr "Tak dapat menjalankan program eksternal."
 
-#: ../midori/sokoke.c:282
-msgid "Warning: You are using a superuser account!"
-msgstr "Peringatan: Anda menggunakan akun superuser!"
+#: ../midori/sokoke.c:856
+msgid "_Bookmark"
+msgstr "B_ookmark"
 
-#: ../midori/gjs.c:514
-msgid "An unknown error occured."
-msgstr "Galat tak diketahui terjadi."
+#: ../midori/sokoke.c:858
+msgid "Add Boo_kmark"
+msgstr "Tambah P_enanda"
 
-#: ../midori/gjs.c:742 ../midori/gjs.c:832
-#, c-format
-msgid "%s has no property '%s'"
-msgstr "%s tak memiliki properti '%s'"
+#: ../midori/sokoke.c:859
+msgid "_Console"
+msgstr "_Konsol"
 
-#: ../midori/gjs.c:878
-#, c-format
-msgid "%s cannot be assigned to %s.%s"
-msgstr "%s tak dapat ditugaskan ke %s.%s"
+#: ../midori/sokoke.c:860
+msgid "_Extensions"
+msgstr "_Ekstensi"
 
-#: ../midori/gjs.c:888
-#, c-format
-msgid "%s.%s cannot be accessed"
-msgstr "%s.%s tak dapat diakses"
+#: ../midori/sokoke.c:861
+msgid "_History"
+msgstr "_Riwayat"
+
+#: ../midori/sokoke.c:862
+msgid "_Homepage"
+msgstr "_Beranda"
 
-#: ../panels/midori-addons.c:98 ../panels/midori-addons.c:144
+#: ../midori/sokoke.c:863
+msgid "_Userscripts"
+msgstr "_Skrip pengguna"
+
+#: ../midori/sokoke.c:864
+msgid "User_styles"
+msgstr "Ga_ya pengguna"
+
+#: ../midori/sokoke.c:866
+msgid "_Transfers"
+msgstr "_Transfer"
+
+#: ../midori/sokoke.c:867
+msgid "Netscape p_lugins"
+msgstr "P_lugin Netscape"
+
+#: ../panels/midori-addons.c:95 ../panels/midori-addons.c:141
 msgid "Userscripts"
 msgstr "Skrip pengguna"
 
-#: ../panels/midori-addons.c:99 ../panels/midori-addons.c:146
+#: ../panels/midori-addons.c:96 ../panels/midori-addons.c:143
 msgid "Userstyles"
 msgstr "Gaya pengguna"
 
-#: ../panels/midori-addons.c:1006 ../panels/midori-extensions.c:144
-msgid "_Enable"
-msgstr "_Aktifkan"
+#: ../panels/midori-bookmarks.c:108
+msgid "Bookmarks"
+msgstr "Penanda"
 
-#: ../panels/midori-addons.c:1015 ../panels/midori-extensions.c:153
-msgid "_Disable"
-msgstr "_Non Aktifkan"
+#: ../panels/midori-bookmarks.c:239
+msgid "Edit the selected bookmark"
+msgstr "Sunting penanda terpilih"
+
+#: ../panels/midori-bookmarks.c:247
+msgid "Delete the selected bookmark"
+msgstr "Hapus penanda terpilih"
+
+#: ../panels/midori-bookmarks.c:260
+msgid "Add a new folder"
+msgstr "Tambah folder baru"
+
+#: ../panels/midori-bookmarks.c:592
+msgid "<i>Separator</i>"
+msgstr "<i>Pemisah</i>"
 
 #: ../panels/midori-console.c:87
 msgid "Console"
 msgstr "Konsol"
 
-#: ../panels/midori-extensions.c:87
+#: ../panels/midori-extensions.c:91
 msgid "Extensions"
 msgstr "Ekstensi"
 
+#: ../panels/midori-history.c:162
+msgid "Are you sure you want to remove all history items?"
+msgstr "Anda yakin ingin menghapus semua item riwayat?"
+
+#: ../panels/midori-history.c:217
+msgid "Bookmark the selected history item"
+msgstr "Bookmark item riwayat terpilih"
+
+#: ../panels/midori-history.c:226
+msgid "Delete the selected history item"
+msgstr "Hapus item riwayat terpilih"
+
+#: ../panels/midori-history.c:234
+msgid "Clear the entire history"
+msgstr "Bersihkan seluruh riwayat"
+
+#: ../panels/midori-history.c:601
+msgid "A week ago"
+msgstr "Seminggu yang lalu"
+
+#: ../panels/midori-history.c:606
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "%d hari yang lalu"
+
+#: ../panels/midori-history.c:614
+msgid "Today"
+msgstr "Hari Ini"
+
+#: ../panels/midori-history.c:616
+msgid "Yesterday"
+msgstr "Kemarin"
+
+#: ../panels/midori-plugins.c:87 ../extensions/statusbar-features.c:108
+msgid "Netscape plugins"
+msgstr "Plugin Netscape"
+
+#: ../panels/midori-transfers.c:271
+#, c-format
+msgid "%s of %s"
+msgstr "%s dari %s"
+
+#: ../panels/midori-transfers.c:479
+msgid "Open Destination _Folder"
+msgstr "Buka _Folder Tujuan"
+
+#: ../panels/midori-transfers.c:482
+msgid "Copy Link Loc_ation"
+msgstr "Salin Tautan Lok_asi"
+
+#: ../katze/katze-http-auth.c:97
+msgid "Authentication Required"
+msgstr "Otentikasi Diperlukan"
+
+#: ../katze/katze-http-auth.c:113
+msgid ""
+"A username and a password are required\n"
+"to open this location:"
+msgstr ""
+"Sebuah nama pengguna dan sebuah sandi diperlukan\n"
+"untuk membuka lokasi ini:"
+
+#: ../katze/katze-http-auth.c:127
+msgid "Username"
+msgstr "Nama Pengguna"
+
+#: ../katze/katze-http-auth.c:138
+msgid "Password"
+msgstr "Sandi"
+
 #: ../katze/katze-throbber.c:828
 #, c-format
 msgid "Named icon '%s' couldn't be loaded"
@@ -1322,46 +1898,386 @@ msgstr "Stok ikon '%s' tak dapat dimuat"
 msgid "Animation frames are broken"
 msgstr "Bingkai animasi rusak"
 
-#: ../katze/katze-utils.c:154 ../katze/katze-utils.c:352
+#: ../katze/katze-utils.c:200 ../katze/katze-utils.c:407
 #, c-format
 msgid "Property '%s' is invalid for %s"
 msgstr "Properti '%s' tidak sah untuk %s"
 
-#: ../katze/katze-utils.c:178 ../katze/katze-utils.c:217
+#: ../katze/katze-utils.c:235 ../katze/katze-utils.c:264
 msgid "Choose file"
 msgstr "Pilih berkas"
 
-#: ../katze/katze-utils.c:198
+#: ../katze/katze-utils.c:250
 msgid "Choose folder"
 msgstr "Pilih folder"
 
+#: ../extensions/adblock.c:167
+msgid "Configure Advertisement filters"
+msgstr "Atur filter Iklan"
+
+#: ../extensions/adblock.c:304
+msgid "Configure _Advertisement filters..."
+msgstr "Atur filter _Iklan..."
+
+#: ../extensions/adblock.c:562
+msgid "Advertisement blocker"
+msgstr "Pemblokir Iklan"
+
+#: ../extensions/adblock.c:563
+msgid "Block advertisements according to a filter list"
+msgstr "Blok iklan berdasarkan sebuah senarai filter"
+
+#: ../extensions/colorful-tabs.c:115
+msgid "Tint tabs distinctly"
+msgstr "Warnai tab dengan jelas"
+
+#: ../extensions/colorful-tabs.c:151
+msgid "Colorful Tabs"
+msgstr "Tab Penuh Warna"
+
+#: ../extensions/colorful-tabs.c:152
+msgid "Tint each tab distinctly"
+msgstr "Warnai tiap tab dengan jelas"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:79
+#: ../extensions/cookie-manager/main.c:56
+msgid "Cookie Manager"
+msgstr "Manajer Kuki"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:111
+msgid ""
+"Deletes all shown cookies. If a filter is set, only those cookies are "
+"deleted which match the filter."
+msgstr ""
+"Hapus semua kuki yang ditampilkan. Jika sebuah filter diatur, hanya kuki "
+"yang cocok dengan filter yang dihapus."
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:126
+msgid "Expand All"
+msgstr "Perluas Semua"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:133
+msgid "Collapse All"
+msgstr "Perkecil Semua"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:460
+msgid "Do you really want to delete all cookies?"
+msgstr "Anda yakin ingin menghapus semua kuki?"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:462
+msgid "Question"
+msgstr "Pertanyaan"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:471
+msgid "Only cookies which match the filter will be deleted."
+msgstr "Hanya kuki yang cocok dengan filter yang akan dihapus."
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:539
+msgid "At the end of the session"
+msgstr "Di akhir sesi"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:542
+#, c-format
+msgid ""
+"<b>Host</b>: %s\n"
+"<b>Name</b>: %s\n"
+"<b>Value</b>: %s\n"
+"<b>Path</b>: %s\n"
+"<b>Secure</b>: %s\n"
+"<b>Expires</b>: %s"
+msgstr ""
+"<b>Host</b>: %s\n"
+"<b>Nama</b>: %s\n"
+"<b>Nilai</b>: %s\n"
+"<b>Alamat</b>: %s\n"
+"<b>Keamanan</b>: %s\n"
+"<b>Kadaluwarsa</b>: %s"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:548
+msgid "Yes"
+msgstr "Ya"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:548
+msgid "No"
+msgstr "Tidak"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:811
+msgid "Name"
+msgstr "Nama"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:862
+msgid "_Expand All"
+msgstr "_Perluas Semua"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:870
+msgid "_Collapse All"
+msgstr "P_erkecil Semua"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:923
+msgid "Filter:"
+msgstr "Filter:"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:928
+msgid ""
+"Enter a filter string to show only cookies whose name or domain field match "
+"the entered filter"
+msgstr ""
+"Masukkan sebuah tali filter untuk menampilkan hanya kuki yang nama atau "
+"daerah ranahnya cocok dengan filter yang dimasukkan"
+
+#: ../extensions/cookie-manager/main.c:40
+msgid "_Cookie Manager"
+msgstr "Manajer _Kuki"
+
+#: ../extensions/cookie-manager/main.c:57
+msgid "List, view and delete cookies"
+msgstr "Senarai, tampilan dan hapus kuki"
+
+#: ../extensions/feed-panel/feed-atom.c:242
+msgid "Failed to find required Atom \"entry\" elements in XML data."
+msgstr "Gagal untuk mencari elemen Atom \"lema\" yang diperlukan di data XML."
+
+#: ../extensions/feed-panel/feed-atom.c:348
+msgid "Failed to find required Atom \"feed\" elements in XML data."
+msgstr "Gagal untuk mencari elemen Atom \"umpan\" yang diperlukan di data XML."
+
+#. i18n: The local date a feed was last updated
+#: ../extensions/feed-panel/feed-panel.c:399
+#, c-format
+msgctxt "Feed"
+msgid "Last updated: %s."
+msgstr "Terakhir dimutakhirkan: %s."
+
+#: ../extensions/feed-panel/feed-panel.c:664
+msgid "Feeds"
+msgstr "Umpan"
+
+#: ../extensions/feed-panel/feed-panel.c:717
+msgid "Add new feed"
+msgstr "Tambah umpan baru"
+
+#: ../extensions/feed-panel/feed-panel.c:724
+msgid "Delete feed"
+msgstr "Hapus umpan"
+
+#: ../extensions/feed-panel/feed-panel.c:807
+msgid "_Feeds"
+msgstr "_Umpan"
+
+#: ../extensions/feed-panel/feed-parse.c:185
+#, c-format
+msgid "Failed to find root element in feed XML data."
+msgstr "Gagal mencari elemen root di umpan data XML."
+
+#: ../extensions/feed-panel/feed-parse.c:225
+#, c-format
+msgid "Unsupported feed format."
+msgstr "Format umpan tak didukung."
+
+#: ../extensions/feed-panel/feed-parse.c:255
+#, c-format
+msgid "Failed to parse XML feed: %s"
+msgstr "Gagal menguraikan umpan XML: %s"
+
+#: ../extensions/feed-panel/feed-rss.c:46
+msgid "Failed to find \"channel\" element in RSS XML data."
+msgstr "Gagal mencari elemen \"kanal\" di data XML RSS."
+
+#: ../extensions/feed-panel/feed-rss.c:51
+msgid "Unsupported RSS version found."
+msgstr "Versi RSS tak didukung telah ditemukan."
+
+#: ../extensions/feed-panel/feed-rss.c:148
+msgid "Failed to find required RSS \"item\" elements in XML data."
+msgstr "Gagal mencari elemen \"item\" RSS yang diperlukan di data XML."
+
+#: ../extensions/feed-panel/feed-rss.c:248
+msgid "Failed to find required RSS \"channel\" elements in XML data."
+msgstr "Gagal mencari elemen \"kanal\" RSS yang diperlukan di data XML."
+
+#: ../extensions/feed-panel/main.c:114
+#, c-format
+msgid "Feed '%s' already exists"
+msgstr "Umpan '%s' telah ada"
+
+#: ../extensions/feed-panel/main.c:191
+#, c-format
+msgid "Error loading feed '%s'"
+msgstr "Gagal memuat umpan '%s'"
+
+#: ../extensions/feed-panel/main.c:331
+msgid "New feed"
+msgstr "Umpan baru"
+
+#: ../extensions/feed-panel/main.c:489
+msgid "Feed Panel"
+msgstr "Panel Umpan"
+
+#: ../extensions/feed-panel/main.c:490
+msgid "Read Atom/ RSS feeds"
+msgstr "Baca umpan Atom/ RSS"
+
+#: ../extensions/mouse-gestures/main.c:236
+msgid "Mouse Gestures"
+msgstr "Gerak Tetikus"
+
+#: ../extensions/mouse-gestures/main.c:237
+msgid "Control Midori by moving the mouse"
+msgstr "Kendalikan Midori dengan menggerakkan tetikus"
+
 #. i18n: A panel showing a user specified web page
-#: ../extensions/page-holder.c:109 ../extensions/page-holder.c:144
+#: ../extensions/page-holder.c:129 ../extensions/page-holder.c:177
 msgid "Pageholder"
 msgstr "Pageholder"
 
-#: ../extensions/page-holder.c:128
+#: ../extensions/page-holder.c:161
 msgid "_Pageholder"
 msgstr "_Pageholder"
 
-#: ../extensions/statusbar-features.c:30
+#: ../extensions/shortcuts.c:172
+msgid "Customize Keyboard shortcuts"
+msgstr "Sesuaikan jalan pintas Papan Ketik"
+
+#: ../extensions/shortcuts.c:264
+msgid "Customize Sh_ortcuts..."
+msgstr "Sesuaikan J_alan Pintas..."
+
+#: ../extensions/shortcuts.c:303
+msgid "Shortcuts"
+msgstr "Jalan Pintas"
+
+#: ../extensions/shortcuts.c:304
+msgid "View and edit keyboard shortcuts"
+msgstr "Tampilkan dan sunting jalan pintas papan ketik"
+
+#: ../extensions/statusbar-features.c:84
 msgid "Images"
-msgstr ""
+msgstr "Gambar"
 
-#: ../extensions/statusbar-features.c:37
-#, fuzzy
+#: ../extensions/statusbar-features.c:96
 msgid "Scripts"
-msgstr "Skrip pengguna"
+msgstr "Skrip"
+
+#: ../extensions/statusbar-features.c:149
+msgid "Statusbar Features"
+msgstr "Fitur Batang Status"
+
+#: ../extensions/statusbar-features.c:150
+msgid "Easily toggle features on web pages on and off"
+msgstr "Matikan atau hidupkan dengan mudah fitur-fitur di halaman web"
 
-#: ../extensions/statusbar-features.c:44
-msgid "Plugins"
+#: ../extensions/tab-panel.c:383 ../extensions/tab-panel.c:443
+msgid "Tab Panel"
+msgstr "Panel Tab"
+
+#: ../extensions/tab-panel.c:427
+msgid "T_ab Panel"
+msgstr "Panel T_ab"
+
+#: ../extensions/tab-panel.c:444
+msgid "Show tabs in a vertical panel"
+msgstr "Tampilkan tab di sebuah panel vertikal"
+
+#: ../extensions/toolbar-editor.c:391
+msgid "Customize Toolbar"
+msgstr "Sesuaikan Batang Alat"
+
+#: ../extensions/toolbar-editor.c:407
+msgid ""
+"Select items to be displayed on the toolbar. Items can be reodered by drag "
+"and drop."
 msgstr ""
+"Pilih item yang akan ditampilkan di batang alat. Item dapat diubah urutannya "
+"dengan seret dan taruh."
+
+#: ../extensions/toolbar-editor.c:423
+msgid "Available Items"
+msgstr "Item Tersedia"
+
+#: ../extensions/toolbar-editor.c:444
+msgid "Displayed Items"
+msgstr "Item Ditampilkan"
+
+#: ../extensions/toolbar-editor.c:579
+msgid "Customize _Toolbar..."
+msgstr "Sesuaikan _Batang Alat..."
+
+#: ../extensions/toolbar-editor.c:611
+msgid "Toolbar Editor"
+msgstr "Penyunting Batang Alat"
+
+#: ../extensions/toolbar-editor.c:612
+msgid "Easily edit the toolbar layout"
+msgstr "Sunting tata letak batang alat dengan mudah"
+
+#~ msgid "_Closed Tabs and Windows"
+#~ msgstr "Tutup Tab dan _Jendela"
+
+#~ msgid "URIs"
+#~ msgstr "URI"
+
+#~ msgid "[URIs]"
+#~ msgstr "[URI]"
+
+#~ msgid "_URL:"
+#~ msgstr "_URL:"
+
+#~ msgid "Root"
+#~ msgstr "Root"
+
+#~ msgid "_Quick Find"
+#~ msgstr "_Cari Cepat"
+
+#~ msgid "Quickly jump to a word or phrase"
+#~ msgstr "Lompat segera ke kata atau frasa"
+
+#~ msgid "Last open pages"
+#~ msgstr "Halaman terakhir dibuka"
+
+#~ msgid "Both"
+#~ msgstr "Keduanya"
+
+#~ msgid "Both horizontal"
+#~ msgstr "Keduanya horizontal"
+
+#~ msgid "Load on Startup"
+#~ msgstr "Dimuat Saat Hidupkan"
+
+#~ msgid "Download Folder"
+#~ msgstr "Folder Unduh"
+
+#~ msgid "HTTP Proxy"
+#~ msgstr "Proxy HTTP"
+
+#~ msgid "Open URL in New _Tab"
+#~ msgstr "Buka URL di _Tab Baru"
+
+#~ msgid "Source"
+#~ msgstr "Sumber"
+
+#~ msgid "_Icon (name or file):"
+#~ msgstr "_Ikon (nama atau berkas):"
+
+#~ msgid "Manage search engines"
+#~ msgstr "Atur mesin pencari"
+
+#~ msgid "Warning: You are using a superuser account!"
+#~ msgstr "Peringatan: Anda menggunakan akun superuser!"
+
+#~ msgid "%s has no property '%s'"
+#~ msgstr "%s tak memiliki properti '%s'"
+
+#~ msgid "%s cannot be assigned to %s.%s"
+#~ msgstr "%s tak dapat ditugaskan ke %s.%s"
+
+#~ msgid "%s.%s cannot be accessed"
+#~ msgstr "%s.%s tak dapat diakses"
 
-#~ msgid "Open in Page_holder..."
-#~ msgstr "Buka di Page_holder..."
+#~ msgid "_Enable"
+#~ msgstr "_Aktifkan"
 
-#~ msgid "Open the current page in the pageholder"
-#~ msgstr "Buka halaman saat ini di pageholder"
+#~ msgid "_Disable"
+#~ msgstr "_Non Aktifkan"
 
 #~ msgid "Last pageholder URI"
 #~ msgstr "URI pageholder terakhir"
index 3ffc3c1f74da953535fa8b1823d5c6e56d68d26b..d7e10e110599cf974414a991863449e60e4b002f 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Midori 0.1.9\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-09 18:16+0900\n"
-"PO-Revision-Date: 2009-08-09 18:18+0900\n"
+"POT-Creation-Date: 2009-10-12 22:45+0900\n"
+"PO-Revision-Date: 2009-10-12 22:57+0900\n"
 "Last-Translator: Masato Hashimoto <cabezon.hashimoto@gmail.com>\n"
 "Language-Team: Japanese <xfce-users-jp@ml.fdiary.net>\n"
 "MIME-Version: 1.0\n"
@@ -21,11 +21,11 @@ msgid "Lightweight web browser"
 msgstr "軽量級ウェブブラウザ"
 
 #: ../data/midori.desktop.in.h:2
-#: ../midori/main.c:1343
-#: ../midori/main.c:1517
-#: ../midori/main.c:1525
-#: ../midori/main.c:1536
-#: ../midori/midori-websettings.c:287
+#: ../midori/main.c:1469
+#: ../midori/main.c:1643
+#: ../midori/main.c:1651
+#: ../midori/main.c:1662
+#: ../midori/midori-websettings.c:289
 msgid "Midori"
 msgstr "Midori"
 
@@ -33,325 +33,332 @@ msgstr "Midori"
 msgid "Web Browser"
 msgstr "ウェブブラウザ"
 
-#: ../midori/main.c:96
+#: ../midori/main.c:102
 #, c-format
 msgid "The configuration couldn't be loaded: %s\n"
 msgstr "設定を読み込めませんでした: %s\n"
 
-#: ../midori/main.c:151
+#: ../midori/main.c:157
 #, c-format
 msgid "Value '%s' is invalid for %s"
 msgstr "'%s' は %s の値として無効です"
 
-#: ../midori/main.c:158
-#: ../midori/main.c:238
+#: ../midori/main.c:164
+#: ../midori/main.c:245
 #, c-format
 msgid "Invalid configuration value '%s'"
 msgstr "無効な設定値 '%s'"
 
-#: ../midori/main.c:350
+#: ../midori/main.c:369
 #, c-format
 msgid "Failed to open database: %s\n"
 msgstr "データベースのオープンに失敗しました: %s\n"
 
-#: ../midori/main.c:382
+#: ../midori/main.c:401
 #, c-format
 msgid "Failed to execute database statement: %s\n"
 msgstr "データベース文の実行に失敗しました: %s\n"
 
-#: ../midori/main.c:436
+#: ../midori/main.c:455
 #, c-format
 msgid "Failed to remove history item: %s\n"
 msgstr "履歴アイテムの削除に失敗しました: %s\n"
 
-#: ../midori/main.c:460
+#: ../midori/main.c:479
 #, c-format
 msgid "Failed to clear history: %s\n"
 msgstr "履歴のクリアに失敗しました: %s\n"
 
-#: ../midori/main.c:483
-#: ../midori/main.c:517
-#: ../midori/main.c:533
+#: ../midori/main.c:502
+#: ../midori/main.c:536
+#: ../midori/main.c:552
 #, c-format
 msgid "Failed to add history item: %s\n"
 msgstr "履歴アイテムの追加に失敗しました: %s\n"
 
 #. i18n: Couldn't remove items that are older than n days
-#: ../midori/main.c:712
+#: ../midori/main.c:731
 #, c-format
 msgid "Failed to remove old history items: %s\n"
 msgstr "古い履歴アイテムの削除に失敗しました: %s\n"
 
-#: ../midori/main.c:741
+#: ../midori/main.c:760
 #, c-format
 msgid "The configuration couldn't be saved. %s"
 msgstr "設定を保存できませんでした。%s"
 
-#: ../midori/main.c:779
+#: ../midori/main.c:798
 #, c-format
 msgid "The search engines couldn't be saved. %s"
 msgstr "検索エンジンを保存できませんでした。%s"
 
-#: ../midori/main.c:798
-#: ../midori/main.c:826
-#: ../midori/main.c:855
+#: ../midori/main.c:817
+#: ../midori/main.c:845
+#: ../midori/main.c:874
 #, c-format
 msgid "The bookmarks couldn't be saved. %s"
 msgstr "ブックマークを保存できませんでした。%s"
 
 #. i18n: Trash, or wastebin, containing closed tabs
-#: ../midori/main.c:878
-#: ../midori/main.c:901
+#: ../midori/main.c:897
+#: ../midori/main.c:920
 #, c-format
 msgid "The trash couldn't be saved. %s"
 msgstr "ゴミ箱を保存できませんでした。%s"
 
-#: ../midori/main.c:974
+#: ../midori/main.c:988
+#: ../midori/main.c:1160
 #, c-format
 msgid "The session couldn't be saved. %s"
 msgstr "セッションは保存できませんでした。%s"
 
-#: ../midori/main.c:1101
+#: ../midori/main.c:1189
 msgid "Midori seems to have crashed the last time it was opened. If this happened repeatedly, try one of the following options to solve the problem."
 msgstr "Midori は最後に開いたときにクラッシュしたようです。もしこれが繰り返し発生するようであれば、問題解決のために以下のオプションのいずれかを試してみてください。"
 
-#: ../midori/main.c:1116
+#: ../midori/main.c:1204
 msgid "Modify _preferences"
 msgstr "設定を変更する(_P)"
 
-#: ../midori/main.c:1120
+#: ../midori/main.c:1208
 msgid "Reset the last _session"
 msgstr "最後のセッションをリセットする(_S)"
 
-#: ../midori/main.c:1125
+#: ../midori/main.c:1213
 msgid "Disable all _extensions"
 msgstr "すべてのエクステンションを無効にする(_E)"
 
-#: ../midori/main.c:1343
+#: ../midori/main.c:1369
+#: ../midori/main.c:1870
+#, c-format
+msgid "The session couldn't be loaded: %s\n"
+msgstr "セッションを読み込めませんでした: %s\n"
+
+#: ../midori/main.c:1469
 msgid "No filename specified"
 msgstr "ファイル名が指定されていません"
 
-#: ../midori/main.c:1366
+#: ../midori/main.c:1492
 msgid "An unknown error occured."
 msgstr "未知のエラーが発生しました。"
 
-#: ../midori/main.c:1398
+#: ../midori/main.c:1524
 #, c-format
 msgid "Snapshot saved to: %s\n"
 msgstr "スナップショットを取得しました: %s\n"
 
 # CLI --help
-#: ../midori/main.c:1447
+#: ../midori/main.c:1573
 msgid "Run ADDRESS as a web application"
 msgstr "ADDRESS をウェブアプリケーションとして実行する"
 
-#: ../midori/main.c:1447
+#: ../midori/main.c:1573
 msgid "ADDRESS"
 msgstr "ADDRESS"
 
 # CLI --help
-#: ../midori/main.c:1449
+#: ../midori/main.c:1575
 msgid "Use FOLDER as configuration folder"
 msgstr "設定フォルダとして FOLDER を使用する"
 
-#: ../midori/main.c:1449
+#: ../midori/main.c:1575
 msgid "FOLDER"
 msgstr "FOLDER"
 
 # CLI --help
-#: ../midori/main.c:1451
+#: ../midori/main.c:1577
 msgid "Run the specified filename as javascript"
 msgstr "指定されたファイル名を javascript として実行する"
 
 # CLI --help
-#: ../midori/main.c:1454
+#: ../midori/main.c:1580
 msgid "Take a snapshot of the specified URI"
 msgstr "指定された URI のスナップショットを取得する"
 
 # CLI --help
-#: ../midori/main.c:1457
+#: ../midori/main.c:1583
 msgid "Execute the specified command"
 msgstr "指定されたコマンドを実行する"
 
 # CLI --help
-#: ../midori/main.c:1459
+#: ../midori/main.c:1585
 msgid "Display program version"
 msgstr "プログラムのバージョンを表示する"
 
-#: ../midori/main.c:1461
+#: ../midori/main.c:1587
 msgid "Addresses"
 msgstr "アドレス"
 
-#: ../midori/main.c:1514
+#: ../midori/main.c:1640
 msgid "[Addresses]"
 msgstr "[アドレス]"
 
-#: ../midori/main.c:1537
+#: ../midori/main.c:1663
 msgid "Please report comments, suggestions and bugs to:"
 msgstr "コメント、ご提案、またはバグの報告はこちらまでお願いします:"
 
-#: ../midori/main.c:1539
+#: ../midori/main.c:1665
 msgid "Check for new versions at:"
 msgstr "新しいバージョンのチェックはこちら:"
 
-#: ../midori/main.c:1619
+#: ../midori/main.c:1745
 msgid "The specified configuration folder is invalid."
 msgstr "指定された設定フォルダが正しくありません。"
 
-#: ../midori/main.c:1655
+#: ../midori/main.c:1793
 msgid "An instance of Midori is already running but not responding.\n"
 msgstr "Midori のインスタンスはすでに実行中ですが応答がありません。\n"
 
-#: ../midori/main.c:1715
+#: ../midori/main.c:1837
 #, c-format
 msgid "The search engines couldn't be loaded. %s\n"
 msgstr "検索エンジンを読み込めませんでした。%s\n"
 
-#: ../midori/main.c:1727
+#: ../midori/main.c:1855
 #, c-format
 msgid "The bookmarks couldn't be loaded: %s\n"
 msgstr "ブックマークを読み込めませんでした: %s\n"
 
-#: ../midori/main.c:1742
-#, c-format
-msgid "The session couldn't be loaded: %s\n"
-msgstr "セッションを読み込めませんでした: %s\n"
-
-#: ../midori/main.c:1755
+#: ../midori/main.c:1883
 #, c-format
 msgid "The trash couldn't be loaded: %s\n"
 msgstr "ゴミ箱を読み込めませんでした: %s\n"
 
-#: ../midori/main.c:1768
+#: ../midori/main.c:1896
 #, c-format
 msgid "The history couldn't be loaded: %s\n"
 msgstr "履歴を読み込めませんでした: %s\n"
 
-#: ../midori/main.c:1780
+#: ../midori/main.c:1908
 msgid "The following errors occured:"
 msgstr "次のエラーが発生しました:"
 
-#: ../midori/main.c:1796
+#: ../midori/main.c:1924
 msgid "_Ignore"
 msgstr "無視(_I)"
 
-#: ../midori/midori-array.c:250
+#: ../midori/midori-array.c:251
 msgid "File not found."
 msgstr "ファイルが見つかりません。"
 
-#: ../midori/midori-array.c:258
-#: ../midori/midori-array.c:267
+#: ../midori/midori-array.c:260
+#: ../midori/midori-array.c:270
 msgid "Malformed document."
 msgstr "不正な形式のドキュメントです。"
 
-#: ../midori/midori-array.c:429
-#: ../midori/sokoke.c:694
+#: ../midori/midori-array.c:437
+#: ../midori/sokoke.c:798
 #, c-format
 msgid "Writing failed."
 msgstr "書き込みに失敗しました。"
 
-#: ../midori/midori-browser.c:307
-#: ../midori/midori-browser.c:4275
-#: ../midori/midori-browser.c:4281
+#: ../midori/midori-browser.c:310
+#: ../midori/midori-browser.c:4530
+#: ../midori/midori-browser.c:4536
 msgid "Reload the current page"
 msgstr "現在のページを再読み込みします"
 
-#: ../midori/midori-browser.c:318
-#: ../midori/midori-browser.c:4278
+#: ../midori/midori-browser.c:321
+#: ../midori/midori-browser.c:4533
 msgid "Stop loading the current page"
 msgstr "現在のページの読み込みを中止します"
 
-#: ../midori/midori-browser.c:409
+#: ../midori/midori-browser.c:416
 #, c-format
 msgid "%d%% loaded"
 msgstr "%d%% ロードしました"
 
-#: ../midori/midori-browser.c:434
+#: ../midori/midori-browser.c:441
 #, c-format
 msgid "Unexpected action '%s'."
 msgstr "'%s' は想定外のアクションです。"
 
-#: ../midori/midori-browser.c:616
+#: ../midori/midori-browser.c:638
 msgid "New folder"
 msgstr "新しいフォルダ"
 
-#: ../midori/midori-browser.c:616
+#: ../midori/midori-browser.c:638
 msgid "Edit folder"
 msgstr "フォルダの編集"
 
-#: ../midori/midori-browser.c:618
+#: ../midori/midori-browser.c:640
 msgid "New bookmark"
 msgstr "新しいブックマーク"
 
-#: ../midori/midori-browser.c:618
+#: ../midori/midori-browser.c:640
 msgid "Edit bookmark"
 msgstr "ブックマークの編集"
 
-#: ../midori/midori-browser.c:648
+#: ../midori/midori-browser.c:670
 msgid "_Title:"
 msgstr "タイトル(_T):"
 
-#: ../midori/midori-browser.c:661
+#: ../midori/midori-browser.c:683
 #: ../midori/midori-searchaction.c:952
 msgid "_Description:"
 msgstr "説明(_D):"
 
-#: ../midori/midori-browser.c:680
+#: ../midori/midori-browser.c:702
 #: ../midori/midori-searchaction.c:966
-#: ../extensions/feed-panel/main.c:343
+#: ../extensions/feed-panel/main.c:368
 msgid "_Address:"
 msgstr "アドレス(_A):"
 
-#: ../midori/midori-browser.c:699
+#: ../midori/midori-browser.c:725
 msgid "_Folder:"
 msgstr "フォルダ(_F):"
 
-#: ../midori/midori-browser.c:704
-#: ../midori/midori-browser.c:745
+#: ../midori/midori-browser.c:730
+#: ../midori/midori-browser.c:771
 msgid "Toplevel folder"
 msgstr "トップレベルフォルダ"
 
-#: ../midori/midori-browser.c:821
+#: ../midori/midori-browser.c:849
 msgid "Save file as"
 msgstr "名前を付けて保存"
 
-#: ../midori/midori-browser.c:1181
-#: ../panels/midori-transfers.c:271
+#: ../midori/midori-browser.c:1226
+#: ../panels/midori-transfers.c:272
 #, c-format
 msgid "%s of %s"
 msgstr "%s / %s"
 
-#: ../midori/midori-browser.c:1218
+#: ../midori/midori-browser.c:1263
 #, c-format
 msgid "The file '<b>%s</b>' has been downloaded."
 msgstr "ファイル '<b>%s</b>' をダウンロードしました。"
 
-#: ../midori/midori-browser.c:1222
+#: ../midori/midori-browser.c:1267
 msgid "Transfer completed"
 msgstr "転送完了"
 
-#: ../midori/midori-browser.c:1363
+#: ../midori/midori-browser.c:1408
 msgid "Save file"
 msgstr "ファイルの保存"
 
-#: ../midori/midori-browser.c:2030
+#: ../midori/midori-browser.c:2069
 msgid "Open file"
 msgstr "ファイルを開く"
 
-#: ../midori/midori-browser.c:3476
+#: ../midori/midori-browser.c:3419
+#: ../extensions/feed-panel/main.c:356
+msgid "New feed"
+msgstr "新しいフィード"
+
+#: ../midori/midori-browser.c:3674
 #: ../panels/midori-bookmarks.c:781
 #: ../panels/midori-history.c:812
 msgid "Open all in _Tabs"
 msgstr "タブですべて開く(_T)"
 
-#: ../midori/midori-browser.c:3483
+#: ../midori/midori-browser.c:3681
 #: ../panels/midori-bookmarks.c:787
 #: ../panels/midori-history.c:818
 #: ../extensions/feed-panel/feed-panel.c:542
 msgid "Open in New _Tab"
 msgstr "新しいタブで開く(_T)"
 
-#: ../midori/midori-browser.c:3486
+#: ../midori/midori-browser.c:3684
 #: ../panels/midori-bookmarks.c:789
 #: ../panels/midori-history.c:820
 #: ../extensions/feed-panel/feed-panel.c:544
@@ -359,1517 +366,1596 @@ msgid "Open in New _Window"
 msgstr "新しいウィンドウで開く(_W)"
 
 # Dialog title
-#: ../midori/midori-browser.c:3796
+#: ../midori/midori-browser.c:3994
 msgid "Clear Private Data"
 msgstr "プライベートデータのクリア"
 
 # Button label
-#: ../midori/midori-browser.c:3800
+#: ../midori/midori-browser.c:3998
 msgid "_Clear private data"
 msgstr "プライベートデータのクリア(_C)"
 
-#: ../midori/midori-browser.c:3813
+#: ../midori/midori-browser.c:4011
 msgid "Clear the following data:"
 msgstr "以下のデータをクリアします:"
 
-#: ../midori/midori-browser.c:3823
-#: ../midori/midori-preferences.c:671
+#: ../midori/midori-browser.c:4021
+#: ../midori/midori-preferences.c:675
 #: ../panels/midori-history.c:108
 msgid "History"
 msgstr "履歴"
 
-#: ../midori/midori-browser.c:3828
+#: ../midori/midori-browser.c:4026
 msgid "Cookies"
 msgstr "Cookie"
 
-#: ../midori/midori-browser.c:3833
+#: ../midori/midori-browser.c:4031
 msgid "'Flash' Cookies"
 msgstr "'Flash' Cookie"
 
-#: ../midori/midori-browser.c:3838
+#: ../midori/midori-browser.c:4036
 msgid "Website icons"
 msgstr "ウェブサイトアイコン"
 
-#: ../midori/midori-browser.c:3843
-#: ../midori/sokoke.c:868
+#: ../midori/midori-browser.c:4041
+#: ../midori/sokoke.c:971
 msgid "_Closed Tabs"
 msgstr "閉じたタブ(_C)"
 
-#: ../midori/midori-browser.c:3851
+#: ../midori/midori-browser.c:4049
 msgid "Clear private data when _quitting Midori"
 msgstr "Midori 終了時にプライベートデータをクリアする(_Q)"
 
-#: ../midori/midori-browser.c:3935
+#: ../midori/midori-browser.c:4145
 msgid "A lightweight web browser."
 msgstr "軽快なウェブブラウザ"
 
-#: ../midori/midori-browser.c:3943
+#: ../midori/midori-browser.c:4161
 msgid "translator-credits"
 msgstr "Masato Hashimoto <hashimo@xfce.org>"
 
-#: ../midori/midori-browser.c:4209
+#: ../midori/midori-browser.c:4456
 msgid "_File"
 msgstr "ファイル(_F)"
 
-#: ../midori/midori-browser.c:4211
-#: ../midori/sokoke.c:869
+#: ../midori/midori-browser.c:4458
+#: ../midori/sokoke.c:972
 msgid "New _Window"
 msgstr "新しいウィンドウ(_W)"
 
 # tooltip
-#: ../midori/midori-browser.c:4212
+#: ../midori/midori-browser.c:4459
 msgid "Open a new window"
 msgstr "新しいウィンドウを開きます"
 
 # tooltip
-#: ../midori/midori-browser.c:4215
+#: ../midori/midori-browser.c:4462
 msgid "Open a new tab"
 msgstr "新しいタブを開きます"
 
 # tooltip
-#: ../midori/midori-browser.c:4218
+#: ../midori/midori-browser.c:4465
 msgid "Open a file"
 msgstr "ファイルを開きます"
 
 # tooltip
-#: ../midori/midori-browser.c:4221
+#: ../midori/midori-browser.c:4468
 msgid "Save to a file"
 msgstr "ファイルへ保存します"
 
-#: ../midori/midori-browser.c:4223
+#: ../midori/midori-browser.c:4470
 msgid "Add to Speed _dial"
 msgstr "スピードダイアルに追加(_D)"
 
 # tooltip
-#: ../midori/midori-browser.c:4224
+#: ../midori/midori-browser.c:4471
 msgid "Add shortcut to speed dial"
 msgstr "ショートカットをスピードダイアルに追加します"
 
-#: ../midori/midori-browser.c:4226
+#: ../midori/midori-browser.c:4473
 msgid "_Close Tab"
 msgstr "タブを閉じる(_C)"
 
 # tooltip
-#: ../midori/midori-browser.c:4227
+#: ../midori/midori-browser.c:4474
 msgid "Close the current tab"
 msgstr "現在のタブを閉じます"
 
-#: ../midori/midori-browser.c:4229
+#: ../midori/midori-browser.c:4476
 msgid "C_lose Window"
 msgstr "ウィンドウを閉じる(_L)"
 
 # tooltip
-#: ../midori/midori-browser.c:4230
+#: ../midori/midori-browser.c:4477
 msgid "Close this window"
 msgstr "このウィンドウを閉じます"
 
 # tooltip
-#: ../midori/midori-browser.c:4233
+#: ../midori/midori-browser.c:4480
 msgid "Print the current page"
 msgstr "現在のページを印刷します"
 
 # tooltip
-#: ../midori/midori-browser.c:4236
+#: ../midori/midori-browser.c:4483
 msgid "Quit the application"
 msgstr "このアプリケーションを終了します"
 
-#: ../midori/midori-browser.c:4238
+#: ../midori/midori-browser.c:4485
 msgid "_Edit"
 msgstr "編集(_E)"
 
+#: ../midori/midori-browser.c:4489
+msgid "Undo the last modification"
+msgstr "最後の修正を元に戻す"
+
+#: ../midori/midori-browser.c:4492
+msgid "Redo the last modification"
+msgstr "最後の修正をやり直す"
+
 # tooltip
-#: ../midori/midori-browser.c:4241
+#: ../midori/midori-browser.c:4496
 msgid "Cut the selected text"
 msgstr "選択した文字を切り取ります"
 
 # tooltip
-#: ../midori/midori-browser.c:4244
-#: ../midori/midori-browser.c:4247
+#: ../midori/midori-browser.c:4499
+#: ../midori/midori-browser.c:4502
 msgid "Copy the selected text"
 msgstr "選択した文字をコピーします"
 
 # tooltip
-#: ../midori/midori-browser.c:4250
+#: ../midori/midori-browser.c:4505
 msgid "Paste text from the clipboard"
 msgstr "クリップボードから文字を貼り付けます"
 
 # tooltip
-#: ../midori/midori-browser.c:4253
+#: ../midori/midori-browser.c:4508
 msgid "Delete the selected text"
 msgstr "選択した文字を削除します"
 
 # tooltip
-#: ../midori/midori-browser.c:4256
+#: ../midori/midori-browser.c:4511
 msgid "Select all text"
 msgstr "すべての文字を選択します"
 
 # tooltip
-#: ../midori/midori-browser.c:4259
+#: ../midori/midori-browser.c:4514
 msgid "Find a word or phrase in the page"
 msgstr "ページ内の単語やフレーズを検索します"
 
-#: ../midori/midori-browser.c:4261
+#: ../midori/midori-browser.c:4516
 msgid "Find _Next"
 msgstr "次を検索(_N)"
 
 # tooltip
-#: ../midori/midori-browser.c:4262
+#: ../midori/midori-browser.c:4517
 msgid "Find the next occurrence of a word or phrase"
 msgstr "指定文字列に一致する次の候補を検索します"
 
-#: ../midori/midori-browser.c:4264
+#: ../midori/midori-browser.c:4519
 msgid "Find _Previous"
 msgstr "前を検索(_P)"
 
 # tooltip
-#: ../midori/midori-browser.c:4265
+#: ../midori/midori-browser.c:4520
 msgid "Find the previous occurrence of a word or phrase"
 msgstr "指定文字列に一致する前の候補を検索します"
 
 # tooltip
-#: ../midori/midori-browser.c:4269
+#: ../midori/midori-browser.c:4524
 msgid "Configure the application preferences"
 msgstr "このアプリケーションの設定を行います"
 
-#: ../midori/midori-browser.c:4271
+#: ../midori/midori-browser.c:4526
 msgid "_View"
 msgstr "表示(_V)"
 
-#: ../midori/midori-browser.c:4272
+#: ../midori/midori-browser.c:4527
 msgid "_Toolbars"
 msgstr "ツールバー(_T)"
 
 # tooltip
-#: ../midori/midori-browser.c:4284
+#: ../midori/midori-browser.c:4539
 msgid "Increase the zoom level"
 msgstr "ズームレベルを大きくします"
 
 # tooltip
-#: ../midori/midori-browser.c:4287
+#: ../midori/midori-browser.c:4542
 msgid "Decrease the zoom level"
 msgstr "ズームレベルを小さくします"
 
 # tooltip
-#: ../midori/midori-browser.c:4290
+#: ../midori/midori-browser.c:4545
 msgid "Reset the zoom level"
 msgstr "ズームレベルをリセットします"
 
-#: ../midori/midori-browser.c:4291
+#: ../midori/midori-browser.c:4546
 msgid "_Encoding"
 msgstr "エンコーディング(_E)"
 
-#: ../midori/midori-browser.c:4293
+#: ../midori/midori-browser.c:4548
 msgid "View So_urce"
 msgstr "ソースを表示(_U)"
 
 # tooltip
-#: ../midori/midori-browser.c:4294
+#: ../midori/midori-browser.c:4549
 msgid "View the source code of the page"
 msgstr "ページのソースコードを表示します"
 
-#: ../midori/midori-browser.c:4296
+#: ../midori/midori-browser.c:4551
 msgid "View Selection Source"
 msgstr "選択領域のソースを表示"
 
 # tooltip
-#: ../midori/midori-browser.c:4297
+#: ../midori/midori-browser.c:4552
 msgid "View the source code of the selection"
 msgstr "選択した領域のソースを表示します"
 
 # tooltip
-#: ../midori/midori-browser.c:4301
+#: ../midori/midori-browser.c:4556
 msgid "Toggle fullscreen view"
 msgstr "全画面表示/解除を切り替えます"
 
-#: ../midori/midori-browser.c:4303
+#: ../midori/midori-browser.c:4558
 msgid "_Go"
 msgstr "移動(_G)"
 
 # tooltip
-#: ../midori/midori-browser.c:4306
+#: ../midori/midori-browser.c:4561
 msgid "Go back to the previous page"
 msgstr "前のページへ戻ります"
 
 # tooltip
-#: ../midori/midori-browser.c:4309
+#: ../midori/midori-browser.c:4564
 msgid "Go forward to the next page"
 msgstr "次のページへ進みます"
 
 # tooltip
-#: ../midori/midori-browser.c:4312
+#: ../midori/midori-browser.c:4567
 msgid "Go to your homepage"
 msgstr "ホームページに移動します"
 
-#: ../midori/midori-browser.c:4314
+#: ../midori/midori-browser.c:4569
 msgid "Empty Trash"
 msgstr "ゴミ箱を空にする"
 
 # tooltip
-#: ../midori/midori-browser.c:4315
+#: ../midori/midori-browser.c:4570
 msgid "Delete the contents of the trash"
 msgstr "ゴミ箱の中身を削除します"
 
-#: ../midori/midori-browser.c:4317
+#: ../midori/midori-browser.c:4572
 msgid "Undo _Close Tab"
 msgstr "閉じたタブを元に戻す(_C)"
 
 # tooltip
-#: ../midori/midori-browser.c:4318
+#: ../midori/midori-browser.c:4573
 msgid "Open the last closed tab"
 msgstr "最後に閉じたタブを開きます"
 
 # tooltip
-#: ../midori/midori-browser.c:4322
+#: ../midori/midori-browser.c:4577
 #: ../panels/midori-bookmarks.c:231
 msgid "Add a new bookmark"
 msgstr "新しいブックマークを追加します"
 
-#: ../midori/midori-browser.c:4324
+#: ../midori/midori-browser.c:4579
 msgid "Add a new _folder"
 msgstr "新しいフォルダの追加(_F)"
 
 # tooltip
-#: ../midori/midori-browser.c:4325
+#: ../midori/midori-browser.c:4580
 msgid "Add a new bookmark folder"
 msgstr "新しいブックマークフォルダを追加します"
 
-#: ../midori/midori-browser.c:4327
+#: ../midori/midori-browser.c:4582
 #: ../midori/midori-searchaction.c:497
 msgid "_Manage Search Engines"
 msgstr "検索エンジンの管理(_M)"
 
 # tooltip
-#: ../midori/midori-browser.c:4328
+#: ../midori/midori-browser.c:4583
 msgid "Add, edit and remove search engines..."
 msgstr "検索エンジンを追加、編集、または削除します..."
 
-#: ../midori/midori-browser.c:4331
+#: ../midori/midori-browser.c:4586
 msgid "_Clear Private Data"
 msgstr "プライベートデータのクリア(_C)"
 
 # tooltip
-#: ../midori/midori-browser.c:4332
+#: ../midori/midori-browser.c:4587
 msgid "Clear private data..."
 msgstr "プライベートデータをクリアします..."
 
-#: ../midori/midori-browser.c:4336
+#: ../midori/midori-browser.c:4591
 msgid "_Previous Tab"
 msgstr "前のタブ(_P)"
 
 # tooltip
-#: ../midori/midori-browser.c:4337
+#: ../midori/midori-browser.c:4592
 msgid "Switch to the previous tab"
 msgstr "前のタブへ切り替えます"
 
-#: ../midori/midori-browser.c:4339
+#: ../midori/midori-browser.c:4594
 msgid "_Next Tab"
 msgstr "次のタブ(_N)"
 
 # tooltip
-#: ../midori/midori-browser.c:4340
+#: ../midori/midori-browser.c:4595
 msgid "Switch to the next tab"
 msgstr "次のタブへ切り替えます"
 
-#: ../midori/midori-browser.c:4342
+#: ../midori/midori-browser.c:4597
+msgid "Focus _Current Tab"
+msgstr "現在のタブにフォーカス(_C)"
+
+# tooltip
+#: ../midori/midori-browser.c:4598
+msgid "Focus the current tab"
+msgstr "現在のタブにフォーカスを移動します"
+
+#: ../midori/midori-browser.c:4600
+msgid "Open last _session"
+msgstr "最後のセッションを開く(_S)"
+
+#: ../midori/midori-browser.c:4601
+msgid "Open the tabs saved in the last session"
+msgstr "最後のセッションで保存されたタブを開きます"
+
+#: ../midori/midori-browser.c:4603
 msgid "_Help"
 msgstr "ヘルプ(_H)"
 
-#: ../midori/midori-browser.c:4344
+#: ../midori/midori-browser.c:4605
 msgid "_Contents"
 msgstr "目次(_C)"
 
 # tooltip
-#: ../midori/midori-browser.c:4345
+#: ../midori/midori-browser.c:4606
 msgid "Show the documentation"
 msgstr "ドキュメントを表示します"
 
-#: ../midori/midori-browser.c:4347
+#: ../midori/midori-browser.c:4608
 msgid "_Frequent Questions"
 msgstr "よくある質問(_F)"
 
 # tooltip
-#: ../midori/midori-browser.c:4348
+#: ../midori/midori-browser.c:4609
 msgid "Show the Frequently Asked Questions"
 msgstr "よくある質問とその回答を表示します"
 
-#: ../midori/midori-browser.c:4350
+#: ../midori/midori-browser.c:4611
 msgid "_Report a Bug"
 msgstr "バグを報告(_R)"
 
 # tooltip
-#: ../midori/midori-browser.c:4351
+#: ../midori/midori-browser.c:4612
 msgid "Open Midori's bug tracker"
 msgstr "Midori のバグトラッカーを開きます"
 
 # tooltip
-#: ../midori/midori-browser.c:4354
+#: ../midori/midori-browser.c:4615
 msgid "Show information about the program"
 msgstr "このプログラムについての情報を表示します"
 
-#: ../midori/midori-browser.c:4361
+#: ../midori/midori-browser.c:4622
 msgid "P_rivate Browsing"
 msgstr "プライベートブラウジング(_R)"
 
 # tooltip
-#: ../midori/midori-browser.c:4362
+#: ../midori/midori-browser.c:4623
 msgid "Don't save any private data while browsing"
 msgstr "閲覧中に個人データを保存しません"
 
-#: ../midori/midori-browser.c:4367
+#: ../midori/midori-browser.c:4628
 msgid "_Menubar"
 msgstr "メニューバー(_M)"
 
 # tooltip
-#: ../midori/midori-browser.c:4368
+#: ../midori/midori-browser.c:4629
 msgid "Show menubar"
 msgstr "メニューバーを表示します"
 
-#: ../midori/midori-browser.c:4371
+#: ../midori/midori-browser.c:4632
 msgid "_Navigationbar"
 msgstr "ナビゲーションバー(_N)"
 
 # tooltip
-#: ../midori/midori-browser.c:4372
+#: ../midori/midori-browser.c:4633
 msgid "Show navigationbar"
 msgstr "ナビゲーションバーを表示します"
 
-#: ../midori/midori-browser.c:4375
+#: ../midori/midori-browser.c:4636
 msgid "Side_panel"
 msgstr "サイドパネル(_P)"
 
 # tooltip
-#: ../midori/midori-browser.c:4376
+#: ../midori/midori-browser.c:4637
 msgid "Show sidepanel"
 msgstr "サイドパネルを表示します"
 
-#: ../midori/midori-browser.c:4379
+#: ../midori/midori-browser.c:4640
 msgid "_Bookmarkbar"
 msgstr "ブックマークバー(_B)"
 
 # tooltip
-#: ../midori/midori-browser.c:4380
+#: ../midori/midori-browser.c:4641
 msgid "Show bookmarkbar"
 msgstr "ブックマークバーを表示します"
 
-#: ../midori/midori-browser.c:4383
+#: ../midori/midori-browser.c:4644
 msgid "_Transferbar"
 msgstr "転送バー(_T)"
 
 # tooltip
-#: ../midori/midori-browser.c:4384
+#: ../midori/midori-browser.c:4645
 msgid "Show transferbar"
 msgstr "転送バーを表示します"
 
-#: ../midori/midori-browser.c:4387
+#: ../midori/midori-browser.c:4648
 msgid "_Statusbar"
 msgstr "ステータスバー(_S)"
 
 # tooltip
-#: ../midori/midori-browser.c:4388
+#: ../midori/midori-browser.c:4649
 msgid "Show statusbar"
 msgstr "ステータスバーを表示します"
 
-#: ../midori/midori-browser.c:4395
+#: ../midori/midori-browser.c:4656
 msgid "_Automatic"
 msgstr "自動(_A)"
 
-#: ../midori/midori-browser.c:4398
-#: ../midori/midori-websettings.c:214
+#: ../midori/midori-browser.c:4659
+#: ../midori/midori-websettings.c:216
 msgid "Chinese (BIG5)"
 msgstr "中国語 (BIG5)"
 
 #. i18n: A double underscore "__" is used to prevent an unwanted mnemonic
-#: ../midori/midori-browser.c:4402
+#: ../midori/midori-browser.c:4663
 msgid "Japanese (SHIFT__JIS)"
 msgstr "日本語 (SHIFT__JIS)"
 
-#: ../midori/midori-browser.c:4405
-#: ../midori/midori-websettings.c:216
+#: ../midori/midori-browser.c:4666
+#: ../midori/midori-websettings.c:218
 msgid "Russian (KOI8-R)"
 msgstr "ロシア語 (KOI8-R)"
 
-#: ../midori/midori-browser.c:4408
-#: ../midori/midori-websettings.c:217
+#: ../midori/midori-browser.c:4669
+#: ../midori/midori-websettings.c:219
 msgid "Unicode (UTF-8)"
 msgstr "Unicode (UTF-8)"
 
-#: ../midori/midori-browser.c:4411
-#: ../midori/midori-websettings.c:218
+#: ../midori/midori-browser.c:4672
+#: ../midori/midori-websettings.c:220
 msgid "Western (ISO-8859-1)"
 msgstr "西欧 (ISO-8859-1)"
 
-#: ../midori/midori-browser.c:4414
-#: ../midori/midori-websettings.c:219
-#: ../midori/midori-websettings.c:291
+#: ../midori/midori-browser.c:4675
+#: ../midori/midori-websettings.c:221
+#: ../midori/midori-websettings.c:294
 msgid "Custom..."
 msgstr "カスタム..."
 
-#: ../midori/midori-browser.c:4852
+#: ../midori/midori-browser.c:5159
 msgid "_Separator"
 msgstr "セパレータ(_S)"
 
-#: ../midori/midori-browser.c:4859
+#: ../midori/midori-browser.c:5166
 msgid "_Location..."
 msgstr "場所(_L)..."
 
 # tooltip
-#: ../midori/midori-browser.c:4861
+#: ../midori/midori-browser.c:5168
 msgid "Open a particular location"
 msgstr "指定された場所を開きます"
 
-#: ../midori/midori-browser.c:4885
+#: ../midori/midori-browser.c:5192
 msgid "_Web Search..."
 msgstr "ウェブ検索(_W)..."
 
 # tooltip
-#: ../midori/midori-browser.c:4887
+#: ../midori/midori-browser.c:5194
 msgid "Run a web search"
 msgstr "ウェブ検索を実行します"
 
 # tooltip
-#: ../midori/midori-browser.c:4908
+#: ../midori/midori-browser.c:5215
 msgid "Reopen a previously closed tab or window"
 msgstr "これまでに閉じられたタブやウィンドウを再び開きます"
 
-#: ../midori/midori-browser.c:4923
+#: ../midori/midori-browser.c:5230
 msgid "_Recently visited pages"
 msgstr "最近訪れたページ(_R)"
 
 # tooltip
-#: ../midori/midori-browser.c:4925
+#: ../midori/midori-browser.c:5232
 msgid "Reopen pages that you visited earlier"
 msgstr "以前に訪れたページを再び開きます"
 
-#: ../midori/midori-browser.c:4940
-#: ../midori/sokoke.c:857
+#: ../midori/midori-browser.c:5247
+#: ../midori/sokoke.c:961
 msgid "_Bookmarks"
 msgstr "ブックマーク(_B)"
 
 # tooltip
-#: ../midori/midori-browser.c:4942
+#: ../midori/midori-browser.c:5249
 msgid "Show the saved bookmarks"
 msgstr "ブックマークを表示します"
 
-#: ../midori/midori-browser.c:4957
+#: ../midori/midori-browser.c:5264
 msgid "_Tools"
 msgstr "ツール(_T)"
 
-#: ../midori/midori-browser.c:4969
+#: ../midori/midori-browser.c:5276
 msgid "_Window"
 msgstr "ウィンドウ(_W)"
 
 # tooltip
-#: ../midori/midori-browser.c:4971
+#: ../midori/midori-browser.c:5278
 msgid "Show a list of all open tabs"
 msgstr "開いているすべてのタブのリストを表示します"
 
-#: ../midori/midori-browser.c:4985
+#: ../midori/midori-browser.c:5292
 msgid "_Menu"
 msgstr "メニュー(_M)"
 
-#: ../midori/midori-browser.c:4987
+#: ../midori/midori-browser.c:5294
 msgid "Menu"
 msgstr "メニュー"
 
 #. i18n: A panel at the bottom, to search text in pages
-#: ../midori/midori-browser.c:5173
+#: ../midori/midori-browser.c:5477
 msgid "_Inline Find:"
 msgstr "インライン検索(_I)"
 
-#: ../midori/midori-browser.c:5198
+#: ../midori/midori-browser.c:5502
 msgid "Previous"
 msgstr "前を検索"
 
-#: ../midori/midori-browser.c:5203
+#: ../midori/midori-browser.c:5507
 msgid "Next"
 msgstr "次を検索"
 
-#: ../midori/midori-browser.c:5208
+#: ../midori/midori-browser.c:5512
 msgid "Match Case"
 msgstr "大文字・小文字を区別"
 
-#: ../midori/midori-browser.c:5216
+#: ../midori/midori-browser.c:5520
 msgid "Highlight Matches"
 msgstr "強調表示"
 
-#: ../midori/midori-browser.c:5226
+#: ../midori/midori-browser.c:5530
 msgid "Close Findbar"
 msgstr "検索バーを閉じる"
 
-#: ../midori/midori-browser.c:5261
-#: ../extensions/cookie-manager/cookie-manager-page.c:109
-msgid "Delete All"
-msgstr "すべて削除"
+#: ../midori/midori-browser.c:5565
+#: ../panels/midori-transfers.c:143
+msgid "Clear All"
+msgstr "すべてクリア"
 
-#: ../midori/midori-browser.c:5598
+#: ../midori/midori-browser.c:5919
 #, c-format
 msgid "Unexpected setting '%s'"
 msgstr "'%s' は予想外の設定です"
 
-#: ../midori/midori-locationaction.c:901
+#: ../midori/midori-locationaction.c:968
 #, c-format
 msgid "Search with %s"
 msgstr "%s で検索"
 
-#: ../midori/midori-panel.c:382
-#: ../midori/midori-panel.c:384
+#: ../midori/midori-panel.c:381
+#: ../midori/midori-panel.c:383
 msgid "Detach chosen panel from the window"
 msgstr "選択したパネルをウィンドウから切り離す"
 
-#: ../midori/midori-panel.c:394
-#: ../midori/midori-panel.c:396
-#: ../midori/midori-panel.c:577
-#: ../midori/midori-panel.c:580
+#: ../midori/midori-panel.c:393
+#: ../midori/midori-panel.c:395
+#: ../midori/midori-panel.c:576
+#: ../midori/midori-panel.c:579
 msgid "Align sidepanel to the right"
 msgstr "サイドパネルを右側に配置する"
 
+#: ../midori/midori-panel.c:405
 #: ../midori/midori-panel.c:406
-#: ../midori/midori-panel.c:407
 msgid "Close panel"
 msgstr "パネルを閉じます"
 
-#: ../midori/midori-panel.c:578
-#: ../midori/midori-panel.c:581
+#: ../midori/midori-panel.c:577
+#: ../midori/midori-panel.c:580
 msgid "Align sidepanel to the left"
 msgstr "サイドパネルを左側に配置する"
 
-#: ../midori/midori-panel.c:704
+#: ../midori/midori-panel.c:703
 msgid "Show panel _titles"
 msgstr "パネルタイトルの表示(_T)"
 
-#: ../midori/midori-panel.c:712
+#: ../midori/midori-panel.c:711
 msgid "Show operating _controls"
 msgstr "操作コントロールの表示(_C)"
 
-#: ../midori/midori-panel.c:783
+#: ../midori/midori-panel.c:782
 msgid "Options"
 msgstr "オプション"
 
-#: ../midori/midori-websettings.c:197
+#: ../midori/midori-websettings.c:199
 msgid "Show Blank page"
 msgstr "空白ページを表示"
 
-#: ../midori/midori-websettings.c:198
+#: ../midori/midori-websettings.c:200
 msgid "Show Homepage"
 msgstr "ホームページを表示"
 
-#: ../midori/midori-websettings.c:199
+#: ../midori/midori-websettings.c:201
 msgid "Show last open tabs"
 msgstr "最後に開いたタブを表示"
 
-#: ../midori/midori-websettings.c:215
+#: ../midori/midori-websettings.c:217
 msgid "Japanese (SHIFT_JIS)"
 msgstr "日本語 (SHIFT_JIS)"
 
-#: ../midori/midori-websettings.c:234
+#: ../midori/midori-websettings.c:236
 msgid "New tab"
 msgstr "新しいタブ"
 
-#: ../midori/midori-websettings.c:235
+#: ../midori/midori-websettings.c:237
 msgid "New window"
 msgstr "新しいウィンドウ"
 
-#: ../midori/midori-websettings.c:236
+#: ../midori/midori-websettings.c:238
 msgid "Current tab"
 msgstr "現在のタブ"
 
-#: ../midori/midori-websettings.c:251
+#: ../midori/midori-websettings.c:253
 msgid "Default"
 msgstr "デフォルト"
 
-#: ../midori/midori-websettings.c:252
+#: ../midori/midori-websettings.c:254
 msgid "Icons"
 msgstr "アイコン"
 
-#: ../midori/midori-websettings.c:253
+#: ../midori/midori-websettings.c:255
 msgid "Text"
 msgstr "文字"
 
-#: ../midori/midori-websettings.c:254
+#: ../midori/midori-websettings.c:256
 msgid "Icons and text"
 msgstr "アイコンと文字"
 
-#: ../midori/midori-websettings.c:255
+#: ../midori/midori-websettings.c:257
 msgid "Text beside icons"
 msgstr "アイコンと文字 (横方向)"
 
-#: ../midori/midori-websettings.c:270
+#: ../midori/midori-websettings.c:272
 msgid "All cookies"
 msgstr "すべての Cookie"
 
-#: ../midori/midori-websettings.c:271
+#: ../midori/midori-websettings.c:273
 msgid "Session cookies"
 msgstr "セッションの Cookie"
 
-#: ../midori/midori-websettings.c:272
-#: ../panels/midori-addons.c:94
+#: ../midori/midori-websettings.c:274
+#: ../panels/midori-addons.c:93
 #: ../extensions/shortcuts.c:93
 msgid "None"
 msgstr "なし"
 
-#: ../midori/midori-websettings.c:288
+#: ../midori/midori-websettings.c:290
 msgid "Safari"
 msgstr "Safari"
 
-#: ../midori/midori-websettings.c:289
+#: ../midori/midori-websettings.c:291
+msgid "iPhone"
+msgstr "iPhone"
+
+#: ../midori/midori-websettings.c:292
 msgid "Firefox"
 msgstr "Firefox"
 
-#: ../midori/midori-websettings.c:290
+#: ../midori/midori-websettings.c:293
 msgid "Internet Explorer"
 msgstr "Internet Explorer"
 
-#: ../midori/midori-websettings.c:343
+#: ../midori/midori-websettings.c:346
 msgid "Remember last window size"
 msgstr "最後のウィンドウサイズを記憶する"
 
 # tooltip
-#: ../midori/midori-websettings.c:344
+#: ../midori/midori-websettings.c:347
 msgid "Whether to save the last window size"
 msgstr "最後のウィンドウサイズを記憶します"
 
-#: ../midori/midori-websettings.c:352
+#: ../midori/midori-websettings.c:355
 msgid "Last window width"
 msgstr "最後のウィンドウの幅"
 
-#: ../midori/midori-websettings.c:353
+#: ../midori/midori-websettings.c:356
 msgid "The last saved window width"
 msgstr "最後に保存されたウィンドウ幅"
 
-#: ../midori/midori-websettings.c:361
+#: ../midori/midori-websettings.c:364
 msgid "Last window height"
 msgstr "最後のウィンドウの高さ"
 
 # tooltip
-#: ../midori/midori-websettings.c:362
+#: ../midori/midori-websettings.c:365
 msgid "The last saved window height"
 msgstr "最後に保存されたウィンドウの高さにします"
 
-#: ../midori/midori-websettings.c:387
+#: ../midori/midori-websettings.c:390
 msgid "Last panel position"
 msgstr "最後のパネルの位置"
 
 # tooltip
-#: ../midori/midori-websettings.c:388
+#: ../midori/midori-websettings.c:391
 msgid "The last saved panel position"
 msgstr "最後に保存されたパネルの位置にします"
 
 #. i18n: The internal index of the last opened panel
-#: ../midori/midori-websettings.c:397
+#: ../midori/midori-websettings.c:400
 msgid "Last panel page"
 msgstr "最後のパネルページ"
 
 # tooltip
-#: ../midori/midori-websettings.c:398
+#: ../midori/midori-websettings.c:401
 msgid "The last saved panel page"
 msgstr "最後に保存されたパネルのページです"
 
-#: ../midori/midori-websettings.c:406
+#: ../midori/midori-websettings.c:409
 msgid "Last Web search"
 msgstr "最後のウェブ検索"
 
-#: ../midori/midori-websettings.c:407
+#: ../midori/midori-websettings.c:410
 msgid "The last saved Web search"
 msgstr "最後に保存されたウェブ検索です"
 
-#: ../midori/midori-websettings.c:416
+#: ../midori/midori-websettings.c:419
 msgid "Show Menubar"
 msgstr "メニューバーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:417
+#: ../midori/midori-websettings.c:420
 msgid "Whether to show the menubar"
 msgstr "メニューバーを表示します"
 
-#: ../midori/midori-websettings.c:425
+#: ../midori/midori-websettings.c:428
 msgid "Show Navigationbar"
 msgstr "ナビゲーションバーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:426
+#: ../midori/midori-websettings.c:429
 msgid "Whether to show the navigationbar"
 msgstr "ナビゲーションバーを表示します"
 
-#: ../midori/midori-websettings.c:434
+#: ../midori/midori-websettings.c:437
 msgid "Show Bookmarkbar"
 msgstr "ブックマークバーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:435
+#: ../midori/midori-websettings.c:438
 msgid "Whether to show the bookmarkbar"
 msgstr "ブックマークバーを表示します"
 
-#: ../midori/midori-websettings.c:443
+#: ../midori/midori-websettings.c:446
 msgid "Show Panel"
 msgstr "パネルを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:444
+#: ../midori/midori-websettings.c:447
 msgid "Whether to show the panel"
 msgstr "パネルを表示します"
 
-#: ../midori/midori-websettings.c:459
+#: ../midori/midori-websettings.c:462
 msgid "Show Transferbar"
 msgstr "転送バーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:460
+#: ../midori/midori-websettings.c:463
 msgid "Whether to show the transferbar"
 msgstr "転送バーを表示します"
 
-#: ../midori/midori-websettings.c:468
+#: ../midori/midori-websettings.c:471
 msgid "Show Statusbar"
 msgstr "ステータスバーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:469
+#: ../midori/midori-websettings.c:472
 msgid "Whether to show the statusbar"
 msgstr "ステータスバーを表示します"
 
-#: ../midori/midori-websettings.c:478
+#: ../midori/midori-websettings.c:481
 msgid "Toolbar Style:"
 msgstr "ツールバー方式:"
 
 # tooltip
-#: ../midori/midori-websettings.c:479
+#: ../midori/midori-websettings.c:482
 msgid "The style of the toolbar"
 msgstr "ツールバーの表示方式を指定します"
 
-#: ../midori/midori-websettings.c:495
+#: ../midori/midori-websettings.c:498
 msgid "Show progress in location entry"
 msgstr "ロケーションエントリに進捗を表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:496
+#: ../midori/midori-websettings.c:499
 msgid "Whether to show loading progress in the location entry"
 msgstr "ロケーションエントリ内に読み込みの進捗状況を表示します"
 
-#: ../midori/midori-websettings.c:511
+#: ../midori/midori-websettings.c:514
 msgid "Search engines in location completion"
 msgstr "場所の補完に検索エンジンを使用する"
 
 # tooltip
-#: ../midori/midori-websettings.c:512
+#: ../midori/midori-websettings.c:515
 msgid "Whether to show search engines in the location completion"
 msgstr "場所の補完候補内から検索エンジンを使用できるようにします"
 
-#: ../midori/midori-websettings.c:520
+#: ../midori/midori-websettings.c:523
 msgid "Toolbar Items"
 msgstr "ツールバーアイテム"
 
 # tooltip
-#: ../midori/midori-websettings.c:521
+#: ../midori/midori-websettings.c:524
 msgid "The items to show on the toolbar"
 msgstr "ツールバーに表示するアイテムを指定します"
 
-#: ../midori/midori-websettings.c:529
+#: ../midori/midori-websettings.c:532
 msgid "Compact Sidepanel"
 msgstr "サイドパネルをコンパクトにする"
 
 # tooltip
-#: ../midori/midori-websettings.c:530
+#: ../midori/midori-websettings.c:533
 msgid "Whether to make the sidepanel compact"
 msgstr "サイドパネルの表示をコンパクトにします"
 
-#: ../midori/midori-websettings.c:545
+#: ../midori/midori-websettings.c:548
 msgid "Show operating controls of the panel"
 msgstr "パネルの操作コントロールを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:546
+#: ../midori/midori-websettings.c:549
 msgid "Whether to show the operating controls of the panel"
 msgstr "パネルに操作コントロールを表示します"
 
-#: ../midori/midori-websettings.c:561
+#: ../midori/midori-websettings.c:564
 msgid "Align sidepanel on the right"
 msgstr "サイドパネルを右側に配置する"
 
 # tooltip
-#: ../midori/midori-websettings.c:562
+#: ../midori/midori-websettings.c:565
 msgid "Whether to align the sidepanel on the right"
 msgstr "サイドパネルを右側に表示します"
 
-#: ../midori/midori-websettings.c:571
+#: ../midori/midori-websettings.c:574
 msgid "When Midori starts:"
 msgstr "Midori を起動した時:"
 
 # tooltip
-#: ../midori/midori-websettings.c:572
+#: ../midori/midori-websettings.c:575
 msgid "What to do when Midori starts"
 msgstr "Midori の起動時に表示するページを指定します"
 
-#: ../midori/midori-websettings.c:581
+#: ../midori/midori-websettings.c:584
 msgid "Homepage:"
 msgstr "ホームページ:"
 
 # tooltip
-#: ../midori/midori-websettings.c:582
+#: ../midori/midori-websettings.c:585
 msgid "The homepage"
 msgstr "ホームページを指定します"
 
-#: ../midori/midori-websettings.c:597
+#: ../midori/midori-websettings.c:600
 msgid "Show crash dialog"
 msgstr "クラッシュダイアログを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:598
+#: ../midori/midori-websettings.c:601
 msgid "Show a dialog after Midori crashed"
 msgstr "Midori がクラッシュした後の起動時にダイアログを表示します"
 
 #. i18n: Speed dial, webpage shortcuts, named for the phone function
-#: ../midori/midori-websettings.c:614
+#: ../midori/midori-websettings.c:617
 msgid "Show speed dial in new tabs"
 msgstr "新しいタブにスピードダイアルを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:615
+#: ../midori/midori-websettings.c:618
 msgid "Show speed dial in newly opened tabs"
 msgstr "新しく開かれたタブにスピードダイアルを表示します"
 
-#: ../midori/midori-websettings.c:623
+#: ../midori/midori-websettings.c:626
 msgid "Save downloaded files to:"
 msgstr "ダウンロードファイルの保存先:"
 
 # tooltip
-#: ../midori/midori-websettings.c:624
+#: ../midori/midori-websettings.c:627
 msgid "The folder downloaded files are saved to"
 msgstr "ダウンロードファイルの保存先を指定します"
 
-#: ../midori/midori-websettings.c:643
+#: ../midori/midori-websettings.c:648
 msgid "Ask for the destination folder"
 msgstr "保存先フォルダを問い合わせる"
 
 # tooltip
-#: ../midori/midori-websettings.c:644
+#: ../midori/midori-websettings.c:649
 msgid "Whether to ask for the destination folder when downloading a file"
 msgstr "ファイルをダウンロードする時に保存先フォルダを問い合わせます"
 
-#: ../midori/midori-websettings.c:663
+#: ../midori/midori-websettings.c:668
 msgid "Notify when a transfer has been completed"
 msgstr "転送が完了したら通知する"
 
 # tooltip
-#: ../midori/midori-websettings.c:664
+#: ../midori/midori-websettings.c:669
 msgid "Whether to show a notification when a transfer has been completed"
 msgstr "転送が完了したら通知します"
 
-#: ../midori/midori-websettings.c:676
+#: ../midori/midori-websettings.c:681
 msgid "Download Manager"
 msgstr "ダウンロードマネージャ"
 
 # tooltip
-#: ../midori/midori-websettings.c:677
+#: ../midori/midori-websettings.c:682
 msgid "An external download manager"
 msgstr "外部ダウンロードマネージャを指定します"
 
-#: ../midori/midori-websettings.c:685
+#: ../midori/midori-websettings.c:690
 msgid "Text Editor"
 msgstr "テキストエディタ"
 
 # tooltip
-#: ../midori/midori-websettings.c:686
+#: ../midori/midori-websettings.c:691
 msgid "An external text editor"
 msgstr "外部テキストエディタを指定します"
 
-#: ../midori/midori-websettings.c:701
+#: ../midori/midori-websettings.c:706
 msgid "News Aggregator"
 msgstr "フィードリーダ"
 
 # tooltip
-#: ../midori/midori-websettings.c:702
+#: ../midori/midori-websettings.c:707
 msgid "An external news aggregator"
 msgstr "外部フィードリーダを指定します"
 
-#: ../midori/midori-websettings.c:710
+#: ../midori/midori-websettings.c:715
 msgid "Location entry Search"
 msgstr "ロケーションエントリの検索"
 
 # tooltip
-#: ../midori/midori-websettings.c:711
+#: ../midori/midori-websettings.c:716
 msgid "The search to perform inside the location entry"
 msgstr "ロケーションエントリに入力された文字列の検索エンジンを指定します"
 
-#: ../midori/midori-websettings.c:719
+#: ../midori/midori-websettings.c:724
 msgid "Preferred Encoding"
 msgstr "文字のエンコーディング"
 
 # tooltip
-#: ../midori/midori-websettings.c:720
+#: ../midori/midori-websettings.c:725
 msgid "The preferred character encoding"
 msgstr "文字のエンコーディングを指定します"
 
-#: ../midori/midori-websettings.c:730
+#: ../midori/midori-websettings.c:735
 msgid "Always Show Tabbar"
 msgstr "常にタブバーを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:731
+#: ../midori/midori-websettings.c:736
 msgid "Always show the tabbar"
 msgstr "常にタブバーを表示します"
 
-#: ../midori/midori-websettings.c:739
+#: ../midori/midori-websettings.c:744
 msgid "Close Buttons on Tabs"
 msgstr "タブに閉じるボタンを表示する"
 
 # tooltip
-#: ../midori/midori-websettings.c:740
+#: ../midori/midori-websettings.c:745
 msgid "Whether tabs have close buttons"
 msgstr "タブに閉じるボタンを表示します"
 
-#: ../midori/midori-websettings.c:748
+#: ../midori/midori-websettings.c:753
 msgid "Open new pages in:"
 msgstr "新しくページを開く時:"
 
 # tooltip
-#: ../midori/midori-websettings.c:749
+#: ../midori/midori-websettings.c:754
 msgid "Where to open new pages"
 msgstr "新しいページをどこに開くか指定します"
 
-#: ../midori/midori-websettings.c:758
+#: ../midori/midori-websettings.c:763
 msgid "Open external pages in:"
 msgstr "外部ページを開く時:"
 
 # tooltip
-#: ../midori/midori-websettings.c:759
+#: ../midori/midori-websettings.c:764
 msgid "Where to open externally opened pages"
 msgstr "外部のページをどこに開くか指定します"
 
-#: ../midori/midori-websettings.c:768
+#: ../midori/midori-websettings.c:773
 msgid "Middle click opens Selection"
 msgstr "選択範囲を中央クリックで開く"
 
 # tooltip
-#: ../midori/midori-websettings.c:769
+#: ../midori/midori-websettings.c:774
 msgid "Load an address from the selection via middle click"
 msgstr "選択したアドレスをマウスの中央クリックで読み込みます"
 
-#: ../midori/midori-websettings.c:777
+#: ../midori/midori-websettings.c:782
 msgid "Open tabs in the background"
 msgstr "タブをバックグラウンドで開く"
 
 # tooltip
-#: ../midori/midori-websettings.c:778
+#: ../midori/midori-websettings.c:783
 msgid "Whether to open new tabs in the background"
 msgstr "新しいタブをバックグラウンドで開きます"
 
-#: ../midori/midori-websettings.c:786
+#: ../midori/midori-websettings.c:791
 msgid "Open Tabs next to Current"
 msgstr "現在のタブの隣に開く"
 
 # tooltip
-#: ../midori/midori-websettings.c:787
+#: ../midori/midori-websettings.c:792
 msgid "Whether to open new tabs next to the current tab or after the last one"
 msgstr "新しいタブを現在のタブの隣に開くか、最後のタブの隣に開くかを指定します"
 
-#: ../midori/midori-websettings.c:795
+#: ../midori/midori-websettings.c:800
 msgid "Open popups in tabs"
 msgstr "ポップアップをタブに開く"
 
 # tooltip
-#: ../midori/midori-websettings.c:796
+#: ../midori/midori-websettings.c:801
 msgid "Whether to open popup windows in tabs"
 msgstr "ポップアップウィンドウをタブに開きます"
 
-#: ../midori/midori-websettings.c:812
+#: ../midori/midori-websettings.c:817
 msgid "Zoom Text and Images"
 msgstr "文字や画像を拡大/縮小する"
 
 # tooltip
-#: ../midori/midori-websettings.c:813
+#: ../midori/midori-websettings.c:818
 msgid "Whether to zoom text and images"
 msgstr "文字や画像の拡大/縮小を可能にします"
 
-#: ../midori/midori-websettings.c:828
+#: ../midori/midori-websettings.c:833
 msgid "Find inline while typing"
 msgstr "キー入力中に自動的に検索する"
 
 # tooltip
-#: ../midori/midori-websettings.c:829
+#: ../midori/midori-websettings.c:834
 msgid "Whether to automatically find inline while typing"
 msgstr "インライン検索において、キー入力に従い自動的に検索します"
 
-#: ../midori/midori-websettings.c:837
+#: ../midori/midori-websettings.c:849
+msgid "Kinetic scrolling"
+msgstr "慣性スクロール"
+
+#: ../midori/midori-websettings.c:850
+msgid "Whether scrolling should kinetically move according to speed"
+msgstr "速度にしたがって慣性がかかったようにスクロールします"
+
+#: ../midori/midori-websettings.c:858
 msgid "Accept cookies"
 msgstr "Cookie の受け入れ"
 
 # tooltip
-#: ../midori/midori-websettings.c:838
+#: ../midori/midori-websettings.c:859
 msgid "What type of cookies to accept"
 msgstr "Cookie を受け入れる方式を選択します"
 
-#: ../midori/midori-websettings.c:847
+#: ../midori/midori-websettings.c:868
 msgid "Original cookies only"
 msgstr "オリジナルの Cookie のみ"
 
 # tooltip
-#: ../midori/midori-websettings.c:848
+#: ../midori/midori-websettings.c:869
 msgid "Accept cookies from the original website only"
 msgstr "オリジナルのウェブサイトからの Cookie のみ受け入れます"
 
-#: ../midori/midori-websettings.c:856
+#: ../midori/midori-websettings.c:877
 msgid "Maximum cookie age"
 msgstr "Cookie の最大保存日数"
 
 # tooltip
-#: ../midori/midori-websettings.c:857
+#: ../midori/midori-websettings.c:878
 msgid "The maximum number of days to save cookies for"
 msgstr "Cookie を保存する最大の日数です"
 
-#: ../midori/midori-websettings.c:867
+#: ../midori/midori-websettings.c:888
 msgid "Remember last visited pages"
 msgstr "最後に訪れたページを記憶する"
 
 # tooltip
-#: ../midori/midori-websettings.c:868
+#: ../midori/midori-websettings.c:889
 msgid "Whether the last visited pages are saved"
 msgstr "最後に訪れたページを記憶します"
 
-#: ../midori/midori-websettings.c:876
+#: ../midori/midori-websettings.c:897
 msgid "Maximum history age"
 msgstr "履歴の最大保存日数"
 
 # tooltip
-#: ../midori/midori-websettings.c:877
+#: ../midori/midori-websettings.c:898
 msgid "The maximum number of days to save the history for"
 msgstr "履歴を保存する最大の日数です"
 
-#: ../midori/midori-websettings.c:885
+#: ../midori/midori-websettings.c:906
 msgid "Remember last form inputs"
 msgstr "最後のフォーム入力を記憶する"
 
 # tooltip
-#: ../midori/midori-websettings.c:886
+#: ../midori/midori-websettings.c:907
 msgid "Whether the last form inputs are saved"
 msgstr "最後にフォーム入力した内容を記憶します"
 
-#: ../midori/midori-websettings.c:894
+#: ../midori/midori-websettings.c:915
 msgid "Remember last downloaded files"
 msgstr "最後のダウンロードファイルを記憶する"
 
 # tooltip
-#: ../midori/midori-websettings.c:895
+#: ../midori/midori-websettings.c:916
 msgid "Whether the last downloaded files are saved"
 msgstr "最後にダウンロードしたファイルを記憶します"
 
-#: ../midori/midori-websettings.c:905
+#: ../midori/midori-websettings.c:926
 msgid "Proxy Server"
 msgstr "プロキシサーバ"
 
 # tooltip
-#: ../midori/midori-websettings.c:906
+#: ../midori/midori-websettings.c:927
 msgid "The proxy server used for HTTP connections"
 msgstr "HTTP 接続でプロキシサーバを使用する場合に設定します"
 
-#: ../midori/midori-websettings.c:921
+#: ../midori/midori-websettings.c:942
 msgid "Detect proxy server automatically"
 msgstr "プロキシサーバを自動検出する"
 
 # tooltip
-#: ../midori/midori-websettings.c:922
+#: ../midori/midori-websettings.c:943
 msgid "Whether to detect the proxy server automatically from the environment"
 msgstr "プロキシサーバをシステム環境から自動的に検出します"
 
 #. i18n: This refers to an application, not the 'user agent' string
-#: ../midori/midori-websettings.c:938
+#: ../midori/midori-websettings.c:959
 msgid "Identify as"
 msgstr "識別名"
 
 # tooltip
-#: ../midori/midori-websettings.c:939
+#: ../midori/midori-websettings.c:960
 msgid "What to identify as to web pages"
 msgstr "ウェブページに報告するユーザエージェントの識別名を指定します"
 
-#: ../midori/midori-websettings.c:955
+#: ../midori/midori-websettings.c:976
 msgid "Identification string"
 msgstr "識別文字列"
 
 # tooltip
-#: ../midori/midori-websettings.c:956
+#: ../midori/midori-websettings.c:977
 msgid "The application identification string"
 msgstr "アプリケーション識別文字列です"
 
-#: ../midori/midori-websettings.c:964
+#: ../midori/midori-websettings.c:985
 msgid "Cache size"
 msgstr "キャッシュサイズ"
 
 # tooltip
-#: ../midori/midori-websettings.c:965
+#: ../midori/midori-websettings.c:986
 msgid "The allowed size of the cache"
 msgstr "キャッシュのサイズを指定します"
 
 # Button title
-#: ../midori/midori-websettings.c:980
+#: ../midori/midori-websettings.c:1001
 msgid "Clear private data"
 msgstr "プライベートデータのクリア"
 
 # FIXME:
-#: ../midori/midori-websettings.c:981
+#: ../midori/midori-websettings.c:1002
 msgid "The private data selected for deletion"
 msgstr "選択されているプライベートデータを削除します"
 
-#: ../midori/midori-view.c:781
+#. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
+#. so reloading via Javascript works but not via API calls.
+#. Error pages are special, we want to try loading the destination
+#. again, not the error page which isn't even a proper page
+#: ../midori/midori-view.c:847
+#: ../midori/midori-view.c:3643
+#: ../midori/midori-view.c:3647
+#, c-format
+msgid "Error - %s"
+msgstr "エラー - %s"
+
+#: ../midori/midori-view.c:848
 #, c-format
 msgid "The page '%s' couldn't be loaded."
 msgstr "ページ '%s' を読み込めませんでした"
 
-#. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
-#. so reloading via Javascript works but not via API calls.
-#: ../midori/midori-view.c:783
-#: ../midori/midori-view.c:3021
-#: ../extensions/feed-panel/main.c:112
-msgid "Error"
-msgstr "エラー"
-
-#: ../midori/midori-view.c:786
+#: ../midori/midori-view.c:853
 msgid "Try again"
 msgstr "再試行"
 
 #. i18n: The title of the 404 - Not found error page
-#. Error pages are special, we want to try loading the destination
-#. again, not the error page which isn't even a proper page
-#: ../midori/midori-view.c:818
-#: ../midori/midori-view.c:3025
+#: ../midori/midori-view.c:886
 #, c-format
 msgid "Not found - %s"
 msgstr "ページが見つかりません - %s"
 
-#: ../midori/midori-view.c:1210
+#: ../midori/midori-view.c:1100
+#: ../midori/midori-view.c:1813
+#, c-format
+msgid "Send a message to %s"
+msgstr "メッセージを送信します 宛先: %s"
+
+#: ../midori/midori-view.c:1652
+#: ../midori/midori-view.c:1715
 msgid "Open _Link"
 msgstr "リンクを開く(_L)"
 
-#: ../midori/midori-view.c:1212
+#: ../midori/midori-view.c:1655
+#: ../midori/midori-view.c:1717
 msgid "Open Link in New _Tab"
 msgstr "リンクを新しいタブで開く(_T)"
 
-#: ../midori/midori-view.c:1229
+#: ../midori/midori-view.c:1658
+#: ../midori/midori-view.c:1724
 msgid "Open Link in New _Window"
 msgstr "リンクを新しいウィンドウで開く(_W)"
 
-#: ../midori/midori-view.c:1235
-msgid "_Download Link destination"
-msgstr "ã\83ªã\83³ã\82¯å\85\88ã\82\92ã\83\80ã\82¦ã\83³ã\83­ã\83¼ã\83\89(_D)"
+#: ../midori/midori-view.c:1661
+msgid "_Copy Link destination"
+msgstr "ã\83ªã\83³ã\82¯å\85\88ã\82\92ã\82³ã\83\94ã\83¼(_C)"
 
-#: ../midori/midori-view.c:1241
+#: ../midori/midori-view.c:1664
+#: ../midori/midori-view.c:1736
 msgid "_Save Link destination"
 msgstr "リンク先を保存(_S)"
 
-#: ../midori/midori-view.c:1250
+#: ../midori/midori-view.c:1665
+#: ../midori/midori-view.c:1730
+msgid "_Download Link destination"
+msgstr "リンク先をダウンロード(_D)"
+
+#: ../midori/midori-view.c:1669
+#: ../midori/midori-view.c:1705
+#: ../midori/midori-view.c:1741
 msgid "Download with Download _Manager"
 msgstr "ダウンロードマネージャでダウンロード(_M)"
 
-#: ../midori/midori-view.c:1279
+#: ../midori/midori-view.c:1681
+msgid "Open _Image in New Tab"
+msgstr "画像を新しいタブで開く(_I)"
+
+#: ../midori/midori-view.c:1684
+msgid "Open _Image in New Window"
+msgstr "画像を新しいウィンドウで開く(_I)"
+
+#: ../midori/midori-view.c:1687
+msgid "Copy Image _Address"
+msgstr "画像のアドレスをコピー(_A)"
+
+#: ../midori/midori-view.c:1690
+msgid "Save I_mage"
+msgstr "画像を保存(_M)"
+
+#: ../midori/midori-view.c:1691
+msgid "Download I_mage"
+msgstr "画像をダウンロード(_M)"
+
+#: ../midori/midori-view.c:1698
+msgid "Copy Video _Address"
+msgstr "動画のアドレスをコピー(_A)"
+
+#: ../midori/midori-view.c:1701
+msgid "Save _Video"
+msgstr "動画を保存(_V)"
+
+#: ../midori/midori-view.c:1701
+msgid "Download _Video"
+msgstr "動画をダウンロード(_V)"
+
+#: ../midori/midori-view.c:1761
 msgid "Search _with"
 msgstr "検索(_W)"
 
-#: ../midori/midori-view.c:1311
+#: ../midori/midori-view.c:1789
+#: ../midori/midori-view.c:1800
 msgid "_Search the Web"
 msgstr "ウェブで検索(_S)"
 
-#: ../midori/midori-view.c:1321
+#: ../midori/midori-view.c:1821
 msgid "Open Address in New _Tab"
 msgstr "アドレスを新しいタブで開く(_T)"
 
-#: ../midori/midori-view.c:1499
+#: ../midori/midori-view.c:2030
 msgid "Open or download file"
 msgstr "ファイルを開きますか、保存しますか?"
 
-#: ../midori/midori-view.c:1516
+#: ../midori/midori-view.c:2047
 #, c-format
 msgid "File Type: '%s'"
 msgstr "ファイルタイプ: '%s'"
 
-#: ../midori/midori-view.c:1519
+#: ../midori/midori-view.c:2050
 #, c-format
 msgid "File Type: %s ('%s')"
 msgstr "ファイルタイプ: %s ('%s')"
 
 #. i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz"
-#: ../midori/midori-view.c:1523
+#: ../midori/midori-view.c:2054
 #, c-format
 msgid "Open %s"
 msgstr "%s を開く"
 
-#: ../midori/midori-view.c:1962
+#: ../midori/midori-view.c:2567
 #, c-format
 msgid "Inspect page - %s"
 msgstr "ページの調査 - %s"
 
-#: ../midori/midori-view.c:2154
+#: ../midori/midori-view.c:2766
 msgid "Speed dial"
 msgstr "スピードダイアル"
 
-#: ../midori/midori-view.c:2155
+#: ../midori/midori-view.c:2767
 msgid "Click to add a shortcut"
 msgstr "クリックするとショートカットを追加できます"
 
-#: ../midori/midori-view.c:2156
+#: ../midori/midori-view.c:2768
 msgid "Enter shortcut address"
 msgstr "ショートカットのアドレスを入力してください"
 
-#: ../midori/midori-view.c:2157
+#: ../midori/midori-view.c:2769
 msgid "Enter shortcut title"
 msgstr "ショートカットの名前を入力してください"
 
-#: ../midori/midori-view.c:2158
+#: ../midori/midori-view.c:2770
 msgid "Are you sure you want to delete this shortcut?"
 msgstr "このショートカットを削除してもよろしいですか?"
 
-#: ../midori/midori-view.c:2188
+#: ../midori/midori-view.c:2800
 #, c-format
 msgid "Document cannot be displayed"
 msgstr "ドキュメントを表示できません"
 
-#: ../midori/midori-view.c:2205
+#: ../midori/midori-view.c:2817
 #, c-format
 msgid "No documentation installed"
 msgstr "ドキュメントはインストールされていません"
 
-#: ../midori/midori-view.c:2330
+#: ../midori/midori-view.c:2942
 msgid "Blank page"
 msgstr "空白ページ"
 
-#: ../midori/midori-view.c:2559
-#: ../midori/sokoke.c:865
+#: ../midori/midori-view.c:3171
+#: ../midori/sokoke.c:968
 msgid "New _Tab"
 msgstr "新しいタブ(_T)"
 
-#: ../midori/midori-view.c:2573
+#: ../midori/midori-view.c:3185
 msgid "_Duplicate Tab"
 msgstr "タブの複製(_D)"
 
-#: ../midori/midori-view.c:2578
+#: ../midori/midori-view.c:3190
 msgid "_Restore Tab"
 msgstr "タブの復元(_R)"
 
-#: ../midori/midori-view.c:2578
+#: ../midori/midori-view.c:3190
 msgid "_Minimize Tab"
 msgstr "タブの最小化(_M)"
 
+#: ../midori/midori-view.c:3749
+msgid "Print background images"
+msgstr "背景画像を印刷する"
+
+# tooltip
+#: ../midori/midori-view.c:3750
+msgid "Whether background images should be printed"
+msgstr "印刷するときに背景画像も印刷します"
+
+#: ../midori/midori-view.c:3794
+#: ../midori/midori-preferences.c:489
+msgid "Features"
+msgstr "機能"
+
 #: ../midori/midori-preferences.c:91
 #, c-format
 msgid "Preferences for %s"
 msgstr "%s の設定"
 
 #. Page "General"
-#: ../midori/midori-preferences.c:398
+#: ../midori/midori-preferences.c:404
 msgid "General"
 msgstr "一般"
 
-#: ../midori/midori-preferences.c:399
+#: ../midori/midori-preferences.c:405
 msgid "Startup"
 msgstr "起動"
 
 # tooltip
-#: ../midori/midori-preferences.c:415
+#: ../midori/midori-preferences.c:421
 msgid "Use current page as homepage"
 msgstr "現在のページをホームページにします"
 
-#: ../midori/midori-preferences.c:425
+#: ../midori/midori-preferences.c:431
 #: ../panels/midori-transfers.c:88
 msgid "Transfers"
 msgstr "転送"
 
 #. Page "Appearance"
-#: ../midori/midori-preferences.c:440
+#: ../midori/midori-preferences.c:445
 msgid "Appearance"
 msgstr "外観"
 
-#: ../midori/midori-preferences.c:441
+#: ../midori/midori-preferences.c:446
 msgid "Font settings"
 msgstr "フォント設定"
 
-#: ../midori/midori-preferences.c:443
+#: ../midori/midori-preferences.c:448
 msgid "Default Font Family"
 msgstr "デフォルトフォントファミリ"
 
 # tooltip
-#: ../midori/midori-preferences.c:447
+#: ../midori/midori-preferences.c:452
 msgid "The default font family used to display text"
 msgstr "文字表示で使用するデフォルトのフォントファミリを指定します"
 
 # tooltip
-#: ../midori/midori-preferences.c:450
+#: ../midori/midori-preferences.c:455
 msgid "The default font size used to display text"
 msgstr "文字表示で使用するデフォルトのフォントサイズを指定します"
 
-#: ../midori/midori-preferences.c:453
+#: ../midori/midori-preferences.c:458
 msgid "Fixed-width Font Family"
 msgstr "等幅フォントファミリ"
 
 # tooltip
-#: ../midori/midori-preferences.c:457
+#: ../midori/midori-preferences.c:462
 msgid "The font family used to display fixed-width text"
 msgstr "等幅文字表示で使用するフォントファミリを指定します"
 
 # tooltip
-#: ../midori/midori-preferences.c:460
+#: ../midori/midori-preferences.c:465
 msgid "The font size used to display fixed-width text"
 msgstr "等幅文字表示で使用するフォントのサイズを指定します"
 
-#: ../midori/midori-preferences.c:463
+#: ../midori/midori-preferences.c:468
 msgid "Minimum Font Size"
 msgstr "最小フォントサイズ"
 
 # tooltip
-#: ../midori/midori-preferences.c:466
+#: ../midori/midori-preferences.c:471
 msgid "The minimum font size used to display text"
 msgstr "文字表示で使用する最小のフォントサイズを指定します"
 
-#: ../midori/midori-preferences.c:473
+#: ../midori/midori-preferences.c:478
 msgid "Encoding"
 msgstr "エンコーディング"
 
 # tooltip
-#: ../midori/midori-preferences.c:476
+#: ../midori/midori-preferences.c:481
 msgid "The character encoding to use by default"
 msgstr "デフォルトで使用する文字エンコーディングです"
 
 #. Page "Behavior"
-#: ../midori/midori-preferences.c:483
+#: ../midori/midori-preferences.c:488
 msgid "Behavior"
 msgstr "振る舞い"
 
-#: ../midori/midori-preferences.c:484
-msgid "Features"
-msgstr "機能"
-
-#: ../midori/midori-preferences.c:487
+#: ../midori/midori-preferences.c:492
 #: ../extensions/statusbar-features.c:88
 msgid "Load images automatically"
 msgstr "画像を自動的に読み込む"
 
 # tooltip
-#: ../midori/midori-preferences.c:488
+#: ../midori/midori-preferences.c:493
 msgid "Load and display images automatically"
 msgstr "画像を自動的に読み込んで表示します"
 
-#: ../midori/midori-preferences.c:491
+#: ../midori/midori-preferences.c:501
 msgid "Shrink images automatically"
 msgstr "画像を自動的に縮小する"
 
 # tooltip
-#: ../midori/midori-preferences.c:492
+#: ../midori/midori-preferences.c:502
 msgid "Automatically shrink standalone images to fit"
 msgstr "画像を単独表示するときに自動的に縮小します"
 
-#: ../midori/midori-preferences.c:495
-msgid "Print background images"
-msgstr "背景画像を印刷する"
-
-# tooltip
-#: ../midori/midori-preferences.c:496
-msgid "Whether background images should be printed"
-msgstr "印刷するときに背景画像も印刷します"
-
-#: ../midori/midori-preferences.c:499
-msgid "Resizable text areas"
-msgstr "可変サイズのテキストエリアにする"
-
-# tooltip
-#: ../midori/midori-preferences.c:500
-msgid "Whether text areas are resizable"
-msgstr "テキストエリアのサイズ変更を可能にします"
-
-#: ../midori/midori-preferences.c:503
+#: ../midori/midori-preferences.c:509
 #: ../extensions/statusbar-features.c:100
 msgid "Enable scripts"
 msgstr "スクリプトを有効にする"
 
 # tooltip
-#: ../midori/midori-preferences.c:504
+#: ../midori/midori-preferences.c:510
 msgid "Enable embedded scripting languages"
 msgstr "組み込みスクリプト言語を有効にします"
 
-#: ../midori/midori-preferences.c:507
+#: ../midori/midori-preferences.c:513
 #: ../extensions/statusbar-features.c:112
 msgid "Enable Netscape plugins"
 msgstr "Netscape プラグインを有効にする"
 
 # tooltip
-#: ../midori/midori-preferences.c:508
+#: ../midori/midori-preferences.c:514
 msgid "Enable embedded Netscape plugin objects"
 msgstr "組み込み Netscape プラグインオブジェクトを有効にします"
 
-#: ../midori/midori-preferences.c:511
+#: ../midori/midori-preferences.c:517
 msgid "Enforce 96 dots per inch"
 msgstr "強制的に 96DPI にする"
 
 # tooltip
-#: ../midori/midori-preferences.c:512
+#: ../midori/midori-preferences.c:518
 msgid "Enforce a video dot density of 96 DPI"
 msgstr "ドット密度を強制的に 96DPI にします"
 
-#: ../midori/midori-preferences.c:515
+#: ../midori/midori-preferences.c:521
 msgid "Enable developer tools"
 msgstr "開発ツールを有効にする"
 
 # tooltip
-#: ../midori/midori-preferences.c:516
+#: ../midori/midori-preferences.c:522
 msgid "Enable special extensions for developers"
 msgstr "開発者用特殊エクステンションを有効にします"
 
-#: ../midori/midori-preferences.c:523
+#: ../midori/midori-preferences.c:529
 msgid "Spell Checking"
 msgstr "スペルチェック"
 
-#: ../midori/midori-preferences.c:526
+#: ../midori/midori-preferences.c:532
 msgid "Enable Spell Checking"
 msgstr "スペルチェックを有効にする"
 
 # tooltip
-#: ../midori/midori-preferences.c:527
+#: ../midori/midori-preferences.c:533
 msgid "Enable spell checking while typing"
 msgstr "キー入力中のスペルチェックを有効にします"
 
 # tooltip
 #. i18n: The example should be adjusted to contain a good local default
-#: ../midori/midori-preferences.c:531
+#: ../midori/midori-preferences.c:537
 msgid "A comma separated list of languages to be used for spell checking, for example \"en_GB,de_DE\""
 msgstr "スペルチェックを行う言語をカンマで区切って指定します。例 \"en,de_DE\""
 
 #. Page "Interface"
-#: ../midori/midori-preferences.c:536
+#: ../midori/midori-preferences.c:542
 msgid "Interface"
 msgstr "インターフェイス"
 
-#: ../midori/midori-preferences.c:537
+#: ../midori/midori-preferences.c:543
 msgid "Navigationbar"
 msgstr "ナビゲーションバー"
 
-#: ../midori/midori-preferences.c:548
+#: ../midori/midori-preferences.c:554
 msgid "Browsing"
 msgstr "ブラウジング"
 
 #. Page "Applications"
-#: ../midori/midori-preferences.c:574
+#: ../midori/midori-preferences.c:578
 msgid "Applications"
 msgstr "アプリケーション"
 
-#: ../midori/midori-preferences.c:575
+#: ../midori/midori-preferences.c:579
 msgid "External applications"
 msgstr "外部アプリケーション"
 
 #. Page "Network"
-#: ../midori/midori-preferences.c:621
-#: ../midori/midori-preferences.c:622
+#: ../midori/midori-preferences.c:625
+#: ../midori/midori-preferences.c:626
 msgid "Network"
 msgstr "ネットワーク"
 
-#: ../midori/midori-preferences.c:649
+#: ../midori/midori-preferences.c:653
 msgid "MB"
 msgstr "MB"
 
 #. Page "Privacy"
-#: ../midori/midori-preferences.c:654
+#: ../midori/midori-preferences.c:658
 msgid "Privacy"
 msgstr "プライバシー"
 
-#: ../midori/midori-preferences.c:655
+#: ../midori/midori-preferences.c:659
 msgid "Web Cookies"
 msgstr "ウェブ Cookie"
 
-#: ../midori/midori-preferences.c:668
-#: ../midori/midori-preferences.c:678
+#: ../midori/midori-preferences.c:672
+#: ../midori/midori-preferences.c:682
 msgid "days"
 msgstr "日"
 
@@ -1906,61 +1992,66 @@ msgstr "検索エンジンの管理"
 msgid "Use as _default"
 msgstr "デフォルトで使う(_D)"
 
-#: ../midori/sokoke.c:162
-#: ../midori/sokoke.c:174
+#: ../midori/sokoke.c:166
+#: ../midori/sokoke.c:178
 msgid "Could not run external program."
 msgstr "外部プログラムを実行できませんでした。"
 
-#: ../midori/sokoke.c:856
+#: ../midori/sokoke.c:960
 msgid "_Bookmark"
 msgstr "ブックマーク(_B)"
 
-#: ../midori/sokoke.c:858
+#: ../midori/sokoke.c:962
 msgid "Add Boo_kmark"
 msgstr "ブックマークに追加(_K)"
 
-#: ../midori/sokoke.c:859
+#: ../midori/sokoke.c:963
 msgid "_Console"
 msgstr "コンソール(_C)"
 
-#: ../midori/sokoke.c:860
+#: ../midori/sokoke.c:964
 msgid "_Extensions"
 msgstr "エクステンション(_E)"
 
-#: ../midori/sokoke.c:861
+#: ../midori/sokoke.c:965
 msgid "_History"
 msgstr "履歴(_H)"
 
-#: ../midori/sokoke.c:862
+#: ../midori/sokoke.c:966
 msgid "_Homepage"
 msgstr "ホームページ(_H)"
 
-#: ../midori/sokoke.c:863
+#: ../midori/sokoke.c:967
 msgid "_Userscripts"
 msgstr "ユーザスクリプト(_U)"
 
-#: ../midori/sokoke.c:864
-msgid "User_styles"
-msgstr "ユーザスタイル(_S)"
-
-#: ../midori/sokoke.c:866
+#: ../midori/sokoke.c:969
 msgid "_Transfers"
 msgstr "転送(_T)"
 
-#: ../midori/sokoke.c:867
+#: ../midori/sokoke.c:970
 msgid "Netscape p_lugins"
 msgstr "Netscape プラグイン(_L)"
 
-#: ../panels/midori-addons.c:95
-#: ../panels/midori-addons.c:141
+#: ../panels/midori-addons.c:94
+#: ../panels/midori-addons.c:139
 msgid "Userscripts"
 msgstr "ユーザスクリプト"
 
-#: ../panels/midori-addons.c:96
-#: ../panels/midori-addons.c:143
+#: ../panels/midori-addons.c:95
 msgid "Userstyles"
 msgstr "ユーザスタイル"
 
+#: ../panels/midori-addons.c:287
+#, c-format
+msgid "Copy userscripts to the folder %s and copy userstyles to the folder %s."
+msgstr "ユーザスクリプトをフォルダ %s へ、ユーザスタイルをフォルダ %s へコピーします。"
+
+#: ../panels/midori-addons.c:889
+#, c-format
+msgid "Can't monitor folder '%s': %s"
+msgstr "フォルダ '%s' をモニタできません: %s"
+
 #: ../panels/midori-bookmarks.c:108
 msgid "Bookmarks"
 msgstr "ブックマーク"
@@ -2034,19 +2125,19 @@ msgstr "昨日"
 msgid "Netscape plugins"
 msgstr "Netscape プラグイン"
 
-#: ../panels/midori-transfers.c:479
+#: ../panels/midori-transfers.c:480
 msgid "Open Destination _Folder"
 msgstr "保存先フォルダを開く(_F)"
 
-#: ../panels/midori-transfers.c:482
+#: ../panels/midori-transfers.c:483
 msgid "Copy Link Loc_ation"
-msgstr "ã\83ªã\83³ã\82¯ã\81®å ´æ\89\80ã\81®コピー(_A)"
+msgstr "ã\83ªã\83³ã\82¯ã\81®å ´æ\89\80ã\82\92コピー(_A)"
 
-#: ../katze/katze-http-auth.c:97
+#: ../katze/katze-http-auth.c:209
 msgid "Authentication Required"
 msgstr "認証が要求されました"
 
-#: ../katze/katze-http-auth.c:113
+#: ../katze/katze-http-auth.c:225
 msgid ""
 "A username and a password are required\n"
 "to open this location:"
@@ -2054,14 +2145,18 @@ msgstr ""
 "この場所を開くためにはユーザ名とパスワードが\n"
 "必要です:"
 
-#: ../katze/katze-http-auth.c:127
+#: ../katze/katze-http-auth.c:239
 msgid "Username"
 msgstr "ユーザ名"
 
-#: ../katze/katze-http-auth.c:138
+#: ../katze/katze-http-auth.c:252
 msgid "Password"
 msgstr "パスワード"
 
+#: ../katze/katze-http-auth.c:266
+msgid "_Remember password"
+msgstr "パスワードを記憶する(_R)"
+
 #: ../katze/katze-throbber.c:828
 #, c-format
 msgid "Named icon '%s' couldn't be loaded"
@@ -2076,35 +2171,40 @@ msgstr "ストックアイコン '%s' を読み込めませんでした"
 msgid "Animation frames are broken"
 msgstr "アニメーションフレームは壊れています"
 
-#: ../katze/katze-utils.c:200
-#: ../katze/katze-utils.c:407
+#: ../katze/katze-utils.c:203
+#: ../katze/katze-utils.c:420
 #, c-format
 msgid "Property '%s' is invalid for %s"
 msgstr "'%s' は %s のプロパティとして無効です"
 
-#: ../katze/katze-utils.c:235
-#: ../katze/katze-utils.c:264
+#: ../katze/katze-utils.c:238
+#: ../katze/katze-utils.c:267
 msgid "Choose file"
 msgstr "ファイルの選択"
 
-#: ../katze/katze-utils.c:250
+#: ../katze/katze-utils.c:253
 msgid "Choose folder"
 msgstr "フォルダの選択"
 
-#: ../extensions/adblock.c:167
+#: ../extensions/adblock.c:235
 msgid "Configure Advertisement filters"
 msgstr "広告フィルタの設定"
 
-#: ../extensions/adblock.c:304
+#: ../extensions/adblock.c:372
 msgid "Configure _Advertisement filters..."
 msgstr "広告フィルタの設定(_A)..."
 
-#: ../extensions/adblock.c:562
+#: ../extensions/adblock.c:704
+#, c-format
+msgid "Not available: %s required"
+msgstr "利用できません: %s が必要です"
+
+#: ../extensions/adblock.c:709
 msgid "Advertisement blocker"
 msgstr "広告ブロッカ"
 
 # description
-#: ../extensions/adblock.c:563
+#: ../extensions/adblock.c:711
 msgid "Block advertisements according to a filter list"
 msgstr "フィルタリストに登録された広告をブロックします"
 
@@ -2126,6 +2226,10 @@ msgstr "各タブにそれぞれを区別する色をつけます"
 msgid "Cookie Manager"
 msgstr "Cookie マネージャ"
 
+#: ../extensions/cookie-manager/cookie-manager-page.c:109
+msgid "Delete All"
+msgstr "すべて削除"
+
 #: ../extensions/cookie-manager/cookie-manager-page.c:111
 msgid "Deletes all shown cookies. If a filter is set, only those cookies are deleted which match the filter."
 msgstr "表示されているすべての cookie を削除します。フィルタが設定されていれば、フィルタにマッチした cookie のみ削除されます。"
@@ -2215,11 +2319,19 @@ msgstr "Cookie マネージャ(_C)"
 msgid "List, view and delete cookies"
 msgstr "Cookie の一覧や内容の表示および削除を行います"
 
-#: ../extensions/feed-panel/feed-atom.c:242
+#: ../extensions/dnsprefetch.c:143
+msgid "DNS prefetching"
+msgstr "DNS プリフェッチ"
+
+#: ../extensions/dnsprefetch.c:144
+msgid "Prefetch IP addresses of hovered links"
+msgstr "マウスポインタを置いたリンクの IP アドレスを先読みします"
+
+#: ../extensions/feed-panel/feed-atom.c:237
 msgid "Failed to find required Atom \"entry\" elements in XML data."
 msgstr "XML データ内に要求された Atom \"entry\" 要素が見つかりませんでした。"
 
-#: ../extensions/feed-panel/feed-atom.c:348
+#: ../extensions/feed-panel/feed-atom.c:343
 msgid "Failed to find required Atom \"feed\" elements in XML data."
 msgstr "XML データ内に要求された Atom \"feed\" 要素が見つかりませんでした。"
 
@@ -2246,17 +2358,17 @@ msgstr "フィードの削除"
 msgid "_Feeds"
 msgstr "フィード(_F)"
 
-#: ../extensions/feed-panel/feed-parse.c:185
+#: ../extensions/feed-panel/feed-parse.c:192
 #, c-format
 msgid "Failed to find root element in feed XML data."
 msgstr "フィード XML データ内にルート要素が見つかりませんでした。"
 
-#: ../extensions/feed-panel/feed-parse.c:225
+#: ../extensions/feed-panel/feed-parse.c:232
 #, c-format
 msgid "Unsupported feed format."
 msgstr "サポートされていないフィード形式です。"
 
-#: ../extensions/feed-panel/feed-parse.c:255
+#: ../extensions/feed-panel/feed-parse.c:262
 #, c-format
 msgid "Failed to parse XML feed: %s"
 msgstr "XML フィードの解析に失敗しました: %s"
@@ -2277,35 +2389,52 @@ msgstr "XML データ内に要求された RSS \"item\" 要素が見つかりま
 msgid "Failed to find required RSS \"channel\" elements in XML data."
 msgstr "XML データ内に要求された RSS \"channel\" 要素が見つかりませんでした。"
 
-#: ../extensions/feed-panel/main.c:114
+#: ../extensions/feed-panel/main.c:124
+msgid "Error"
+msgstr "エラー"
+
+#: ../extensions/feed-panel/main.c:126
 #, c-format
 msgid "Feed '%s' already exists"
 msgstr "フィード '%s' はすでに存在します"
 
-#: ../extensions/feed-panel/main.c:191
+#: ../extensions/feed-panel/main.c:203
 #, c-format
 msgid "Error loading feed '%s'"
 msgstr "フィード '%s' の読み込みでエラーです"
 
-#: ../extensions/feed-panel/main.c:331
-msgid "New feed"
-msgstr "新しいフィード"
-
-#: ../extensions/feed-panel/main.c:489
+#: ../extensions/feed-panel/main.c:514
 msgid "Feed Panel"
 msgstr "フィードパネル"
 
 # description
-#: ../extensions/feed-panel/main.c:490
+#: ../extensions/feed-panel/main.c:515
 msgid "Read Atom/ RSS feeds"
 msgstr "Atom/RSS フィードを購読します"
 
-#: ../extensions/mouse-gestures/main.c:236
+#: ../extensions/formhistory.c:276
+msgid "Stores history of entered form data"
+msgstr "入力されたフォームデータの履歴を記憶します"
+
+#: ../extensions/formhistory.c:280
+#, c-format
+msgid "Not available: %s"
+msgstr "利用できません: %s"
+
+#: ../extensions/formhistory.c:281
+msgid "Resource files not installed"
+msgstr "リソースファイルがインストールされていません"
+
+#: ../extensions/formhistory.c:286
+msgid "Form history filler"
+msgstr "入力フォーム履歴フィルタ"
+
+#: ../extensions/mouse-gestures/main.c:246
 msgid "Mouse Gestures"
 msgstr "マウスジェスチャ"
 
 # description
-#: ../extensions/mouse-gestures/main.c:237
+#: ../extensions/mouse-gestures/main.c:247
 msgid "Control Midori by moving the mouse"
 msgstr "マウスの操作で Midori を制御します"
 
@@ -2353,17 +2482,17 @@ msgstr "ステータスバー機能"
 msgid "Easily toggle features on web pages on and off"
 msgstr "ウェブページへの機能のオン/オフを簡単に切り換えます"
 
-#: ../extensions/tab-panel.c:371
-#: ../extensions/tab-panel.c:431
+#: ../extensions/tab-panel.c:562
+#: ../extensions/tab-panel.c:619
 msgid "Tab Panel"
 msgstr "タブパネル"
 
-#: ../extensions/tab-panel.c:415
+#: ../extensions/tab-panel.c:603
 msgid "T_ab Panel"
 msgstr "タブパネル(_A)"
 
 # description
-#: ../extensions/tab-panel.c:432
+#: ../extensions/tab-panel.c:620
 msgid "Show tabs in a vertical panel"
 msgstr "タブを縦のパネルに表示します"
 
@@ -2387,29 +2516,21 @@ msgstr "表示するアイテム"
 msgid "Customize _Toolbar..."
 msgstr "ツールバーのカスタマイズ(_T)..."
 
-#: ../extensions/toolbar-editor.c:611
+#: ../extensions/toolbar-editor.c:612
 msgid "Toolbar Editor"
 msgstr "ツールバーエディタ"
 
 # description
-#: ../extensions/toolbar-editor.c:612
+#: ../extensions/toolbar-editor.c:614
 msgid "Easily edit the toolbar layout"
 msgstr "ツールバーのレイアウトを簡単に編集できます"
 
-#~ msgid "_Closed Tabs and Windows"
-#~ msgstr "閉じたタブとウィンドウ(_C)"
-#~ msgid "Last open pages"
-#~ msgstr "最後に開いたページ"
-#~ msgid "Both"
-#~ msgstr "アイコンと文字"
-#~ msgid "Both horizontal"
-#~ msgstr "アイコンと文字 (横方向)"
-#~ msgid "Load on Startup"
-#~ msgstr "起動時に読み込む"
-#~ msgid "Download Folder"
-#~ msgstr "ダウンロードフォルダ"
-#~ msgid "Configure _Toolbar..."
-#~ msgstr "ツールバーの設定(_T)..."
-#~ msgid "_Enable"
-#~ msgstr "有効(_E)"
+#: ../extensions/toolbar-editor.c:617
+msgid "Not available on this platform"
+msgstr "このプラットフォームでは利用できません"
+
+#~ msgid "User_styles"
+#~ msgstr "ユーザスタイル(_S)"
+#~ msgid "Resizable text areas"
+#~ msgstr "可変サイズのテキストエリアにする"
 
diff --git a/po/ko.po b/po/ko.po
new file mode 100644 (file)
index 0000000..2a079db
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,2197 @@
+# Korean translations for midori package.
+# Copyright (C) 2009 THE midori'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the midori package.
+# Seo Sanghyeon <sanxiyn@gmail.com> 2009
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: midori 0.1.10\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-09-06 00:44+0200\n"
+"PO-Revision-Date: 2009-24-09 09:10+0200\n"
+"Last-Translator: Seo Sanghyeon <sanxiyn@gmail.com>\n"
+"Language-Team: Korean <ko@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: ../data/midori.desktop.in.h:1
+msgid "Lightweight web browser"
+msgstr ""
+
+#: ../data/midori.desktop.in.h:2 ../midori/main.c:1435 ../midori/main.c:1609
+#: ../midori/main.c:1617 ../midori/main.c:1628
+#: ../midori/midori-websettings.c:287
+msgid "Midori"
+msgstr ""
+
+#: ../data/midori.desktop.in.h:3
+msgid "Web Browser"
+msgstr ""
+
+#: ../midori/main.c:102
+#, c-format
+msgid "The configuration couldn't be loaded: %s\n"
+msgstr ""
+
+#: ../midori/main.c:157
+#, c-format
+msgid "Value '%s' is invalid for %s"
+msgstr ""
+
+#: ../midori/main.c:164 ../midori/main.c:245
+#, c-format
+msgid "Invalid configuration value '%s'"
+msgstr ""
+
+#: ../midori/main.c:369
+#, c-format
+msgid "Failed to open database: %s\n"
+msgstr ""
+
+#: ../midori/main.c:401
+#, c-format
+msgid "Failed to execute database statement: %s\n"
+msgstr ""
+
+#: ../midori/main.c:455
+#, c-format
+msgid "Failed to remove history item: %s\n"
+msgstr ""
+
+#: ../midori/main.c:479
+#, c-format
+msgid "Failed to clear history: %s\n"
+msgstr ""
+
+#: ../midori/main.c:502 ../midori/main.c:536 ../midori/main.c:552
+#, c-format
+msgid "Failed to add history item: %s\n"
+msgstr ""
+
+#. i18n: Couldn't remove items that are older than n days
+#: ../midori/main.c:731
+#, c-format
+msgid "Failed to remove old history items: %s\n"
+msgstr ""
+
+#: ../midori/main.c:760
+#, c-format
+msgid "The configuration couldn't be saved. %s"
+msgstr ""
+
+#: ../midori/main.c:798
+#, c-format
+msgid "The search engines couldn't be saved. %s"
+msgstr ""
+
+#: ../midori/main.c:817 ../midori/main.c:845 ../midori/main.c:874
+#, c-format
+msgid "The bookmarks couldn't be saved. %s"
+msgstr ""
+
+#. i18n: Trash, or wastebin, containing closed tabs
+#: ../midori/main.c:897 ../midori/main.c:920
+#, c-format
+msgid "The trash couldn't be saved. %s"
+msgstr ""
+
+#: ../midori/main.c:993
+#, c-format
+msgid "The session couldn't be saved. %s"
+msgstr ""
+
+#: ../midori/main.c:1190
+msgid ""
+"Midori seems to have crashed the last time it was opened. If this happened "
+"repeatedly, try one of the following options to solve the problem."
+msgstr ""
+
+#: ../midori/main.c:1205
+msgid "Modify _preferences"
+msgstr ""
+
+#: ../midori/main.c:1209
+msgid "Reset the last _session"
+msgstr ""
+
+#: ../midori/main.c:1214
+msgid "Disable all _extensions"
+msgstr ""
+
+#: ../midori/main.c:1435
+msgid "No filename specified"
+msgstr ""
+
+#: ../midori/main.c:1458
+msgid "An unknown error occured."
+msgstr ""
+
+#: ../midori/main.c:1490
+#, c-format
+msgid "Snapshot saved to: %s\n"
+msgstr ""
+
+#: ../midori/main.c:1539
+msgid "Run ADDRESS as a web application"
+msgstr ""
+
+#: ../midori/main.c:1539
+msgid "ADDRESS"
+msgstr ""
+
+#: ../midori/main.c:1541
+msgid "Use FOLDER as configuration folder"
+msgstr ""
+
+#: ../midori/main.c:1541
+msgid "FOLDER"
+msgstr ""
+
+#: ../midori/main.c:1543
+msgid "Run the specified filename as javascript"
+msgstr ""
+
+#: ../midori/main.c:1546
+msgid "Take a snapshot of the specified URI"
+msgstr ""
+
+#: ../midori/main.c:1549
+msgid "Execute the specified command"
+msgstr ""
+
+#: ../midori/main.c:1551
+msgid "Display program version"
+msgstr ""
+
+#: ../midori/main.c:1553
+msgid "Addresses"
+msgstr ""
+
+#: ../midori/main.c:1606
+msgid "[Addresses]"
+msgstr ""
+
+#: ../midori/main.c:1629
+msgid "Please report comments, suggestions and bugs to:"
+msgstr ""
+
+#: ../midori/main.c:1631
+msgid "Check for new versions at:"
+msgstr ""
+
+#: ../midori/main.c:1711
+msgid "The specified configuration folder is invalid."
+msgstr ""
+
+#: ../midori/main.c:1751
+msgid "An instance of Midori is already running but not responding.\n"
+msgstr ""
+
+#: ../midori/main.c:1795
+#, c-format
+msgid "The search engines couldn't be loaded. %s\n"
+msgstr ""
+
+#: ../midori/main.c:1813
+#, c-format
+msgid "The bookmarks couldn't be loaded: %s\n"
+msgstr ""
+
+#: ../midori/main.c:1828
+#, c-format
+msgid "The session couldn't be loaded: %s\n"
+msgstr ""
+
+#: ../midori/main.c:1841
+#, c-format
+msgid "The trash couldn't be loaded: %s\n"
+msgstr ""
+
+#: ../midori/main.c:1854
+#, c-format
+msgid "The history couldn't be loaded: %s\n"
+msgstr ""
+
+#: ../midori/main.c:1866
+msgid "The following errors occured:"
+msgstr ""
+
+#: ../midori/main.c:1882
+msgid "_Ignore"
+msgstr ""
+
+#: ../midori/midori-array.c:251
+msgid "File not found."
+msgstr ""
+
+#: ../midori/midori-array.c:260 ../midori/midori-array.c:270
+msgid "Malformed document."
+msgstr ""
+
+#: ../midori/midori-array.c:432 ../midori/sokoke.c:699
+#, c-format
+msgid "Writing failed."
+msgstr ""
+
+#: ../midori/midori-browser.c:315 ../midori/midori-browser.c:4327
+#: ../midori/midori-browser.c:4333
+msgid "Reload the current page"
+msgstr ""
+
+#: ../midori/midori-browser.c:326 ../midori/midori-browser.c:4330
+msgid "Stop loading the current page"
+msgstr ""
+
+#: ../midori/midori-browser.c:417
+#, c-format
+msgid "%d%% loaded"
+msgstr ""
+
+#: ../midori/midori-browser.c:442
+#, c-format
+msgid "Unexpected action '%s'."
+msgstr ""
+
+#: ../midori/midori-browser.c:627
+msgid "New folder"
+msgstr ""
+
+#: ../midori/midori-browser.c:627
+msgid "Edit folder"
+msgstr ""
+
+#: ../midori/midori-browser.c:629
+msgid "New bookmark"
+msgstr ""
+
+#: ../midori/midori-browser.c:629
+msgid "Edit bookmark"
+msgstr ""
+
+#: ../midori/midori-browser.c:659
+msgid "_Title:"
+msgstr ""
+
+#: ../midori/midori-browser.c:672 ../midori/midori-searchaction.c:952
+msgid "_Description:"
+msgstr ""
+
+#: ../midori/midori-browser.c:691 ../midori/midori-searchaction.c:966
+#: ../extensions/feed-panel/main.c:368
+msgid "_Address:"
+msgstr ""
+
+#: ../midori/midori-browser.c:710
+msgid "_Folder:"
+msgstr ""
+
+#: ../midori/midori-browser.c:715 ../midori/midori-browser.c:756
+msgid "Toplevel folder"
+msgstr ""
+
+#: ../midori/midori-browser.c:834
+msgid "Save file as"
+msgstr ""
+
+#: ../midori/midori-browser.c:1211 ../panels/midori-transfers.c:272
+#, c-format
+msgid "%s of %s"
+msgstr ""
+
+#: ../midori/midori-browser.c:1248
+#, c-format
+msgid "The file '<b>%s</b>' has been downloaded."
+msgstr ""
+
+#: ../midori/midori-browser.c:1252
+msgid "Transfer completed"
+msgstr ""
+
+#: ../midori/midori-browser.c:1393
+msgid "Save file"
+msgstr ""
+
+#: ../midori/midori-browser.c:2060
+msgid "Open file"
+msgstr ""
+
+#: ../midori/midori-browser.c:3268 ../extensions/feed-panel/main.c:356
+msgid "New feed"
+msgstr ""
+
+#: ../midori/midori-browser.c:3523 ../panels/midori-bookmarks.c:781
+#: ../panels/midori-history.c:812
+msgid "Open all in _Tabs"
+msgstr ""
+
+#: ../midori/midori-browser.c:3530 ../panels/midori-bookmarks.c:787
+#: ../panels/midori-history.c:818 ../extensions/feed-panel/feed-panel.c:542
+msgid "Open in New _Tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:3533 ../panels/midori-bookmarks.c:789
+#: ../panels/midori-history.c:820 ../extensions/feed-panel/feed-panel.c:544
+msgid "Open in New _Window"
+msgstr ""
+
+#: ../midori/midori-browser.c:3843
+msgid "Clear Private Data"
+msgstr ""
+
+#: ../midori/midori-browser.c:3847
+msgid "_Clear private data"
+msgstr ""
+
+#: ../midori/midori-browser.c:3860
+msgid "Clear the following data:"
+msgstr ""
+
+#: ../midori/midori-browser.c:3870 ../midori/midori-preferences.c:665
+#: ../panels/midori-history.c:108
+msgid "History"
+msgstr "방문 기록"
+
+#: ../midori/midori-browser.c:3875
+msgid "Cookies"
+msgstr ""
+
+#: ../midori/midori-browser.c:3880
+msgid "'Flash' Cookies"
+msgstr ""
+
+#: ../midori/midori-browser.c:3885
+msgid "Website icons"
+msgstr ""
+
+#: ../midori/midori-browser.c:3890 ../midori/sokoke.c:873
+msgid "_Closed Tabs"
+msgstr "최근에 닫은 탭(_C)"
+
+#: ../midori/midori-browser.c:3898
+msgid "Clear private data when _quitting Midori"
+msgstr ""
+
+#: ../midori/midori-browser.c:3979
+msgid "A lightweight web browser."
+msgstr ""
+
+#: ../midori/midori-browser.c:3995
+msgid "translator-credits"
+msgstr "Seo Sanghyeon <sanxiyn@gmail.com>"
+
+#: ../midori/midori-browser.c:4261
+msgid "_File"
+msgstr "파일(_F)"
+
+#: ../midori/midori-browser.c:4263 ../midori/sokoke.c:874
+msgid "New _Window"
+msgstr "새 창(_W)"
+
+#: ../midori/midori-browser.c:4264
+msgid "Open a new window"
+msgstr ""
+
+#: ../midori/midori-browser.c:4267
+msgid "Open a new tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4270
+msgid "Open a file"
+msgstr ""
+
+#: ../midori/midori-browser.c:4273
+msgid "Save to a file"
+msgstr ""
+
+#: ../midori/midori-browser.c:4275
+msgid "Add to Speed _dial"
+msgstr ""
+
+#: ../midori/midori-browser.c:4276
+msgid "Add shortcut to speed dial"
+msgstr ""
+
+#: ../midori/midori-browser.c:4278
+msgid "_Close Tab"
+msgstr "탭 닫기(_C)"
+
+#: ../midori/midori-browser.c:4279
+msgid "Close the current tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4281
+msgid "C_lose Window"
+msgstr "창 닫기(_L)"
+
+#: ../midori/midori-browser.c:4282
+msgid "Close this window"
+msgstr ""
+
+#: ../midori/midori-browser.c:4285
+msgid "Print the current page"
+msgstr ""
+
+#: ../midori/midori-browser.c:4288
+msgid "Quit the application"
+msgstr ""
+
+#: ../midori/midori-browser.c:4290
+msgid "_Edit"
+msgstr "편집(_E)"
+
+#: ../midori/midori-browser.c:4293
+msgid "Cut the selected text"
+msgstr ""
+
+#: ../midori/midori-browser.c:4296 ../midori/midori-browser.c:4299
+msgid "Copy the selected text"
+msgstr ""
+
+#: ../midori/midori-browser.c:4302
+msgid "Paste text from the clipboard"
+msgstr ""
+
+#: ../midori/midori-browser.c:4305
+msgid "Delete the selected text"
+msgstr ""
+
+#: ../midori/midori-browser.c:4308
+msgid "Select all text"
+msgstr ""
+
+#: ../midori/midori-browser.c:4311
+msgid "Find a word or phrase in the page"
+msgstr ""
+
+#: ../midori/midori-browser.c:4313
+msgid "Find _Next"
+msgstr "다시 찾기(_N)"
+
+#: ../midori/midori-browser.c:4314
+msgid "Find the next occurrence of a word or phrase"
+msgstr ""
+
+#: ../midori/midori-browser.c:4316
+msgid "Find _Previous"
+msgstr ""
+
+#: ../midori/midori-browser.c:4317
+msgid "Find the previous occurrence of a word or phrase"
+msgstr ""
+
+#: ../midori/midori-browser.c:4321
+msgid "Configure the application preferences"
+msgstr ""
+
+#: ../midori/midori-browser.c:4323
+msgid "_View"
+msgstr "보기(_V)"
+
+#: ../midori/midori-browser.c:4324
+msgid "_Toolbars"
+msgstr ""
+
+#: ../midori/midori-browser.c:4336
+msgid "Increase the zoom level"
+msgstr ""
+
+#: ../midori/midori-browser.c:4339
+msgid "Decrease the zoom level"
+msgstr ""
+
+#: ../midori/midori-browser.c:4342
+msgid "Reset the zoom level"
+msgstr ""
+
+#: ../midori/midori-browser.c:4343
+msgid "_Encoding"
+msgstr "문자 인코딩(_E)"
+
+#: ../midori/midori-browser.c:4345
+msgid "View So_urce"
+msgstr "소스 보기(_U)"
+
+#: ../midori/midori-browser.c:4346
+msgid "View the source code of the page"
+msgstr ""
+
+#: ../midori/midori-browser.c:4348
+msgid "View Selection Source"
+msgstr ""
+
+#: ../midori/midori-browser.c:4349
+msgid "View the source code of the selection"
+msgstr ""
+
+#: ../midori/midori-browser.c:4353
+msgid "Toggle fullscreen view"
+msgstr ""
+
+#: ../midori/midori-browser.c:4355
+msgid "_Go"
+msgstr "이동(_G)"
+
+#: ../midori/midori-browser.c:4358
+msgid "Go back to the previous page"
+msgstr ""
+
+#: ../midori/midori-browser.c:4361
+msgid "Go forward to the next page"
+msgstr ""
+
+#: ../midori/midori-browser.c:4364
+msgid "Go to your homepage"
+msgstr ""
+
+#: ../midori/midori-browser.c:4366
+msgid "Empty Trash"
+msgstr ""
+
+#: ../midori/midori-browser.c:4367
+msgid "Delete the contents of the trash"
+msgstr ""
+
+#: ../midori/midori-browser.c:4369
+msgid "Undo _Close Tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4370
+msgid "Open the last closed tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4374 ../panels/midori-bookmarks.c:231
+msgid "Add a new bookmark"
+msgstr ""
+
+#: ../midori/midori-browser.c:4376
+msgid "Add a new _folder"
+msgstr ""
+
+#: ../midori/midori-browser.c:4377
+msgid "Add a new bookmark folder"
+msgstr ""
+
+#: ../midori/midori-browser.c:4379 ../midori/midori-searchaction.c:497
+msgid "_Manage Search Engines"
+msgstr ""
+
+#: ../midori/midori-browser.c:4380
+msgid "Add, edit and remove search engines..."
+msgstr ""
+
+#: ../midori/midori-browser.c:4383
+msgid "_Clear Private Data"
+msgstr ""
+
+#: ../midori/midori-browser.c:4384
+msgid "Clear private data..."
+msgstr ""
+
+#: ../midori/midori-browser.c:4388
+msgid "_Previous Tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4389
+msgid "Switch to the previous tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4391
+msgid "_Next Tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4392
+msgid "Switch to the next tab"
+msgstr ""
+
+#: ../midori/midori-browser.c:4394
+msgid "_Help"
+msgstr "도움말(_H)"
+
+#: ../midori/midori-browser.c:4396
+msgid "_Contents"
+msgstr "도움말 목차(_C)"
+
+#: ../midori/midori-browser.c:4397
+msgid "Show the documentation"
+msgstr ""
+
+#: ../midori/midori-browser.c:4399
+msgid "_Frequent Questions"
+msgstr ""
+
+#: ../midori/midori-browser.c:4400
+msgid "Show the Frequently Asked Questions"
+msgstr ""
+
+#: ../midori/midori-browser.c:4402
+msgid "_Report a Bug"
+msgstr ""
+
+#: ../midori/midori-browser.c:4403
+msgid "Open Midori's bug tracker"
+msgstr ""
+
+#: ../midori/midori-browser.c:4406
+msgid "Show information about the program"
+msgstr ""
+
+#: ../midori/midori-browser.c:4413
+msgid "P_rivate Browsing"
+msgstr ""
+
+#: ../midori/midori-browser.c:4414
+msgid "Don't save any private data while browsing"
+msgstr ""
+
+#: ../midori/midori-browser.c:4419
+msgid "_Menubar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4420
+msgid "Show menubar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4423
+msgid "_Navigationbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4424
+msgid "Show navigationbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4427
+msgid "Side_panel"
+msgstr ""
+
+#: ../midori/midori-browser.c:4428
+msgid "Show sidepanel"
+msgstr ""
+
+#: ../midori/midori-browser.c:4431
+msgid "_Bookmarkbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4432
+msgid "Show bookmarkbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4435
+msgid "_Transferbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4436
+msgid "Show transferbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4439
+msgid "_Statusbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4440
+msgid "Show statusbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:4447
+msgid "_Automatic"
+msgstr "자동 선택(_A)"
+
+#: ../midori/midori-browser.c:4450 ../midori/midori-websettings.c:214
+msgid "Chinese (BIG5)"
+msgstr ""
+
+#. i18n: A double underscore "__" is used to prevent an unwanted mnemonic
+#: ../midori/midori-browser.c:4454
+msgid "Japanese (SHIFT__JIS)"
+msgstr ""
+
+#: ../midori/midori-browser.c:4457 ../midori/midori-websettings.c:216
+msgid "Russian (KOI8-R)"
+msgstr ""
+
+#: ../midori/midori-browser.c:4460 ../midori/midori-websettings.c:217
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: ../midori/midori-browser.c:4463 ../midori/midori-websettings.c:218
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: ../midori/midori-browser.c:4466 ../midori/midori-websettings.c:219
+#: ../midori/midori-websettings.c:291
+msgid "Custom..."
+msgstr ""
+
+#: ../midori/midori-browser.c:4907
+msgid "_Separator"
+msgstr ""
+
+#: ../midori/midori-browser.c:4914
+msgid "_Location..."
+msgstr ""
+
+#: ../midori/midori-browser.c:4916
+msgid "Open a particular location"
+msgstr ""
+
+#: ../midori/midori-browser.c:4940
+msgid "_Web Search..."
+msgstr ""
+
+#: ../midori/midori-browser.c:4942
+msgid "Run a web search"
+msgstr ""
+
+#: ../midori/midori-browser.c:4963
+msgid "Reopen a previously closed tab or window"
+msgstr ""
+
+#: ../midori/midori-browser.c:4978
+msgid "_Recently visited pages"
+msgstr ""
+
+#: ../midori/midori-browser.c:4980
+msgid "Reopen pages that you visited earlier"
+msgstr ""
+
+#: ../midori/midori-browser.c:4995 ../midori/sokoke.c:862
+msgid "_Bookmarks"
+msgstr "북마크(_B)"
+
+#: ../midori/midori-browser.c:4997
+msgid "Show the saved bookmarks"
+msgstr ""
+
+#: ../midori/midori-browser.c:5012
+msgid "_Tools"
+msgstr "도구(_T)"
+
+#: ../midori/midori-browser.c:5024
+msgid "_Window"
+msgstr "창(_W)"
+
+#: ../midori/midori-browser.c:5026
+msgid "Show a list of all open tabs"
+msgstr ""
+
+#: ../midori/midori-browser.c:5040
+msgid "_Menu"
+msgstr ""
+
+#: ../midori/midori-browser.c:5042
+msgid "Menu"
+msgstr ""
+
+#. i18n: A panel at the bottom, to search text in pages
+#: ../midori/midori-browser.c:5228
+msgid "_Inline Find:"
+msgstr ""
+
+#: ../midori/midori-browser.c:5253
+msgid "Previous"
+msgstr ""
+
+#: ../midori/midori-browser.c:5258
+msgid "Next"
+msgstr ""
+
+#: ../midori/midori-browser.c:5263
+msgid "Match Case"
+msgstr ""
+
+#: ../midori/midori-browser.c:5271
+msgid "Highlight Matches"
+msgstr ""
+
+#: ../midori/midori-browser.c:5281
+msgid "Close Findbar"
+msgstr ""
+
+#: ../midori/midori-browser.c:5316 ../panels/midori-transfers.c:143
+msgid "Clear All"
+msgstr ""
+
+#: ../midori/midori-browser.c:5670
+#, c-format
+msgid "Unexpected setting '%s'"
+msgstr ""
+
+#: ../midori/midori-locationaction.c:941
+#, c-format
+msgid "Search with %s"
+msgstr ""
+
+#: ../midori/midori-panel.c:382 ../midori/midori-panel.c:384
+msgid "Detach chosen panel from the window"
+msgstr ""
+
+#: ../midori/midori-panel.c:394 ../midori/midori-panel.c:396
+#: ../midori/midori-panel.c:577 ../midori/midori-panel.c:580
+msgid "Align sidepanel to the right"
+msgstr ""
+
+#: ../midori/midori-panel.c:406 ../midori/midori-panel.c:407
+msgid "Close panel"
+msgstr ""
+
+#: ../midori/midori-panel.c:578 ../midori/midori-panel.c:581
+msgid "Align sidepanel to the left"
+msgstr ""
+
+#: ../midori/midori-panel.c:704
+msgid "Show panel _titles"
+msgstr ""
+
+#: ../midori/midori-panel.c:712
+msgid "Show operating _controls"
+msgstr ""
+
+#: ../midori/midori-panel.c:783
+msgid "Options"
+msgstr ""
+
+#: ../midori/midori-websettings.c:197
+msgid "Show Blank page"
+msgstr ""
+
+#: ../midori/midori-websettings.c:198
+msgid "Show Homepage"
+msgstr ""
+
+#: ../midori/midori-websettings.c:199
+msgid "Show last open tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:215
+msgid "Japanese (SHIFT_JIS)"
+msgstr ""
+
+#: ../midori/midori-websettings.c:234
+msgid "New tab"
+msgstr ""
+
+#: ../midori/midori-websettings.c:235
+msgid "New window"
+msgstr ""
+
+#: ../midori/midori-websettings.c:236
+msgid "Current tab"
+msgstr ""
+
+#: ../midori/midori-websettings.c:251
+msgid "Default"
+msgstr ""
+
+#: ../midori/midori-websettings.c:252
+msgid "Icons"
+msgstr ""
+
+#: ../midori/midori-websettings.c:253
+msgid "Text"
+msgstr ""
+
+#: ../midori/midori-websettings.c:254
+msgid "Icons and text"
+msgstr ""
+
+#: ../midori/midori-websettings.c:255
+msgid "Text beside icons"
+msgstr ""
+
+#: ../midori/midori-websettings.c:270
+msgid "All cookies"
+msgstr ""
+
+#: ../midori/midori-websettings.c:271
+msgid "Session cookies"
+msgstr ""
+
+#: ../midori/midori-websettings.c:272 ../panels/midori-addons.c:94
+#: ../extensions/shortcuts.c:93
+msgid "None"
+msgstr ""
+
+#: ../midori/midori-websettings.c:288
+msgid "Safari"
+msgstr ""
+
+#: ../midori/midori-websettings.c:289
+msgid "Firefox"
+msgstr ""
+
+#: ../midori/midori-websettings.c:290
+msgid "Internet Explorer"
+msgstr ""
+
+#: ../midori/midori-websettings.c:343
+msgid "Remember last window size"
+msgstr ""
+
+#: ../midori/midori-websettings.c:344
+msgid "Whether to save the last window size"
+msgstr ""
+
+#: ../midori/midori-websettings.c:352
+msgid "Last window width"
+msgstr ""
+
+#: ../midori/midori-websettings.c:353
+msgid "The last saved window width"
+msgstr ""
+
+#: ../midori/midori-websettings.c:361
+msgid "Last window height"
+msgstr ""
+
+#: ../midori/midori-websettings.c:362
+msgid "The last saved window height"
+msgstr ""
+
+#: ../midori/midori-websettings.c:387
+msgid "Last panel position"
+msgstr ""
+
+#: ../midori/midori-websettings.c:388
+msgid "The last saved panel position"
+msgstr ""
+
+#. i18n: The internal index of the last opened panel
+#: ../midori/midori-websettings.c:397
+msgid "Last panel page"
+msgstr ""
+
+#: ../midori/midori-websettings.c:398
+msgid "The last saved panel page"
+msgstr ""
+
+#: ../midori/midori-websettings.c:406
+msgid "Last Web search"
+msgstr ""
+
+#: ../midori/midori-websettings.c:407
+msgid "The last saved Web search"
+msgstr ""
+
+#: ../midori/midori-websettings.c:416
+msgid "Show Menubar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:417
+msgid "Whether to show the menubar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:425
+msgid "Show Navigationbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:426
+msgid "Whether to show the navigationbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:434
+msgid "Show Bookmarkbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:435
+msgid "Whether to show the bookmarkbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:443
+msgid "Show Panel"
+msgstr ""
+
+#: ../midori/midori-websettings.c:444
+msgid "Whether to show the panel"
+msgstr ""
+
+#: ../midori/midori-websettings.c:459
+msgid "Show Transferbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:460
+msgid "Whether to show the transferbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:468
+msgid "Show Statusbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:469
+msgid "Whether to show the statusbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:478
+msgid "Toolbar Style:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:479
+msgid "The style of the toolbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:495
+msgid "Show progress in location entry"
+msgstr ""
+
+#: ../midori/midori-websettings.c:496
+msgid "Whether to show loading progress in the location entry"
+msgstr ""
+
+#: ../midori/midori-websettings.c:511
+msgid "Search engines in location completion"
+msgstr ""
+
+#: ../midori/midori-websettings.c:512
+msgid "Whether to show search engines in the location completion"
+msgstr ""
+
+#: ../midori/midori-websettings.c:520
+msgid "Toolbar Items"
+msgstr ""
+
+#: ../midori/midori-websettings.c:521
+msgid "The items to show on the toolbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:529
+msgid "Compact Sidepanel"
+msgstr ""
+
+#: ../midori/midori-websettings.c:530
+msgid "Whether to make the sidepanel compact"
+msgstr ""
+
+#: ../midori/midori-websettings.c:545
+msgid "Show operating controls of the panel"
+msgstr ""
+
+#: ../midori/midori-websettings.c:546
+msgid "Whether to show the operating controls of the panel"
+msgstr ""
+
+#: ../midori/midori-websettings.c:561
+msgid "Align sidepanel on the right"
+msgstr ""
+
+#: ../midori/midori-websettings.c:562
+msgid "Whether to align the sidepanel on the right"
+msgstr ""
+
+#: ../midori/midori-websettings.c:571
+msgid "When Midori starts:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:572
+msgid "What to do when Midori starts"
+msgstr ""
+
+#: ../midori/midori-websettings.c:581
+msgid "Homepage:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:582
+msgid "The homepage"
+msgstr ""
+
+#: ../midori/midori-websettings.c:597
+msgid "Show crash dialog"
+msgstr ""
+
+#: ../midori/midori-websettings.c:598
+msgid "Show a dialog after Midori crashed"
+msgstr ""
+
+#. i18n: Speed dial, webpage shortcuts, named for the phone function
+#: ../midori/midori-websettings.c:614
+msgid "Show speed dial in new tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:615
+msgid "Show speed dial in newly opened tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:623
+msgid "Save downloaded files to:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:624
+msgid "The folder downloaded files are saved to"
+msgstr ""
+
+#: ../midori/midori-websettings.c:643
+msgid "Ask for the destination folder"
+msgstr ""
+
+#: ../midori/midori-websettings.c:644
+msgid "Whether to ask for the destination folder when downloading a file"
+msgstr ""
+
+#: ../midori/midori-websettings.c:663
+msgid "Notify when a transfer has been completed"
+msgstr ""
+
+#: ../midori/midori-websettings.c:664
+msgid "Whether to show a notification when a transfer has been completed"
+msgstr ""
+
+#: ../midori/midori-websettings.c:676
+msgid "Download Manager"
+msgstr ""
+
+#: ../midori/midori-websettings.c:677
+msgid "An external download manager"
+msgstr ""
+
+#: ../midori/midori-websettings.c:685
+msgid "Text Editor"
+msgstr ""
+
+#: ../midori/midori-websettings.c:686
+msgid "An external text editor"
+msgstr ""
+
+#: ../midori/midori-websettings.c:701
+msgid "News Aggregator"
+msgstr ""
+
+#: ../midori/midori-websettings.c:702
+msgid "An external news aggregator"
+msgstr ""
+
+#: ../midori/midori-websettings.c:710
+msgid "Location entry Search"
+msgstr ""
+
+#: ../midori/midori-websettings.c:711
+msgid "The search to perform inside the location entry"
+msgstr ""
+
+#: ../midori/midori-websettings.c:719
+msgid "Preferred Encoding"
+msgstr ""
+
+#: ../midori/midori-websettings.c:720
+msgid "The preferred character encoding"
+msgstr ""
+
+#: ../midori/midori-websettings.c:730
+msgid "Always Show Tabbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:731
+msgid "Always show the tabbar"
+msgstr ""
+
+#: ../midori/midori-websettings.c:739
+msgid "Close Buttons on Tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:740
+msgid "Whether tabs have close buttons"
+msgstr ""
+
+#: ../midori/midori-websettings.c:748
+msgid "Open new pages in:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:749
+msgid "Where to open new pages"
+msgstr ""
+
+#: ../midori/midori-websettings.c:758
+msgid "Open external pages in:"
+msgstr ""
+
+#: ../midori/midori-websettings.c:759
+msgid "Where to open externally opened pages"
+msgstr ""
+
+#: ../midori/midori-websettings.c:768
+msgid "Middle click opens Selection"
+msgstr ""
+
+#: ../midori/midori-websettings.c:769
+msgid "Load an address from the selection via middle click"
+msgstr ""
+
+#: ../midori/midori-websettings.c:777
+msgid "Open tabs in the background"
+msgstr ""
+
+#: ../midori/midori-websettings.c:778
+msgid "Whether to open new tabs in the background"
+msgstr ""
+
+#: ../midori/midori-websettings.c:786
+msgid "Open Tabs next to Current"
+msgstr ""
+
+#: ../midori/midori-websettings.c:787
+msgid "Whether to open new tabs next to the current tab or after the last one"
+msgstr ""
+
+#: ../midori/midori-websettings.c:795
+msgid "Open popups in tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:796
+msgid "Whether to open popup windows in tabs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:812
+msgid "Zoom Text and Images"
+msgstr ""
+
+#: ../midori/midori-websettings.c:813
+msgid "Whether to zoom text and images"
+msgstr ""
+
+#: ../midori/midori-websettings.c:828
+msgid "Find inline while typing"
+msgstr ""
+
+#: ../midori/midori-websettings.c:829
+msgid "Whether to automatically find inline while typing"
+msgstr ""
+
+#: ../midori/midori-websettings.c:837
+msgid "Accept cookies"
+msgstr ""
+
+#: ../midori/midori-websettings.c:838
+msgid "What type of cookies to accept"
+msgstr ""
+
+#: ../midori/midori-websettings.c:847
+msgid "Original cookies only"
+msgstr ""
+
+#: ../midori/midori-websettings.c:848
+msgid "Accept cookies from the original website only"
+msgstr ""
+
+#: ../midori/midori-websettings.c:856
+msgid "Maximum cookie age"
+msgstr ""
+
+#: ../midori/midori-websettings.c:857
+msgid "The maximum number of days to save cookies for"
+msgstr ""
+
+#: ../midori/midori-websettings.c:867
+msgid "Remember last visited pages"
+msgstr ""
+
+#: ../midori/midori-websettings.c:868
+msgid "Whether the last visited pages are saved"
+msgstr ""
+
+#: ../midori/midori-websettings.c:876
+msgid "Maximum history age"
+msgstr ""
+
+#: ../midori/midori-websettings.c:877
+msgid "The maximum number of days to save the history for"
+msgstr ""
+
+#: ../midori/midori-websettings.c:885
+msgid "Remember last form inputs"
+msgstr ""
+
+#: ../midori/midori-websettings.c:886
+msgid "Whether the last form inputs are saved"
+msgstr ""
+
+#: ../midori/midori-websettings.c:894
+msgid "Remember last downloaded files"
+msgstr ""
+
+#: ../midori/midori-websettings.c:895
+msgid "Whether the last downloaded files are saved"
+msgstr ""
+
+#: ../midori/midori-websettings.c:905
+msgid "Proxy Server"
+msgstr ""
+
+#: ../midori/midori-websettings.c:906
+msgid "The proxy server used for HTTP connections"
+msgstr ""
+
+#: ../midori/midori-websettings.c:921
+msgid "Detect proxy server automatically"
+msgstr ""
+
+#: ../midori/midori-websettings.c:922
+msgid "Whether to detect the proxy server automatically from the environment"
+msgstr ""
+
+#. i18n: This refers to an application, not the 'user agent' string
+#: ../midori/midori-websettings.c:938
+msgid "Identify as"
+msgstr ""
+
+#: ../midori/midori-websettings.c:939
+msgid "What to identify as to web pages"
+msgstr ""
+
+#: ../midori/midori-websettings.c:955
+msgid "Identification string"
+msgstr ""
+
+#: ../midori/midori-websettings.c:956
+msgid "The application identification string"
+msgstr ""
+
+#: ../midori/midori-websettings.c:964
+msgid "Cache size"
+msgstr ""
+
+#: ../midori/midori-websettings.c:965
+msgid "The allowed size of the cache"
+msgstr ""
+
+#: ../midori/midori-websettings.c:980
+msgid "Clear private data"
+msgstr ""
+
+#: ../midori/midori-websettings.c:981
+msgid "The private data selected for deletion"
+msgstr ""
+
+#. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
+#. so reloading via Javascript works but not via API calls.
+#. Error pages are special, we want to try loading the destination
+#. again, not the error page which isn't even a proper page
+#: ../midori/midori-view.c:782 ../midori/midori-view.c:3043
+#: ../midori/midori-view.c:3047
+#, c-format
+msgid "Error - %s"
+msgstr ""
+
+#: ../midori/midori-view.c:783
+#, c-format
+msgid "The page '%s' couldn't be loaded."
+msgstr ""
+
+#: ../midori/midori-view.c:788
+msgid "Try again"
+msgstr ""
+
+#. i18n: The title of the 404 - Not found error page
+#: ../midori/midori-view.c:821
+#, c-format
+msgid "Not found - %s"
+msgstr ""
+
+#: ../midori/midori-view.c:1218
+msgid "Open _Link"
+msgstr ""
+
+#: ../midori/midori-view.c:1220
+msgid "Open Link in New _Tab"
+msgstr ""
+
+#: ../midori/midori-view.c:1237
+msgid "Open Link in New _Window"
+msgstr ""
+
+#: ../midori/midori-view.c:1243
+msgid "_Download Link destination"
+msgstr ""
+
+#: ../midori/midori-view.c:1249
+msgid "_Save Link destination"
+msgstr ""
+
+#: ../midori/midori-view.c:1258
+msgid "Download with Download _Manager"
+msgstr ""
+
+#: ../midori/midori-view.c:1287
+msgid "Search _with"
+msgstr ""
+
+#: ../midori/midori-view.c:1319
+msgid "_Search the Web"
+msgstr ""
+
+#: ../midori/midori-view.c:1329
+msgid "Open Address in New _Tab"
+msgstr ""
+
+#: ../midori/midori-view.c:1507
+msgid "Open or download file"
+msgstr ""
+
+#: ../midori/midori-view.c:1524
+#, c-format
+msgid "File Type: '%s'"
+msgstr ""
+
+#: ../midori/midori-view.c:1527
+#, c-format
+msgid "File Type: %s ('%s')"
+msgstr ""
+
+#. i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz"
+#: ../midori/midori-view.c:1531
+#, c-format
+msgid "Open %s"
+msgstr ""
+
+#: ../midori/midori-view.c:1981
+#, c-format
+msgid "Inspect page - %s"
+msgstr ""
+
+#: ../midori/midori-view.c:2176
+msgid "Speed dial"
+msgstr ""
+
+#: ../midori/midori-view.c:2177
+msgid "Click to add a shortcut"
+msgstr ""
+
+#: ../midori/midori-view.c:2178
+msgid "Enter shortcut address"
+msgstr ""
+
+#: ../midori/midori-view.c:2179
+msgid "Enter shortcut title"
+msgstr ""
+
+#: ../midori/midori-view.c:2180
+msgid "Are you sure you want to delete this shortcut?"
+msgstr ""
+
+#: ../midori/midori-view.c:2210
+#, c-format
+msgid "Document cannot be displayed"
+msgstr ""
+
+#: ../midori/midori-view.c:2227
+#, c-format
+msgid "No documentation installed"
+msgstr ""
+
+#: ../midori/midori-view.c:2352
+msgid "Blank page"
+msgstr ""
+
+#: ../midori/midori-view.c:2581 ../midori/sokoke.c:870
+msgid "New _Tab"
+msgstr "새 탭(_T)"
+
+#: ../midori/midori-view.c:2595
+msgid "_Duplicate Tab"
+msgstr ""
+
+#: ../midori/midori-view.c:2600
+msgid "_Restore Tab"
+msgstr ""
+
+#: ../midori/midori-view.c:2600
+msgid "_Minimize Tab"
+msgstr ""
+
+#: ../midori/midori-view.c:3149
+msgid "Print background images"
+msgstr ""
+
+#: ../midori/midori-view.c:3150
+msgid "Whether background images should be printed"
+msgstr ""
+
+#: ../midori/midori-view.c:3194 ../midori/midori-preferences.c:484
+msgid "Features"
+msgstr ""
+
+#: ../midori/midori-preferences.c:91
+#, c-format
+msgid "Preferences for %s"
+msgstr ""
+
+#. Page "General"
+#: ../midori/midori-preferences.c:398
+msgid "General"
+msgstr ""
+
+#: ../midori/midori-preferences.c:399
+msgid "Startup"
+msgstr ""
+
+#: ../midori/midori-preferences.c:415
+msgid "Use current page as homepage"
+msgstr ""
+
+#: ../midori/midori-preferences.c:425 ../panels/midori-transfers.c:88
+msgid "Transfers"
+msgstr "다운로드"
+
+#. Page "Appearance"
+#: ../midori/midori-preferences.c:440
+msgid "Appearance"
+msgstr ""
+
+#: ../midori/midori-preferences.c:441
+msgid "Font settings"
+msgstr ""
+
+#: ../midori/midori-preferences.c:443
+msgid "Default Font Family"
+msgstr ""
+
+#: ../midori/midori-preferences.c:447
+msgid "The default font family used to display text"
+msgstr ""
+
+#: ../midori/midori-preferences.c:450
+msgid "The default font size used to display text"
+msgstr ""
+
+#: ../midori/midori-preferences.c:453
+msgid "Fixed-width Font Family"
+msgstr ""
+
+#: ../midori/midori-preferences.c:457
+msgid "The font family used to display fixed-width text"
+msgstr ""
+
+#: ../midori/midori-preferences.c:460
+msgid "The font size used to display fixed-width text"
+msgstr ""
+
+#: ../midori/midori-preferences.c:463
+msgid "Minimum Font Size"
+msgstr ""
+
+#: ../midori/midori-preferences.c:466
+msgid "The minimum font size used to display text"
+msgstr ""
+
+#: ../midori/midori-preferences.c:473
+msgid "Encoding"
+msgstr ""
+
+#: ../midori/midori-preferences.c:476
+msgid "The character encoding to use by default"
+msgstr ""
+
+#. Page "Behavior"
+#: ../midori/midori-preferences.c:483
+msgid "Behavior"
+msgstr ""
+
+#: ../midori/midori-preferences.c:487 ../extensions/statusbar-features.c:88
+msgid "Load images automatically"
+msgstr ""
+
+#: ../midori/midori-preferences.c:488
+msgid "Load and display images automatically"
+msgstr ""
+
+#: ../midori/midori-preferences.c:492
+msgid "Shrink images automatically"
+msgstr ""
+
+#: ../midori/midori-preferences.c:493
+msgid "Automatically shrink standalone images to fit"
+msgstr ""
+
+#: ../midori/midori-preferences.c:499 ../extensions/statusbar-features.c:100
+msgid "Enable scripts"
+msgstr ""
+
+#: ../midori/midori-preferences.c:500
+msgid "Enable embedded scripting languages"
+msgstr ""
+
+#: ../midori/midori-preferences.c:503 ../extensions/statusbar-features.c:112
+msgid "Enable Netscape plugins"
+msgstr ""
+
+#: ../midori/midori-preferences.c:504
+msgid "Enable embedded Netscape plugin objects"
+msgstr ""
+
+#: ../midori/midori-preferences.c:507
+msgid "Enforce 96 dots per inch"
+msgstr ""
+
+#: ../midori/midori-preferences.c:508
+msgid "Enforce a video dot density of 96 DPI"
+msgstr ""
+
+#: ../midori/midori-preferences.c:511
+msgid "Enable developer tools"
+msgstr ""
+
+#: ../midori/midori-preferences.c:512
+msgid "Enable special extensions for developers"
+msgstr ""
+
+#: ../midori/midori-preferences.c:519
+msgid "Spell Checking"
+msgstr ""
+
+#: ../midori/midori-preferences.c:522
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: ../midori/midori-preferences.c:523
+msgid "Enable spell checking while typing"
+msgstr ""
+
+#. i18n: The example should be adjusted to contain a good local default
+#: ../midori/midori-preferences.c:527
+msgid ""
+"A comma separated list of languages to be used for spell checking, for "
+"example \"en_GB,de_DE\""
+msgstr ""
+
+#. Page "Interface"
+#: ../midori/midori-preferences.c:532
+msgid "Interface"
+msgstr ""
+
+#: ../midori/midori-preferences.c:533
+msgid "Navigationbar"
+msgstr ""
+
+#: ../midori/midori-preferences.c:544
+msgid "Browsing"
+msgstr ""
+
+#. Page "Applications"
+#: ../midori/midori-preferences.c:568
+msgid "Applications"
+msgstr "프로그램"
+
+#: ../midori/midori-preferences.c:569
+msgid "External applications"
+msgstr "외부 프로그램"
+
+#. Page "Network"
+#: ../midori/midori-preferences.c:615 ../midori/midori-preferences.c:616
+msgid "Network"
+msgstr "네트워크"
+
+#: ../midori/midori-preferences.c:643
+msgid "MB"
+msgstr ""
+
+#. Page "Privacy"
+#: ../midori/midori-preferences.c:648
+msgid "Privacy"
+msgstr "개인 정보"
+
+#: ../midori/midori-preferences.c:649
+msgid "Web Cookies"
+msgstr ""
+
+#: ../midori/midori-preferences.c:662 ../midori/midori-preferences.c:672
+msgid "days"
+msgstr "일"
+
+#: ../midori/midori-searchaction.c:488 ../katze/katze-arrayaction.c:335
+msgid "Empty"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:908
+msgid "Add search engine"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:908
+msgid "Edit search engine"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:936
+msgid "_Name:"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:980
+msgid "_Icon:"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:994
+msgid "_Token:"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:1213
+msgid "Manage Search Engines"
+msgstr ""
+
+#: ../midori/midori-searchaction.c:1312
+msgid "Use as _default"
+msgstr ""
+
+#: ../midori/sokoke.c:166 ../midori/sokoke.c:178
+msgid "Could not run external program."
+msgstr ""
+
+#: ../midori/sokoke.c:861
+msgid "_Bookmark"
+msgstr ""
+
+#: ../midori/sokoke.c:863
+msgid "Add Boo_kmark"
+msgstr "북마크에 추가(_K)"
+
+#: ../midori/sokoke.c:864
+msgid "_Console"
+msgstr ""
+
+#: ../midori/sokoke.c:865
+msgid "_Extensions"
+msgstr "확장 기능(_E)"
+
+#: ../midori/sokoke.c:866
+msgid "_History"
+msgstr "방문 기록(_H)"
+
+#: ../midori/sokoke.c:867
+msgid "_Homepage"
+msgstr "홈 페이지(_H)"
+
+#: ../midori/sokoke.c:868
+msgid "_Userscripts"
+msgstr "사용자 스크립트(_U)"
+
+#: ../midori/sokoke.c:869
+msgid "User_styles"
+msgstr "사용자 스타일(_S)"
+
+#: ../midori/sokoke.c:871
+msgid "_Transfers"
+msgstr "다운로드(_T)"
+
+#: ../midori/sokoke.c:872
+msgid "Netscape p_lugins"
+msgstr "플러그인(_L)"
+
+#: ../panels/midori-addons.c:95 ../panels/midori-addons.c:141
+msgid "Userscripts"
+msgstr "사용자 스크립트"
+
+#: ../panels/midori-addons.c:96 ../panels/midori-addons.c:143
+msgid "Userstyles"
+msgstr "사용자 스타일"
+
+#: ../panels/midori-bookmarks.c:108
+msgid "Bookmarks"
+msgstr "북마크"
+
+#: ../panels/midori-bookmarks.c:239
+msgid "Edit the selected bookmark"
+msgstr ""
+
+#: ../panels/midori-bookmarks.c:247
+msgid "Delete the selected bookmark"
+msgstr ""
+
+#: ../panels/midori-bookmarks.c:260
+msgid "Add a new folder"
+msgstr ""
+
+#: ../panels/midori-bookmarks.c:592
+msgid "<i>Separator</i>"
+msgstr ""
+
+#: ../panels/midori-console.c:87
+msgid "Console"
+msgstr ""
+
+#: ../panels/midori-extensions.c:91
+msgid "Extensions"
+msgstr "확장 기능"
+
+#: ../panels/midori-history.c:162
+msgid "Are you sure you want to remove all history items?"
+msgstr ""
+
+#: ../panels/midori-history.c:217
+msgid "Bookmark the selected history item"
+msgstr ""
+
+#: ../panels/midori-history.c:226
+msgid "Delete the selected history item"
+msgstr ""
+
+#: ../panels/midori-history.c:234
+msgid "Clear the entire history"
+msgstr ""
+
+#: ../panels/midori-history.c:601
+msgid "A week ago"
+msgstr ""
+
+#: ../panels/midori-history.c:606
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../panels/midori-history.c:614
+msgid "Today"
+msgstr "오늘"
+
+#: ../panels/midori-history.c:616
+msgid "Yesterday"
+msgstr "어제"
+
+#: ../panels/midori-plugins.c:87 ../extensions/statusbar-features.c:108
+msgid "Netscape plugins"
+msgstr "플러그인"
+
+#: ../panels/midori-transfers.c:480
+msgid "Open Destination _Folder"
+msgstr ""
+
+#: ../panels/midori-transfers.c:483
+msgid "Copy Link Loc_ation"
+msgstr ""
+
+#: ../katze/katze-http-auth.c:124
+msgid "Authentication Required"
+msgstr ""
+
+#: ../katze/katze-http-auth.c:140
+msgid ""
+"A username and a password are required\n"
+"to open this location:"
+msgstr ""
+
+#: ../katze/katze-http-auth.c:154
+msgid "Username"
+msgstr ""
+
+#: ../katze/katze-http-auth.c:170
+msgid "Password"
+msgstr ""
+
+#: ../katze/katze-throbber.c:828
+#, c-format
+msgid "Named icon '%s' couldn't be loaded"
+msgstr ""
+
+#: ../katze/katze-throbber.c:841
+#, c-format
+msgid "Stock icon '%s' couldn't be loaded"
+msgstr ""
+
+#: ../katze/katze-throbber.c:907
+msgid "Animation frames are broken"
+msgstr ""
+
+#: ../katze/katze-utils.c:200 ../katze/katze-utils.c:407
+#, c-format
+msgid "Property '%s' is invalid for %s"
+msgstr ""
+
+#: ../katze/katze-utils.c:235 ../katze/katze-utils.c:264
+msgid "Choose file"
+msgstr ""
+
+#: ../katze/katze-utils.c:250
+msgid "Choose folder"
+msgstr ""
+
+#: ../extensions/adblock.c:167
+msgid "Configure Advertisement filters"
+msgstr ""
+
+#: ../extensions/adblock.c:304
+msgid "Configure _Advertisement filters..."
+msgstr ""
+
+#: ../extensions/adblock.c:565
+msgid "Advertisement blocker"
+msgstr ""
+
+#: ../extensions/adblock.c:566
+msgid "Block advertisements according to a filter list"
+msgstr ""
+
+#: ../extensions/colorful-tabs.c:115
+msgid "Tint tabs distinctly"
+msgstr ""
+
+#: ../extensions/colorful-tabs.c:151
+msgid "Colorful Tabs"
+msgstr ""
+
+#: ../extensions/colorful-tabs.c:152
+msgid "Tint each tab distinctly"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:79
+#: ../extensions/cookie-manager/main.c:56
+msgid "Cookie Manager"
+msgstr "쿠키 관리자"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:109
+msgid "Delete All"
+msgstr "모두 삭제"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:111
+msgid ""
+"Deletes all shown cookies. If a filter is set, only those cookies are "
+"deleted which match the filter."
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:126
+msgid "Expand All"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:133
+msgid "Collapse All"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:460
+msgid "Do you really want to delete all cookies?"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:462
+msgid "Question"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:471
+msgid "Only cookies which match the filter will be deleted."
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:539
+msgid "At the end of the session"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:542
+#, c-format
+msgid ""
+"<b>Host</b>: %s\n"
+"<b>Name</b>: %s\n"
+"<b>Value</b>: %s\n"
+"<b>Path</b>: %s\n"
+"<b>Secure</b>: %s\n"
+"<b>Expires</b>: %s"
+msgstr ""
+"<b>호스트</b>: %s\n"
+"<b>이름</b>: %s\n"
+"<b>내용</b>: %s\n"
+"<b>경로</b>: %s\n"
+"<b>보안</b>: %s\n"
+"<b>만료</b>: %s"
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:548
+msgid "Yes"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:548
+msgid "No"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:811
+msgid "Name"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:862
+msgid "_Expand All"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:870
+msgid "_Collapse All"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:923
+msgid "Filter:"
+msgstr ""
+
+#: ../extensions/cookie-manager/cookie-manager-page.c:928
+msgid ""
+"Enter a filter string to show only cookies whose name or domain field match "
+"the entered filter"
+msgstr ""
+
+#: ../extensions/cookie-manager/main.c:40
+msgid "_Cookie Manager"
+msgstr "쿠키 관리자(_C)"
+
+#: ../extensions/cookie-manager/main.c:57
+msgid "List, view and delete cookies"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-atom.c:237
+msgid "Failed to find required Atom \"entry\" elements in XML data."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-atom.c:343
+msgid "Failed to find required Atom \"feed\" elements in XML data."
+msgstr ""
+
+#. i18n: The local date a feed was last updated
+#: ../extensions/feed-panel/feed-panel.c:399
+#, c-format
+msgctxt "Feed"
+msgid "Last updated: %s."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-panel.c:664
+msgid "Feeds"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-panel.c:717
+msgid "Add new feed"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-panel.c:724
+msgid "Delete feed"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-panel.c:807
+msgid "_Feeds"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-parse.c:192
+#, c-format
+msgid "Failed to find root element in feed XML data."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-parse.c:232
+#, c-format
+msgid "Unsupported feed format."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-parse.c:262
+#, c-format
+msgid "Failed to parse XML feed: %s"
+msgstr ""
+
+#: ../extensions/feed-panel/feed-rss.c:46
+msgid "Failed to find \"channel\" element in RSS XML data."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-rss.c:51
+msgid "Unsupported RSS version found."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-rss.c:148
+msgid "Failed to find required RSS \"item\" elements in XML data."
+msgstr ""
+
+#: ../extensions/feed-panel/feed-rss.c:248
+msgid "Failed to find required RSS \"channel\" elements in XML data."
+msgstr ""
+
+#: ../extensions/feed-panel/main.c:124
+msgid "Error"
+msgstr ""
+
+#: ../extensions/feed-panel/main.c:126
+#, c-format
+msgid "Feed '%s' already exists"
+msgstr ""
+
+#: ../extensions/feed-panel/main.c:203
+#, c-format
+msgid "Error loading feed '%s'"
+msgstr ""
+
+#: ../extensions/feed-panel/main.c:514
+msgid "Feed Panel"
+msgstr ""
+
+#: ../extensions/feed-panel/main.c:515
+msgid "Read Atom/ RSS feeds"
+msgstr ""
+
+#: ../extensions/mouse-gestures/main.c:236
+msgid "Mouse Gestures"
+msgstr ""
+
+#: ../extensions/mouse-gestures/main.c:237
+msgid "Control Midori by moving the mouse"
+msgstr ""
+
+#. i18n: A panel showing a user specified web page
+#: ../extensions/page-holder.c:129 ../extensions/page-holder.c:177
+msgid "Pageholder"
+msgstr ""
+
+#: ../extensions/page-holder.c:161
+msgid "_Pageholder"
+msgstr ""
+
+#: ../extensions/shortcuts.c:172
+msgid "Customize Keyboard shortcuts"
+msgstr ""
+
+#: ../extensions/shortcuts.c:264
+msgid "Customize Sh_ortcuts..."
+msgstr ""
+
+#: ../extensions/shortcuts.c:303
+msgid "Shortcuts"
+msgstr ""
+
+#: ../extensions/shortcuts.c:304
+msgid "View and edit keyboard shortcuts"
+msgstr ""
+
+#: ../extensions/statusbar-features.c:84
+msgid "Images"
+msgstr ""
+
+#: ../extensions/statusbar-features.c:96
+msgid "Scripts"
+msgstr ""
+
+#: ../extensions/statusbar-features.c:149
+msgid "Statusbar Features"
+msgstr ""
+
+#: ../extensions/statusbar-features.c:150
+msgid "Easily toggle features on web pages on and off"
+msgstr ""
+
+#: ../extensions/tab-panel.c:558 ../extensions/tab-panel.c:613
+msgid "Tab Panel"
+msgstr ""
+
+#: ../extensions/tab-panel.c:597
+msgid "T_ab Panel"
+msgstr ""
+
+#: ../extensions/tab-panel.c:614
+msgid "Show tabs in a vertical panel"
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:391
+msgid "Customize Toolbar"
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:407
+msgid ""
+"Select items to be displayed on the toolbar. Items can be reodered by drag "
+"and drop."
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:423
+msgid "Available Items"
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:444
+msgid "Displayed Items"
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:579
+msgid "Customize _Toolbar..."
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:611
+msgid "Toolbar Editor"
+msgstr ""
+
+#: ../extensions/toolbar-editor.c:612
+msgid "Easily edit the toolbar layout"
+msgstr ""
index a05bd70986133dd448bd951163362ce63e3bfb35..8966fb27d6216036acba630e95dd8f20857be761 100644 (file)
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Midori 0.1.9\n"
+"Project-Id-Version: Midori 0.1.10\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-08-24 10:45-0300\n"
-"PO-Revision-Date: \n"
+"PO-Revision-Date: 2009-09-16 11:15-0300\n"
 "Last-Translator: Rogério Brito <rbrito@ime.usp.br>\n"
 "Language-Team: Rogério Brito <rbrito@ime.usp.br>\n"
 "MIME-Version: 1.0\n"
@@ -20,11 +20,8 @@ msgstr ""
 msgid "Lightweight web browser"
 msgstr "Navegador Leve de Web"
 
-#: ../data/midori.desktop.in.h:2
-#: ../midori/main.c:1343
-#: ../midori/main.c:1517
-#: ../midori/main.c:1525
-#: ../midori/main.c:1536
+#: ../data/midori.desktop.in.h:2 ../midori/main.c:1343 ../midori/main.c:1517
+#: ../midori/main.c:1525 ../midori/main.c:1536
 #: ../midori/midori-websettings.c:287
 msgid "Midori"
 msgstr "Midori"
@@ -43,8 +40,7 @@ msgstr "A configuração não foi carregada: %s\n"
 msgid "Value '%s' is invalid for %s"
 msgstr "O valor '%s' é inválido para %s"
 
-#: ../midori/main.c:158
-#: ../midori/main.c:238
+#: ../midori/main.c:158 ../midori/main.c:238
 #, c-format
 msgid "Invalid configuration value '%s'"
 msgstr "Valor de configuração '%s' inválido "
@@ -69,9 +65,7 @@ msgstr "Falha ao remover item do histórico: %s\n"
 msgid "Failed to clear history: %s\n"
 msgstr "Falha ao limpar histórico: %s\n"
 
-#: ../midori/main.c:483
-#: ../midori/main.c:517
-#: ../midori/main.c:533
+#: ../midori/main.c:483 ../midori/main.c:517 ../midori/main.c:533
 #, c-format
 msgid "Failed to add history item: %s\n"
 msgstr "Falha ao adicionar item ao histórico: %s\n"
@@ -92,16 +86,13 @@ msgstr "A configuração não foi guardada. %s"
 msgid "The search engines couldn't be saved. %s"
 msgstr "Os sites de pesquisa não foram guardados. %s"
 
-#: ../midori/main.c:798
-#: ../midori/main.c:826
-#: ../midori/main.c:855
+#: ../midori/main.c:798 ../midori/main.c:826 ../midori/main.c:855
 #, c-format
 msgid "The bookmarks couldn't be saved. %s"
-msgstr "Os marcadores não foram guardados. %s"
+msgstr "Os favoritos não foram guardados. %s"
 
 #. i18n: Trash, or wastebin, containing closed tabs
-#: ../midori/main.c:878
-#: ../midori/main.c:901
+#: ../midori/main.c:878 ../midori/main.c:901
 #, c-format
 msgid "The trash couldn't be saved. %s"
 msgstr "O lixo não foi guardado. %s"
@@ -112,8 +103,13 @@ msgid "The session couldn't be saved. %s"
 msgstr "A sessão não foi guardada. %s"
 
 #: ../midori/main.c:1101
-msgid "Midori seems to have crashed the last time it was opened. If this happened repeatedly, try one of the following options to solve the problem."
-msgstr "O Midori encerrou abruptamente da última vez em que foi aberto. Se isso ocorrer repetidamente, tente uma das seguintes opções para resolver o problema."
+msgid ""
+"Midori seems to have crashed the last time it was opened. If this happened "
+"repeatedly, try one of the following options to solve the problem."
+msgstr ""
+"O Midori encerrou abruptamente da última vez em que foi aberto. Se isso "
+"ocorrer repetidamente, tente uma das seguintes opções para resolver o "
+"problema."
 
 #: ../midori/main.c:1116
 msgid "Modify _preferences"
@@ -194,7 +190,8 @@ msgstr "A pasta de configuração especificada é inválida."
 
 #: ../midori/main.c:1655
 msgid "An instance of Midori is already running but not responding.\n"
-msgstr "Já existe uma instância de Midori em execução que não está respondendo.\n"
+msgstr ""
+"Já existe uma instância do Midori em execução que não está respondendo.\n"
 
 #: ../midori/main.c:1715
 #, c-format
@@ -204,7 +201,7 @@ msgstr "Os sites de pesquisa não foram carregados. %s\n"
 #: ../midori/main.c:1727
 #, c-format
 msgid "The bookmarks couldn't be loaded: %s\n"
-msgstr "Os marcadores não foram carregados: %s\n"
+msgstr "Os favoritos não foram carregados: %s\n"
 
 #: ../midori/main.c:1742
 #, c-format
@@ -233,25 +230,21 @@ msgstr "_Ignorar"
 msgid "File not found."
 msgstr "Arquivo não encontrado."
 
-#: ../midori/midori-array.c:258
-#: ../midori/midori-array.c:267
+#: ../midori/midori-array.c:258 ../midori/midori-array.c:267
 msgid "Malformed document."
 msgstr "Documento mal-formado."
 
-#: ../midori/midori-array.c:429
-#: ../midori/sokoke.c:694
+#: ../midori/midori-array.c:429 ../midori/sokoke.c:694
 #, c-format
 msgid "Writing failed."
 msgstr "Falha na escrita."
 
-#: ../midori/midori-browser.c:307
-#: ../midori/midori-browser.c:4229
+#: ../midori/midori-browser.c:307 ../midori/midori-browser.c:4229
 #: ../midori/midori-browser.c:4235
 msgid "Reload the current page"
 msgstr "Recarregar página atual"
 
-#: ../midori/midori-browser.c:318
-#: ../midori/midori-browser.c:4232
+#: ../midori/midori-browser.c:318 ../midori/midori-browser.c:4232
 msgid "Stop loading the current page"
 msgstr "Parar o carregamento da página atual"
 
@@ -263,7 +256,7 @@ msgstr "%d%% carregado(s)"
 #: ../midori/midori-browser.c:434
 #, c-format
 msgid "Unexpected action '%s'."
-msgstr "Ação inesperada '%s'."
+msgstr "Ação '%s' inesperada."
 
 #: ../midori/midori-browser.c:616
 msgid "New folder"
@@ -275,23 +268,21 @@ msgstr "Editar pasta"
 
 #: ../midori/midori-browser.c:618
 msgid "New bookmark"
-msgstr "Novo marcador"
+msgstr "Novo favorito"
 
 #: ../midori/midori-browser.c:618
 msgid "Edit bookmark"
-msgstr "Editar marcador"
+msgstr "Editar favorito"
 
 #: ../midori/midori-browser.c:648
 msgid "_Title:"
 msgstr "_Título:"
 
-#: ../midori/midori-browser.c:661
-#: ../midori/midori-searchaction.c:952
+#: ../midori/midori-browser.c:661 ../midori/midori-searchaction.c:952
 msgid "_Description:"
 msgstr "_Descrição:"
 
-#: ../midori/midori-browser.c:680
-#: ../midori/midori-searchaction.c:966
+#: ../midori/midori-browser.c:680 ../midori/midori-searchaction.c:966
 #: ../extensions/feed-panel/main.c:343
 msgid "_Address:"
 msgstr "_Endereço:"
@@ -300,8 +291,7 @@ msgstr "_Endereço:"
 msgid "_Folder:"
 msgstr "_Pasta:"
 
-#: ../midori/midori-browser.c:704
-#: ../midori/midori-browser.c:745
+#: ../midori/midori-browser.c:704 ../midori/midori-browser.c:745
 msgid "Toplevel folder"
 msgstr "Pasta Acima"
 
@@ -324,25 +314,20 @@ msgstr "Gravar arquivo"
 
 #: ../midori/midori-browser.c:1984
 msgid "Open file"
-msgstr "Abrir arquivos"
+msgstr "Abrir arquivo"
 
-#: ../midori/midori-browser.c:3430
-#: ../panels/midori-bookmarks.c:781
+#: ../midori/midori-browser.c:3430 ../panels/midori-bookmarks.c:781
 #: ../panels/midori-history.c:812
 msgid "Open all in _Tabs"
 msgstr "Abrir tudo em _Abas"
 
-#: ../midori/midori-browser.c:3437
-#: ../panels/midori-bookmarks.c:787
-#: ../panels/midori-history.c:818
-#: ../extensions/feed-panel/feed-panel.c:542
+#: ../midori/midori-browser.c:3437 ../panels/midori-bookmarks.c:787
+#: ../panels/midori-history.c:818 ../extensions/feed-panel/feed-panel.c:542
 msgid "Open in New _Tab"
 msgstr "Abrir em Nova _Aba"
 
-#: ../midori/midori-browser.c:3440
-#: ../panels/midori-bookmarks.c:789
-#: ../panels/midori-history.c:820
-#: ../extensions/feed-panel/feed-panel.c:544
+#: ../midori/midori-browser.c:3440 ../panels/midori-bookmarks.c:789
+#: ../panels/midori-history.c:820 ../extensions/feed-panel/feed-panel.c:544
 msgid "Open in New _Window"
 msgstr "Abrir em Nova _Janela"
 
@@ -358,8 +343,7 @@ msgstr "_Limpar dados privados"
 msgid "Clear the following data:"
 msgstr "Limpar os seguintes dados:"
 
-#: ../midori/midori-browser.c:3777
-#: ../midori/midori-preferences.c:671
+#: ../midori/midori-browser.c:3777 ../midori/midori-preferences.c:671
 #: ../panels/midori-history.c:108
 msgid "History"
 msgstr "Histórico"
@@ -376,8 +360,7 @@ msgstr "Cookies do 'Flash'"
 msgid "Website icons"
 msgstr "Ícones de sites"
 
-#: ../midori/midori-browser.c:3797
-#: ../midori/sokoke.c:868
+#: ../midori/midori-browser.c:3797 ../midori/sokoke.c:868
 msgid "_Closed Tabs"
 msgstr "Abas _Fechadas"
 
@@ -397,8 +380,7 @@ msgstr "Rogério Brito <rbrito@ime.usp.br>"
 msgid "_File"
 msgstr "_Arquivo"
 
-#: ../midori/midori-browser.c:4165
-#: ../midori/sokoke.c:869
+#: ../midori/midori-browser.c:4165 ../midori/sokoke.c:869
 msgid "New _Window"
 msgstr "Nova _Janela"
 
@@ -458,8 +440,7 @@ msgstr "_Editar"
 msgid "Cut the selected text"
 msgstr "Cortar o texto selecionado"
 
-#: ../midori/midori-browser.c:4198
-#: ../midori/midori-browser.c:4201
+#: ../midori/midori-browser.c:4198 ../midori/midori-browser.c:4201
 msgid "Copy the selected text"
 msgstr "Copiar o texto selecionado"
 
@@ -517,7 +498,7 @@ msgstr "Diminuir Zoom"
 
 #: ../midori/midori-browser.c:4244
 msgid "Reset the zoom level"
-msgstr "Usar Zoom Inicial"
+msgstr "Usar zoom inicial"
 
 #: ../midori/midori-browser.c:4245
 msgid "_Encoding"
@@ -575,10 +556,9 @@ msgstr "Desfazer _Fechar Aba"
 msgid "Open the last closed tab"
 msgstr "Abrir última aba fechada"
 
-#: ../midori/midori-browser.c:4276
-#: ../panels/midori-bookmarks.c:231
+#: ../midori/midori-browser.c:4276 ../panels/midori-bookmarks.c:231
 msgid "Add a new bookmark"
-msgstr "Adicionar novo marcador"
+msgstr "Adicionar novo favorito"
 
 #: ../midori/midori-browser.c:4278
 msgid "Add a new _folder"
@@ -586,10 +566,9 @@ msgstr "Adicionar _nova pasta"
 
 #: ../midori/midori-browser.c:4279
 msgid "Add a new bookmark folder"
-msgstr "Adicionar nova pasta de marcadores"
+msgstr "Adicionar nova pasta de favoritos"
 
-#: ../midori/midori-browser.c:4281
-#: ../midori/midori-searchaction.c:497
+#: ../midori/midori-browser.c:4281 ../midori/midori-searchaction.c:497
 msgid "_Manage Search Engines"
 msgstr "Administrar Sites de _Pesquisa"
 
@@ -687,11 +666,11 @@ msgstr "Mostrar painel lateral"
 
 #: ../midori/midori-browser.c:4333
 msgid "_Bookmarkbar"
-msgstr "_Barra de Marcadores"
+msgstr "_Barra de Favoritos"
 
 #: ../midori/midori-browser.c:4334
 msgid "Show bookmarkbar"
-msgstr "Mostrar barra de marcadores"
+msgstr "Mostrar barra de favoritos"
 
 #: ../midori/midori-browser.c:4337
 msgid "_Transferbar"
@@ -703,18 +682,17 @@ msgstr "Mostrar barra de transferências"
 
 #: ../midori/midori-browser.c:4341
 msgid "_Statusbar"
-msgstr "Barra de _Estado"
+msgstr "Barra de _Status"
 
 #: ../midori/midori-browser.c:4342
 msgid "Show statusbar"
-msgstr "Mostrar barra de estado"
+msgstr "Mostrar barra de status"
 
 #: ../midori/midori-browser.c:4349
 msgid "_Automatic"
 msgstr "_Automático"
 
-#: ../midori/midori-browser.c:4352
-#: ../midori/midori-websettings.c:214
+#: ../midori/midori-browser.c:4352 ../midori/midori-websettings.c:214
 msgid "Chinese (BIG5)"
 msgstr "Chinês (BIG5)"
 
@@ -723,23 +701,19 @@ msgstr "Chinês (BIG5)"
 msgid "Japanese (SHIFT__JIS)"
 msgstr "Japonês (SHIFT__JIS)"
 
-#: ../midori/midori-browser.c:4359
-#: ../midori/midori-websettings.c:216
+#: ../midori/midori-browser.c:4359 ../midori/midori-websettings.c:216
 msgid "Russian (KOI8-R)"
 msgstr "Russo (KOI8-R)"
 
-#: ../midori/midori-browser.c:4362
-#: ../midori/midori-websettings.c:217
+#: ../midori/midori-browser.c:4362 ../midori/midori-websettings.c:217
 msgid "Unicode (UTF-8)"
 msgstr "Unicode (UTF-8)"
 
-#: ../midori/midori-browser.c:4365
-#: ../midori/midori-websettings.c:218
+#: ../midori/midori-browser.c:4365 ../midori/midori-websettings.c:218
 msgid "Western (ISO-8859-1)"
 msgstr "Ocidental (ISO-8859-1)"
 
-#: ../midori/midori-browser.c:4368
-#: ../midori/midori-websettings.c:219
+#: ../midori/midori-browser.c:4368 ../midori/midori-websettings.c:219
 #: ../midori/midori-websettings.c:291
 msgid "Custom..."
 msgstr "Personalizar..."
@@ -758,15 +732,15 @@ msgstr "Abrir o local específicado"
 
 #: ../midori/midori-browser.c:4839
 msgid "_Web Search..."
-msgstr "Pesquisa _Web..."
+msgstr "Pesquisa na _Web..."
 
 #: ../midori/midori-browser.c:4841
 msgid "Run a web search"
-msgstr "Executar uma pesquisa web"
+msgstr "Executar uma pesquisa na web"
 
 #: ../midori/midori-browser.c:4862
 msgid "Reopen a previously closed tab or window"
-msgstr "Reabrir janela ou separador anteriormente fechado"
+msgstr "Reabrir janela ou aba anteriormente fechada"
 
 #: ../midori/midori-browser.c:4877
 msgid "_Recently visited pages"
@@ -776,14 +750,13 @@ msgstr "Páginas _Recentes"
 msgid "Reopen pages that you visited earlier"
 msgstr "Reabrir páginas visitadas anteriormente"
 
-#: ../midori/midori-browser.c:4894
-#: ../midori/sokoke.c:857
+#: ../midori/midori-browser.c:4894 ../midori/sokoke.c:857
 msgid "_Bookmarks"
-msgstr "_Marcadores"
+msgstr "_Favoritos"
 
 #: ../midori/midori-browser.c:4896
 msgid "Show the saved bookmarks"
-msgstr "Mostrar marcadores guardados"
+msgstr "Mostrar favoritos guardados"
 
 #: ../midori/midori-browser.c:4911
 msgid "_Tools"
@@ -808,7 +781,7 @@ msgstr "Menu"
 #. i18n: A panel at the bottom, to search text in pages
 #: ../midori/midori-browser.c:5127
 msgid "_Inline Find:"
-msgstr "Localizar:"
+msgstr "Local_izar:"
 
 #: ../midori/midori-browser.c:5152
 msgid "Previous"
@@ -838,32 +811,27 @@ msgstr "Apagar Tudo"
 #: ../midori/midori-browser.c:5552
 #, c-format
 msgid "Unexpected setting '%s'"
-msgstr "Definição inesperada '%s'"
+msgstr "Definição '%s' inesperada"
 
 #: ../midori/midori-locationaction.c:901
 #, c-format
 msgid "Search with %s"
 msgstr "Pesquisar com %s"
 
-#: ../midori/midori-panel.c:382
-#: ../midori/midori-panel.c:384
+#: ../midori/midori-panel.c:382 ../midori/midori-panel.c:384
 msgid "Detach chosen panel from the window"
 msgstr "Separar o painel escolhido da janela"
 
-#: ../midori/midori-panel.c:394
-#: ../midori/midori-panel.c:396
-#: ../midori/midori-panel.c:577
-#: ../midori/midori-panel.c:580
+#: ../midori/midori-panel.c:394 ../midori/midori-panel.c:396
+#: ../midori/midori-panel.c:577 ../midori/midori-panel.c:580
 msgid "Align sidepanel to the right"
 msgstr "Alinhar painel à direita"
 
-#: ../midori/midori-panel.c:406
-#: ../midori/midori-panel.c:407
+#: ../midori/midori-panel.c:406 ../midori/midori-panel.c:407
 msgid "Close panel"
 msgstr "Fechar painel"
 
-#: ../midori/midori-panel.c:578
-#: ../midori/midori-panel.c:581
+#: ../midori/midori-panel.c:578 ../midori/midori-panel.c:581
 msgid "Align sidepanel to the left"
 msgstr "Alinhar painel à esquerda"
 
@@ -889,7 +857,7 @@ msgstr "Mostrar Página Inicial"
 
 #: ../midori/midori-websettings.c:199
 msgid "Show last open tabs"
-msgstr "Mostrar últimos separadores abertos"
+msgstr "Mostrar últimas abas abertas"
 
 #: ../midori/midori-websettings.c:215
 msgid "Japanese (SHIFT_JIS)"
@@ -935,8 +903,7 @@ msgstr "Todos os cookies"
 msgid "Session cookies"
 msgstr "Cookies da sessão"
 
-#: ../midori/midori-websettings.c:272
-#: ../panels/midori-addons.c:94
+#: ../midori/midori-websettings.c:272 ../panels/midori-addons.c:94
 #: ../extensions/shortcuts.c:93
 msgid "None"
 msgstr "Nenhum"
@@ -996,11 +963,11 @@ msgstr "Última posição de painel de página guardada"
 
 #: ../midori/midori-websettings.c:406
 msgid "Last Web search"
-msgstr "Última pesquisa Web"
+msgstr "Última pesquisa da Web"
 
 #: ../midori/midori-websettings.c:407
 msgid "The last saved Web search"
-msgstr "Última pesquisa Web guardada"
+msgstr "Última pesquisa da Web guardada"
 
 #: ../midori/midori-websettings.c:416
 msgid "Show Menubar"
@@ -1020,11 +987,11 @@ msgstr "Marque se quiser mostrar a barra de navegação"
 
 #: ../midori/midori-websettings.c:434
 msgid "Show Bookmarkbar"
-msgstr "Mostrar Barra de Marcadores"
+msgstr "Mostrar Barra de Favoritos"
 
 #: ../midori/midori-websettings.c:435
 msgid "Whether to show the bookmarkbar"
-msgstr "Marque se quiser mostrar a barra de marcadores"
+msgstr "Marque se quiser mostrar a barra de favoritos"
 
 #: ../midori/midori-websettings.c:443
 msgid "Show Panel"
@@ -1044,11 +1011,11 @@ msgstr "Marque se quiser mostrar a barra de transferências"
 
 #: ../midori/midori-websettings.c:468
 msgid "Show Statusbar"
-msgstr "Mostrar Barra de Estado"
+msgstr "Mostrar Barra de Status"
 
 #: ../midori/midori-websettings.c:469
 msgid "Whether to show the statusbar"
-msgstr "Marque se quiser mostrar a barra de estado"
+msgstr "Marque se quiser mostrar a barra de status"
 
 #: ../midori/midori-websettings.c:478
 msgid "Toolbar Style:"
@@ -1064,11 +1031,12 @@ msgstr "Mostrar evolução na entrada de localização"
 
 #: ../midori/midori-websettings.c:496
 msgid "Whether to show loading progress in the location entry"
-msgstr "Marque para mostrar a evolução do carregamento na entrada de localização"
+msgstr ""
+"Marque para mostrar a evolução do carregamento na entrada de localização"
 
 #: ../midori/midori-websettings.c:511
 msgid "Search engines in location completion"
-msgstr "Sites de pesquisa na conclusão da localização"
+msgstr "Sites de pesquisa ao completar localizações"
 
 #: ../midori/midori-websettings.c:512
 msgid "Whether to show search engines in the location completion"
@@ -1108,11 +1076,11 @@ msgstr "Marque para alinhar o painel lateral à direita"
 
 #: ../midori/midori-websettings.c:571
 msgid "When Midori starts:"
-msgstr "Ao iniciar Midori:"
+msgstr "Ao iniciar Midori:"
 
 #: ../midori/midori-websettings.c:572
 msgid "What to do when Midori starts"
-msgstr "O que fazer ao iniciar Midori"
+msgstr "O que fazer ao iniciar Midori"
 
 #: ../midori/midori-websettings.c:581
 msgid "Homepage:"
@@ -1153,7 +1121,8 @@ msgstr "Perguntar pasta de destino"
 
 #: ../midori/midori-websettings.c:644
 msgid "Whether to ask for the destination folder when downloading a file"
-msgstr "Marcar para perguntar por uma pasta de destino ao transferir um arquivo"
+msgstr ""
+"Marcar para perguntar por uma pasta de destino ao transferir um arquivo"
 
 #: ../midori/midori-websettings.c:663
 msgid "Notify when a transfer has been completed"
@@ -1165,11 +1134,11 @@ msgstr "Marque para mostrar uma notificação ao concluir a transferência"
 
 #: ../midori/midori-websettings.c:676
 msgid "Download Manager"
-msgstr "Gestor de Transferências"
+msgstr "Gerenciador de Transferências"
 
 #: ../midori/midori-websettings.c:677
 msgid "An external download manager"
-msgstr "Um gestor de transferências externo"
+msgstr "Um gerenciador de transferências externo"
 
 #: ../midori/midori-websettings.c:685
 msgid "Text Editor"
@@ -1241,7 +1210,7 @@ msgstr "Clicar na roda do mouse abre Seleção"
 
 #: ../midori/midori-websettings.c:769
 msgid "Load an address from the selection via middle click"
-msgstr "Carregar endereço slecionado através de clique na roda do mouse"
+msgstr "Carregar endereço selecionado através de clique na roda do mouse"
 
 #: ../midori/midori-websettings.c:777
 msgid "Open tabs in the background"
@@ -1301,7 +1270,7 @@ msgstr "Só aceitar cookies do site original"
 
 #: ../midori/midori-websettings.c:856
 msgid "Maximum cookie age"
-msgstr "Antiguidade máxima de cookies"
+msgstr "Idade máxima dos cookies"
 
 #: ../midori/midori-websettings.c:857
 msgid "The maximum number of days to save cookies for"
@@ -1317,7 +1286,7 @@ msgstr "Marque para guardar as últimas páginas visitadas"
 
 #: ../midori/midori-websettings.c:876
 msgid "Maximum history age"
-msgstr "Antiguidade máxima do histórico"
+msgstr "Idade máxima do histórico"
 
 #: ../midori/midori-websettings.c:877
 msgid "The maximum number of days to save the history for"
@@ -1329,7 +1298,7 @@ msgstr "Lembrar dados de formulários"
 
 #: ../midori/midori-websettings.c:886
 msgid "Whether the last form inputs are saved"
-msgstr "Marque psts guardar os dados de formulário"
+msgstr "Marque para guardar os dados de formulário"
 
 #: ../midori/midori-websettings.c:894
 msgid "Remember last downloaded files"
@@ -1337,7 +1306,7 @@ msgstr "Lembrar últimas transferências "
 
 #: ../midori/midori-websettings.c:895
 msgid "Whether the last downloaded files are saved"
-msgstr "Marque psts guardar as últimas transferências"
+msgstr "Marque para guardar as últimas transferências"
 
 #: ../midori/midori-websettings.c:905
 msgid "Proxy Server"
@@ -1395,8 +1364,7 @@ msgstr "A página '%s' não foi carregada."
 
 #. WebKit 1.1.6 doesn't handle "alternate content" flawlessly,
 #. so reloading via Javascript works but not via API calls.
-#: ../midori/midori-view.c:783
-#: ../midori/midori-view.c:3013
+#: ../midori/midori-view.c:783 ../midori/midori-view.c:3013
 #: ../extensions/feed-panel/main.c:112
 msgid "Error"
 msgstr "Erro"
@@ -1408,8 +1376,7 @@ msgstr "Tente novamente"
 #. i18n: The title of the 404 - Not found error page
 #. Error pages are special, we want to try loading the destination
 #. again, not the error page which isn't even a proper page
-#: ../midori/midori-view.c:818
-#: ../midori/midori-view.c:3017
+#: ../midori/midori-view.c:818 ../midori/midori-view.c:3017
 #, c-format
 msgid "Not found - %s"
 msgstr "Não encontrado(a) - %s"
@@ -1432,11 +1399,11 @@ msgstr "_Destino de Download do Link"
 
 #: ../midori/midori-view.c:1236
 msgid "_Save Link destination"
-msgstr "De_stino para Guardar Ligação"
+msgstr "De_stino para Guardar Link"
 
 #: ../midori/midori-view.c:1245
 msgid "Download with Download _Manager"
-msgstr "Transferir com _Gestor de Transferências"
+msgstr "Transferir com _Gerenciador de Transferências"
 
 #: ../midori/midori-view.c:1274
 msgid "Search _with"
@@ -1509,8 +1476,7 @@ msgstr "Nenhuma documentação instalada"
 msgid "Blank page"
 msgstr "Página em branco"
 
-#: ../midori/midori-view.c:2551
-#: ../midori/sokoke.c:865
+#: ../midori/midori-view.c:2551 ../midori/sokoke.c:865
 msgid "New _Tab"
 msgstr "_Nova Aba"
 
@@ -1544,8 +1510,7 @@ msgstr "Início"
 msgid "Use current page as homepage"
 msgstr "Usar página atual como página inicial"
 
-#: ../midori/midori-preferences.c:425
-#: ../panels/midori-transfers.c:88
+#: ../midori/midori-preferences.c:425 ../panels/midori-transfers.c:88
 msgid "Transfers"
 msgstr "Transferências"
 
@@ -1572,7 +1537,7 @@ msgstr "O tamanho padrão da fonte para apresentar texto"
 
 #: ../midori/midori-preferences.c:453
 msgid "Fixed-width Font Family"
-msgstr "Familia de Fontes de Largura Fixa"
+msgstr "Família de Fontes de Largura Fixa"
 
 #: ../midori/midori-preferences.c:457
 msgid "The font family used to display fixed-width text"
@@ -1607,14 +1572,13 @@ msgstr "Comportamento"
 msgid "Features"
 msgstr "Funções"
 
-#: ../midori/midori-preferences.c:487
-#: ../extensions/statusbar-features.c:88
+#: ../midori/midori-preferences.c:487 ../extensions/statusbar-features.c:88
 msgid "Load images automatically"
 msgstr "Carregar imagens automaticamente"
 
 #: ../midori/midori-preferences.c:488
 msgid "Load and display images automatically"
-msgstr "Carregar e apresentar automaticamente imagens"
+msgstr "Carregar e apresentar imagens automaticamente"
 
 #: ../midori/midori-preferences.c:491
 msgid "Shrink images automatically"
@@ -1640,23 +1604,21 @@ msgstr "Áreas de texto dimensionáveis"
 msgid "Whether text areas are resizable"
 msgstr "Marque para redimensionar as áreas de texto"
 
-#: ../midori/midori-preferences.c:503
-#: ../extensions/statusbar-features.c:100
+#: ../midori/midori-preferences.c:503 ../extensions/statusbar-features.c:100
 msgid "Enable scripts"
 msgstr "Ativar scripts"
 
 #: ../midori/midori-preferences.c:504
 msgid "Enable embedded scripting languages"
-msgstr "Ativar linguagens já incorporadas de scripts"
+msgstr "Ativar linguagens de scripts já incorporadas"
 
-#: ../midori/midori-preferences.c:507
-#: ../extensions/statusbar-features.c:112
+#: ../midori/midori-preferences.c:507 ../extensions/statusbar-features.c:112
 msgid "Enable Netscape plugins"
-msgstr "Ativar plugins para o Netscape"
+msgstr "Ativar plugins do Netscape"
 
 #: ../midori/midori-preferences.c:508
 msgid "Enable embedded Netscape plugin objects"
-msgstr "Activar plugins nativos do Netscape"
+msgstr "Ativar plugins nativos do Netscape"
 
 #: ../midori/midori-preferences.c:511
 msgid "Enforce 96 dots per inch"
@@ -1688,8 +1650,12 @@ msgstr "Ativar verificação ortográfica ao digitar"
 
 #. i18n: The example should be adjusted to contain a good local default
 #: ../midori/midori-preferences.c:531
-msgid "A comma separated list of languages to be used for spell checking, for example \"en_GB,de_DE\""
-msgstr "Uma lista de idiomas, separados por vírgulas, para a verificação ortográficas. Por exemplo \"en_GB,de_DE\""
+msgid ""
+"A comma separated list of languages to be used for spell checking, for "
+"example \"en_GB,de_DE\""
+msgstr ""
+"Uma lista de idiomas, separados por vírgulas, para a verificação "
+"ortográfica. Por exemplo \"pt,pt__BR\""
 
 #. Page "Interface"
 #: ../midori/midori-preferences.c:536
@@ -1714,8 +1680,7 @@ msgid "External applications"
 msgstr "Aplicações externas"
 
 #. Page "Network"
-#: ../midori/midori-preferences.c:621
-#: ../midori/midori-preferences.c:622
+#: ../midori/midori-preferences.c:621 ../midori/midori-preferences.c:622
 msgid "Network"
 msgstr "Rede"
 
@@ -1732,13 +1697,11 @@ msgstr "Privacidade"
 msgid "Web Cookies"
 msgstr "Cookies"
 
-#: ../midori/midori-preferences.c:668
-#: ../midori/midori-preferences.c:678
+#: ../midori/midori-preferences.c:668 ../midori/midori-preferences.c:678
 msgid "days"
 msgstr "dias"
 
-#: ../midori/midori-searchaction.c:488
-#: ../katze/katze-arrayaction.c:335
+#: ../midori/midori-searchaction.c:488 ../katze/katze-arrayaction.c:335
 msgid "Empty"
 msgstr "Vazio"
 
@@ -1764,24 +1727,23 @@ msgstr "_Token:"
 
 #: ../midori/midori-searchaction.c:1213
 msgid "Manage Search Engines"
-msgstr "Gerir Sites de Pesquisa"
+msgstr "Gerenciar Sites de Pesquisa"
 
 #: ../midori/midori-searchaction.c:1312
 msgid "Use as _default"
-msgstr "Usar por _omissão"
+msgstr "Usar por _default"
 
-#: ../midori/sokoke.c:162
-#: ../midori/sokoke.c:174
+#: ../midori/sokoke.c:162 ../midori/sokoke.c:174
 msgid "Could not run external program."
 msgstr "Não foi possível executar o programa externo."
 
 #: ../midori/sokoke.c:856
 msgid "_Bookmark"
-msgstr "_Marcador"
+msgstr "_Favorito"
 
 #: ../midori/sokoke.c:858
 msgid "Add Boo_kmark"
-msgstr "Adicionar _Marcador"
+msgstr "Adicionar _Favorito"
 
 #: ../midori/sokoke.c:859
 msgid "_Console"
@@ -1801,7 +1763,7 @@ msgstr "_Página Inicial"
 
 #: ../midori/sokoke.c:863
 msgid "_Userscripts"
-msgstr "Scripts _Usuário"
+msgstr "Scripts do _Usuário"
 
 #: ../midori/sokoke.c:864
 msgid "User_styles"
@@ -1815,27 +1777,25 @@ msgstr "_Transferências"
 msgid "Netscape p_lugins"
 msgstr "P_lugins do Netscape"
 
-#: ../panels/midori-addons.c:95
-#: ../panels/midori-addons.c:141
+#: ../panels/midori-addons.c:95 ../panels/midori-addons.c:141
 msgid "Userscripts"
-msgstr "Scripts de Usuário"
+msgstr "Scripts do Usuário"
 
-#: ../panels/midori-addons.c:96
-#: ../panels/midori-addons.c:143
+#: ../panels/midori-addons.c:96 ../panels/midori-addons.c:143
 msgid "Userstyles"
 msgstr "Estilos de usuário"
 
 #: ../panels/midori-bookmarks.c:108
 msgid "Bookmarks"
-msgstr "Marcadores"
+msgstr "Favoritos"
 
 #: ../panels/midori-bookmarks.c:239
 msgid "Edit the selected bookmark"
-msgstr "Editar marcador selecionado"
+msgstr "Editar favorito selecionado"
 
 #: ../panels/midori-bookmarks.c:247
 msgid "Delete the selected bookmark"
-msgstr "Apagar marcador selecionado"
+msgstr "Apagar favorito selecionado"
 
 #: ../panels/midori-bookmarks.c:260
 msgid "Add a new folder"
@@ -1859,7 +1819,7 @@ msgstr "Tem certeza de que quer remover todo o histórico?"
 
 #: ../panels/midori-history.c:217
 msgid "Bookmark the selected history item"
-msgstr "Marcar o item de histórico selecionado"
+msgstr "Marcar o item de histórico selecionado como favorito"
 
 #: ../panels/midori-history.c:226
 msgid "Delete the selected history item"
@@ -1888,8 +1848,7 @@ msgstr "Hoje"
 msgid "Yesterday"
 msgstr "Ontem"
 
-#: ../panels/midori-plugins.c:87
-#: ../extensions/statusbar-features.c:108
+#: ../panels/midori-plugins.c:87 ../extensions/statusbar-features.c:108
 msgid "Netscape plugins"
 msgstr "Plugins do Netscape"
 
@@ -1940,20 +1899,18 @@ msgstr "O ícone padrão '%s' não foi carregado"
 msgid "Animation frames are broken"
 msgstr "Frames de animação corrompidos"
 
-#: ../katze/katze-utils.c:200
-#: ../katze/katze-utils.c:407
+#: ../katze/katze-utils.c:200 ../katze/katze-utils.c:407
 #, c-format
 msgid "Property '%s' is invalid for %s"
-msgstr "Propriedade %s' é inválida para %s"
+msgstr "Propriedade '%s' é inválida para %s"
 
-#: ../katze/katze-utils.c:235
-#: ../katze/katze-utils.c:264
+#: ../katze/katze-utils.c:235 ../katze/katze-utils.c:264
 msgid "Choose file"
-msgstr "Escolha arquivo"
+msgstr "Escolha arquivo"
 
 #: ../katze/katze-utils.c:250
 msgid "Choose folder"
-msgstr "Escolha pasta"
+msgstr "Escolha pasta"
 
 #: ../extensions/adblock.c:167
 msgid "Configure Advertisement filters"
@@ -1969,11 +1926,11 @@ msgstr "Bloqueador de propagandas"
 
 #: ../extensions/adblock.c:563
 msgid "Block advertisements according to a filter list"
-msgstr "Bloquear propagandas de acordo com a lista"
+msgstr "Bloquear propagandas de acordo com uma lista de sites banidos"
 
 #: ../extensions/colorful-tabs.c:115
 msgid "Tint tabs distinctly"
-msgstr "Cor distinta para abas"
+msgstr "Cores distintas para abas"
 
 #: ../extensions/colorful-tabs.c:151
 msgid "Colorful Tabs"
@@ -1986,11 +1943,15 @@ msgstr "Cor distinta para cada aba"
 #: ../extensions/cookie-manager/cookie-manager-page.c:79
 #: ../extensions/cookie-manager/main.c:56
 msgid "Cookie Manager"
-msgstr "Gestor de Cookies"
+msgstr "Gerenciador de Cookies"
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:111
-msgid "Deletes all shown cookies. If a filter is set, only those cookies are deleted which match the filter."
-msgstr "Apagar todos os cookies mostrados. Se definir um filtro, só serão eliminados os cookies que coincidirem com o filtro."
+msgid ""
+"Deletes all shown cookies. If a filter is set, only those cookies are "
+"deleted which match the filter."
+msgstr ""
+"Apagar todos os cookies mostrados. Se definir um filtro, só serão eliminados "
+"os cookies que coincidirem com o filtro."
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:126
 msgid "Expand All"
@@ -2026,7 +1987,7 @@ msgid ""
 "<b>Secure</b>: %s\n"
 "<b>Expires</b>: %s"
 msgstr ""
-"<b>Hospedeiro</b>: %s\n"
+"<b>Site</b>: %s\n"
 "<b>Nome</b>: %s\n"
 "<b>Valor</b>: %s\n"
 "<b>Caminho</b>: %s\n"
@@ -2058,12 +2019,16 @@ msgid "Filter:"
 msgstr "Filtro:"
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:928
-msgid "Enter a filter string to show only cookies whose name or domain field match the entered filter"
-msgstr "Introduza um filtro para mostrar apenas os cookies cujo nome ou domínio coincidam com o filtro"
+msgid ""
+"Enter a filter string to show only cookies whose name or domain field match "
+"the entered filter"
+msgstr ""
+"Introduza um filtro para mostrar apenas os cookies cujo nome ou domínio "
+"coincidam com o filtro"
 
 #: ../extensions/cookie-manager/main.c:40
 msgid "_Cookie Manager"
-msgstr "Gestor de _Cookies"
+msgstr "Gerenciador de _Cookies"
 
 #: ../extensions/cookie-manager/main.c:57
 msgid "List, view and delete cookies"
@@ -2071,18 +2036,18 @@ msgstr "Listar, ver e apagar cookies"
 
 #: ../extensions/feed-panel/feed-atom.c:242
 msgid "Failed to find required Atom \"entry\" elements in XML data."
-msgstr "Falha ao encontrar os elementos de \"entrada\" Atom nos dados XML."
+msgstr "Falha ao encontrar elementos \"entry\" do Atom nos dados XML."
 
 #: ../extensions/feed-panel/feed-atom.c:348
 msgid "Failed to find required Atom \"feed\" elements in XML data."
-msgstr "Falha ao encontrar os elementos de \"feed\" Atom nos dados XML."
+msgstr "Falha ao encontrar elementos \"feed\" do Atom nos dados XML."
 
 #. i18n: The local date a feed was last updated
 #: ../extensions/feed-panel/feed-panel.c:399
 #, c-format
 msgctxt "Feed"
 msgid "Last updated: %s."
-msgstr "Última atualização : %s."
+msgstr "Última atualização: %s."
 
 #: ../extensions/feed-panel/feed-panel.c:664
 msgid "Feeds"
@@ -2103,7 +2068,7 @@ msgstr "_Feeds"
 #: ../extensions/feed-panel/feed-parse.c:185
 #, c-format
 msgid "Failed to find root element in feed XML data."
-msgstr "Falha ao encontrar o elemento raiz nos dados do XML do feed."
+msgstr "Falha ao encontrar o elemento raiz nos dados XML do feed."
 
 #: ../extensions/feed-panel/feed-parse.c:225
 #, c-format
@@ -2117,7 +2082,7 @@ msgstr "Falha ao analisar o XML do feed: %s"
 
 #: ../extensions/feed-panel/feed-rss.c:46
 msgid "Failed to find \"channel\" element in RSS XML data."
-msgstr "Falha ao encontrar os elementos de \"canal\" nos dados RSS XML."
+msgstr "Falha ao encontrar elemento \"channel\" nos dados RSS XML."
 
 #: ../extensions/feed-panel/feed-rss.c:51
 msgid "Unsupported RSS version found."
@@ -2125,11 +2090,11 @@ msgstr "Encontrada uma versão RSS não suportada."
 
 #: ../extensions/feed-panel/feed-rss.c:148
 msgid "Failed to find required RSS \"item\" elements in XML data."
-msgstr "Falha ao encontrar os elementos de \"item\" de RSS nos dados XML."
+msgstr "Falha ao encontrar elementos \"item\" de RSS nos dados XML."
 
 #: ../extensions/feed-panel/feed-rss.c:248
 msgid "Failed to find required RSS \"channel\" elements in XML data."
-msgstr "Falha ao encontrar os elementos de \"canal\" de RSS nos dados XML."
+msgstr "Falha ao encontrar elementos \"channel\" de RSS nos dados XML."
 
 #: ../extensions/feed-panel/main.c:114
 #, c-format
@@ -2162,14 +2127,13 @@ msgid "Control Midori by moving the mouse"
 msgstr "Controlar o Midori movendo o mouse"
 
 #. i18n: A panel showing a user specified web page
-#: ../extensions/page-holder.c:129
-#: ../extensions/page-holder.c:177
+#: ../extensions/page-holder.c:129 ../extensions/page-holder.c:177
 msgid "Pageholder"
-msgstr "Titular de Página"
+msgstr "Página padrão"
 
 #: ../extensions/page-holder.c:161
 msgid "_Pageholder"
-msgstr "Titular de _Página"
+msgstr "_Página padrão"
 
 #: ../extensions/shortcuts.c:172
 msgid "Customize Keyboard shortcuts"
@@ -2197,14 +2161,13 @@ msgstr "Scripts"
 
 #: ../extensions/statusbar-features.c:149
 msgid "Statusbar Features"
-msgstr "Funções da barra de estado"
+msgstr "Funções da barra de status"
 
 #: ../extensions/statusbar-features.c:150
 msgid "Easily toggle features on web pages on and off"
 msgstr "Alternar facilmente as funções ligado/desligado nas páginas web"
 
-#: ../extensions/tab-panel.c:383
-#: ../extensions/tab-panel.c:443
+#: ../extensions/tab-panel.c:383 ../extensions/tab-panel.c:443
 msgid "Tab Panel"
 msgstr "Painel de Abas"
 
@@ -2221,8 +2184,12 @@ msgid "Customize Toolbar"
 msgstr "Personalizar Barra de Ferramentas"
 
 #: ../extensions/toolbar-editor.c:407
-msgid "Select items to be displayed on the toolbar. Items can be reodered by drag and drop."
-msgstr "Selecione os itens a mostar na barra de ferramentas. Os itens podem ser ordenados por arrastamento."
+msgid ""
+"Select items to be displayed on the toolbar. Items can be reodered by drag "
+"and drop."
+msgstr ""
+"Selecione os itens a mostar na barra de ferramentas. Os itens podem ser "
+"ordenados por arrastamento."
 
 #: ../extensions/toolbar-editor.c:423
 msgid "Available Items"
@@ -2246,64 +2213,93 @@ msgstr "Editar facilmente a barra de ferramentas"
 
 #~ msgid "_Closed Tabs and Windows"
 #~ msgstr "Abas e Janelas Fe_chadas"
+
 #~ msgid "Last open pages"
 #~ msgstr "Últimas páginas abertas"
+
 #~ msgid "Both"
 #~ msgstr "Texto e Ícones"
+
 #~ msgid "Both horizontal"
 #~ msgstr "Ambos na horizontal"
+
 #~ msgid "Load on Startup"
 #~ msgstr "Carregar ao Iniciar"
+
 #~ msgid "Download Folder"
 #~ msgstr "Pasta de Transferências"
+
 #~ msgid "Configure _Toolbar..."
 #~ msgstr "Configurar Barra de Ferramentas"
+
 #~ msgid "_Quick Find"
 #~ msgstr "Localização _Rápida"
+
 #~ msgid "Quickly jump to a word or phrase"
 #~ msgstr "Avanço rápido para palavra ou frase"
+
 #~ msgid "Whether to detach the chosen panel from the window"
 #~ msgstr "Marque se quiser separar da janela o painel escolhido"
+
 #~ msgid "Search"
 #~ msgstr "Procurar"
+
 #~ msgid "Warning: You are using a superuser account!"
 #~ msgstr "Aviso: Você está usando uma conta de super-usuário!"
+
 #~ msgid "_Enable"
 #~ msgstr "_Activar"
+
 #~ msgid "Enable"
 #~ msgstr "Ativar"
+
 #~ msgid "_Disable"
 #~ msgstr "_Desativar"
+
 #~ msgid "Disable"
 #~ msgstr "Desativar"
+
 #~ msgid "%d days ago"
 #~ msgstr "%d dias atrás"
+
 #~ msgid "P_lugins"
 #~ msgstr "P_lugins"
+
 #~ msgid "Plugins"
 #~ msgstr "Plugins"
+
 #~ msgid "%s has no property '%s'"
 #~ msgstr "%s não tem a propriedade '%s'"
+
 #~ msgid "%s cannot be assigned to %s.%s"
 #~ msgstr "%s não pode ser atribuído a %s.%s"
+
 #~ msgid "%s.%s cannot be accessed"
 #~ msgstr "%s. Não pode acessar %s"
+
 #~ msgid "Source"
 #~ msgstr "Origem"
+
 #~ msgid "URIs"
 #~ msgstr "URIs"
+
 #~ msgid "[URIs]"
 #~ msgstr "[URIs]"
+
 #~ msgid "_URL:"
 #~ msgstr "_URL:"
+
 #~ msgid "Root"
 #~ msgstr "Administrador"
+
 #~ msgid "HTTP Proxy"
 #~ msgstr "HTTP Proxy"
+
 #~ msgid "Open URL in New _Tab"
 #~ msgstr "Abrir URL em Nova _Aba"
+
 #~ msgid "_Icon (name or file):"
 #~ msgstr "_Ícone (nome ou arquivo):"
+
 #~ msgid "Manage search engines"
 #~ msgstr "Gerir sites de procura"
-
index cdef637d05e737eeba22530874594bc20e24db7f..9a9c46e37536e54404f2d5dea4fd86c08284d5ac 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,13 +7,13 @@ msgstr ""
 "Project-Id-Version: Midori 0.1.9-3345559\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-07-29 23:58+0200\n"
-"PO-Revision-Date: 2009-09-07 22:06+0200\n"
+"PO-Revision-Date: 2009-10-12 16:32+0200\n"
 "Last-Translator: Robert Hartl <hartl.robert@gmail.com>\n"
-"Language-Team: slovak <sk-i18n@lists.linux.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n>=2 && n<=4 ? 1 : 2;;\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
 
 #: ../data/midori.desktop.in.h:1
 msgid "Lightweight web browser"
@@ -111,7 +111,7 @@ msgstr ""
 
 #: ../midori/main.c:1116
 msgid "Modify _preferences"
-msgstr "Zmeniť _nastavenia"
+msgstr "Zmeniť _predvoľby"
 
 #: ../midori/main.c:1120
 msgid "Reset the last _session"
@@ -523,7 +523,7 @@ msgstr "Prepnúť zobrazenie na celú obrazovku"
 
 #: ../midori/midori-browser.c:4257
 msgid "_Go"
-msgstr "sť"
+msgstr "P_rejsť"
 
 #: ../midori/midori-browser.c:4260
 msgid "Go back to the previous page"
@@ -956,7 +956,7 @@ msgstr "Posledná stránka panelu"
 
 #: ../midori/midori-websettings.c:398
 msgid "The last saved panel page"
-msgstr ""
+msgstr "Posledná uložená stránka panala"
 
 #: ../midori/midori-websettings.c:406
 msgid "Last Web search"
@@ -1101,7 +1101,7 @@ msgstr "Zobraziť rýchly prístup na nových kartách"
 
 #: ../midori/midori-websettings.c:615
 msgid "Show speed dial in newly opened tabs"
-msgstr ""
+msgstr "Zobrazí rýchly prístup v novo otvorených kartách"
 
 #: ../midori/midori-websettings.c:623
 msgid "Save downloaded files to:"
@@ -1490,7 +1490,7 @@ msgstr "_Minimalizovať kartu"
 #: ../midori/midori-preferences.c:91
 #, c-format
 msgid "Preferences for %s"
-msgstr "Nastavenia pre %s"
+msgstr "Predvoľby pre %s"
 
 #. Page "General"
 #: ../midori/midori-preferences.c:398
@@ -1920,11 +1920,11 @@ msgstr "Blokovač reklamy"
 
 #: ../extensions/adblock.c:563
 msgid "Block advertisements according to a filter list"
-msgstr ""
+msgstr "Blokovať reklamy podľa zoznamu filtorv"
 
 #: ../extensions/colorful-tabs.c:115
 msgid "Tint tabs distinctly"
-msgstr "Ofarbiť kartdy"
+msgstr "Ofarbiť karty"
 
 #: ../extensions/colorful-tabs.c:151
 msgid "Colorful Tabs"
@@ -1963,11 +1963,11 @@ msgstr "Otázka"
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:471
 msgid "Only cookies which match the filter will be deleted."
-msgstr ""
+msgstr "Iba cookies, ktoré zodpovedajú filtru budú zmazané"
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:539
 msgid "At the end of the session"
-msgstr ""
+msgstr "Na konci sedenia"
 
 #: ../extensions/cookie-manager/cookie-manager-page.c:542
 #, c-format
index db9ea4ee94c61609942dcefc45924172179b59be..826ae89673af113efa86983336eeb8747ccc1461 100644 (file)
 
 #define SM "http://www.searchmash.com/search/"
 
+static void
+sokoke_assert_str_equal (const gchar* input,
+                         const gchar* result,
+                         const gchar* expected)
+{
+    if (g_strcmp0 (result, expected))
+    {
+        g_error ("Input: %s\nExpected: %s\nResult: %s",
+                 input ? input : "NULL",
+                 expected ? expected : "NULL",
+                 result ? result : "NULL");
+    }
+}
+
 static void
 test_input (const gchar* input,
             const gchar* expected)
@@ -41,13 +55,7 @@ test_input (const gchar* input,
     }
 
     gchar* uri = sokoke_magic_uri (input, search_engines);
-    if (g_strcmp0 (uri, expected))
-    {
-        g_error ("Input: %s\nExpected: %s\nResult: %s",
-                 input ? input : "NULL",
-                 expected ? expected : "NULL",
-                 uri ? uri : "NULL");
-    }
+    sokoke_assert_str_equal (input, uri, expected);
     g_free (uri);
 }
 
@@ -78,27 +86,46 @@ magic_uri_uri (void)
 static void
 magic_uri_idn (void)
 {
+    typedef struct
+    {
+        const gchar* before;
+        const gchar* after;
+    } URIItem;
+
+    static const URIItem items[] = {
+    #if HAVE_LIBIDN || defined (HAVE_LIBSOUP_2_27_90)
+     { "http://www.münchhausen.at", "http://www.xn--mnchhausen-9db.at" },
+     { "http://www.خداوند.com/", "http://www.xn--mgbndb8il.com/" },
+     { "айкидо.com", "xn--80aildf0a.com" },
+     { "http://東京理科大学.jp", "http://xn--1lq68wkwbj6ugkpigi.jp" },
+     { "https://青のネコ",  "https://xn--u9jthzcs263c" },
+    #else
+     { "http://www.münchhausen.at", NULL },
+     { "http://www.خداوند.com/", NULL },
+     { "айкидо.com", NULL },
+     { "http://東京理科大学.jp", NULL },
+     { "https://青のネコ.co.jp",  NULL },
+    #endif
+    { "http://en.wikipedia.org/wiki/Kölsch_language", NULL },
+    { "file:///home/mark/frühstück", NULL },
+     };
+    guint i;
+
+    for (i = 0; i < G_N_ELEMENTS (items); i++)
+    {
+        gchar* result = sokoke_uri_to_ascii (items[i].before);
+        const gchar* after = items[i].after ? items[i].after : items[i].before;
+        sokoke_assert_str_equal (items[i].before, result, after);
+        g_free (result);
+    }
+
     #if HAVE_LIBIDN
-    test_input ("http://www.münchhausen.at", "http://www.xn--mnchhausen-9db.at");
-    test_input ("http://www.خداوند.com/", "http://www.xn--mgbndb8il.com/");
     test_input ("айкидо.com", "http://xn--80aildf0a.com");
-    test_input ("http://東京理科大学.jp", "http://xn--1lq68wkwbj6ugkpigi.jp");
-    test_input ("https://青のネコ",  "https://xn--u9jthzcs263c");
     #else
-    test_input ("http://www.münchhausen.at", "http://www.münchhausen.at");
-    test_input ("http://www.خداوند.com/", "http://www.خداوند.com/");
     test_input ("айкидо.com", "http://айкидо.com");
-    test_input ("http://東京理科大学.jp", "http://東京理科大学.jp");
-    test_input ("https://青のネコ.co.jp",  "https://青のネコ.co.jp");
     #endif
-    test_input ("http://en.wikipedia.org/wiki/Kölsch_language",
-                "http://en.wikipedia.org/wiki/Kölsch_language");
-    test_input ("en.wikipedia.org/wiki/Kölsch_language",
-                "http://en.wikipedia.org/wiki/Kölsch_language");
     test_input ("sm Küchenzubehör", SM "Küchenzubehör");
     test_input ("sm 東京理科大学", SM "東京理科大学");
-    test_input ("file:///home/mark/frühstück",
-                "file:///home/mark/frühstück");
 }
 
 static void
@@ -114,6 +141,8 @@ magic_uri_search (void)
     test_input ("gtk2.0", NULL);
     test_input ("pcre++", NULL);
     test_input ("sm pcre++", SM "pcre%2B%2B");
+    test_input ("5580", NULL);
+    test_input ("sm 5580", SM "5580");
     test_input ("midori0.1.0", NULL);
     test_input ("midori 0.1.0", NULL);
     test_input ("search:cats", NULL);
@@ -165,6 +194,35 @@ magic_uri_performance (void)
     g_print ("\nTime needed for URI tests: %f ", g_test_timer_elapsed ());
 }
 
+static void
+magic_uri_format (void)
+{
+    typedef struct
+    {
+        const gchar* before;
+        const gchar* after;
+    } URIItem;
+
+    static const URIItem items[] = {
+     { "http://www.csszengarden.com", NULL },
+     { "http://live.gnome.org/GTK+/3.0/Tasks", NULL },
+     { "http://www.johannkönig.com/index.php?ausw=home", NULL },
+     { "http://digilife.bz/wiki/index.php?Python%E3%81%AE%E9%96%8B%E7%99%BA%E6%89%8B%E9%A0%86",
+       "http://digilife.bz/wiki/index.php?Pythonの開発手順" },
+     { "http://die-welt.net/~evgeni/LenovoBatteryLinux/", NULL },
+     { "http://wiki.c3sl.ufpr.br/multiseat/index.php/Xephyr_Solution", NULL },
+     };
+    guint i;
+
+    for (i = 0; i < G_N_ELEMENTS (items); i++)
+    {
+        gchar* result = sokoke_format_uri_for_display (items[i].before);
+        const gchar* after = items[i].after ? items[i].after : items[i].before;
+        sokoke_assert_str_equal (items[i].before, result, after);
+        g_free (result);
+    }
+}
+
 int
 main (int    argc,
       char** argv)
@@ -177,6 +235,7 @@ main (int    argc,
     g_test_add_func ("/magic-uri/search", magic_uri_search);
     g_test_add_func ("/magic-uri/pseudo", magic_uri_pseudo);
     g_test_add_func ("/magic-uri/performance", magic_uri_performance);
+    g_test_add_func ("/magic-uri/format", magic_uri_format);
 
     return g_test_run ();
 }
diff --git a/wscript b/wscript
index c243cb8db5c1e80263b3b72a61064d0f7856e926..9f345ae633792a4a355a4f354c8f5fc893020887 100644 (file)
--- a/wscript
+++ b/wscript
@@ -24,8 +24,8 @@ from TaskGen import extension
 import misc
 
 major = 0
-minor = 1
-micro = 10
+minor = 2
+micro = 0
 
 APPNAME = 'midori'
 VERSION = str (major) + '.' + str (minor) + '.' + str (micro)
@@ -181,15 +181,6 @@ def configure (conf):
         unique = 'no '
     conf.define ('HAVE_UNIQUE', [0,1][unique == 'yes'])
 
-    if option_enabled ('libidn'):
-        check_pkg ('libidn', '1.0', False)
-        libidn = ['N/A','yes'][conf.env['HAVE_LIBIDN'] == 1]
-        if libidn != 'yes':
-            option_checkfatal ('libidn', 'international domain names')
-    else:
-        libidn = 'no '
-    conf.define ('HAVE_LIBIDN', [0,1][libidn == 'yes'])
-
     if option_enabled ('sqlite'):
         check_pkg ('sqlite3', '3.0', False, var='SQLITE')
         sqlite = ['N/A','yes'][conf.env['HAVE_SQLITE'] == 1]
@@ -210,9 +201,22 @@ def configure (conf):
     check_pkg ('webkit-1.0', '1.1.1', args=args)
     check_pkg ('libsoup-2.4', '2.25.2')
     conf.define ('HAVE_LIBSOUP_2_25_2', 1)
-    check_pkg ('libsoup-2.4', '2.27.91', False, var='LIBSOUP_2_27_91')
+    check_pkg ('libsoup-2.4', '2.27.90', False, var='LIBSOUP_2_27_90')
     check_pkg ('libxml-2.0', '2.6')
 
+    if conf.env['HAVE_LIBSOUP_2_27_90']:
+       idn = 'yes'
+       conf.define ('HAVE_LIBIDN', 0)
+    else:
+        if option_enabled ('libidn'):
+            check_pkg ('libidn', '1.0', False)
+            idn = ['N/A','yes'][conf.env['HAVE_LIBIDN'] == 1]
+            if idn != 'yes':
+                option_checkfatal ('libidn', 'international domain names')
+        else:
+            idn = 'no '
+        conf.define ('HAVE_LIBIDN', [0,1][idn == 'yes'])
+
     if option_enabled ('hildon'):
         if check_pkg ('hildon-1', mandatory=False, var='HILDON'):
             check_pkg ('libosso', var='HILDON')
@@ -267,16 +271,15 @@ def configure (conf):
         elif debug_level == 'full':
             # -Wdeclaration-after-statement
             # -Wmissing-declarations -Wmissing-prototypes
-            # -Wwrite-strings
+            # -Wwrite-strings -Wunsafe-loop-optimizations -Wmissing-include-dirs
             conf.env.append_value ('CCFLAGS',
                 '-Wall -Wextra -O1 -g '
                 '-Waggregate-return -Wno-unused-parameter '
                 '-Wno-missing-field-initializers '
-                '-Wunsafe-loop-optimizations '
                 '-Wredundant-decls -Wmissing-noreturn '
                 '-Wshadow -Wpointer-arith -Wcast-align '
                 '-Winline -Wformat-security '
-                '-Winit-self -Wmissing-include-dirs -Wundef '
+                '-Winit-self -Wundef '
                 '-Wmissing-format-attribute -Wnested-externs '
                 '-DG_ENABLE_DEBUG'.split ())
     elif debug_level != 'none':
@@ -288,7 +291,7 @@ def configure (conf):
         Icon optimizations:  %(icons)s (rsvg-convert)
         Persistent history:  %(sqlite)s (sqlite3)
 
-        IDN support:         %(libidn)s (libidn)
+        IDN support:         %(idn)s (libidn or libsoup 2.27.90)
         User documentation:  %(user_docs)s (docutils)
         API documentation:   %(api_docs)s (gtk-doc)
         ''' % locals ()
@@ -450,6 +453,18 @@ def build (bld):
     bld.install_files ('${MDATADIR}/' + APPNAME + '/res', 'data/speeddial-head.html')
     bld.install_files ('${MDATADIR}/' + APPNAME + '/res', 'data/speeddial.json')
     bld.install_files ('${MDATADIR}/' + APPNAME + '/res', 'data/mootools.js')
+    bld.install_files ('${MDATADIR}/' + APPNAME, 'data/autosuggestcontrol.js')
+    bld.install_files ('${MDATADIR}/' + APPNAME, 'data/autosuggestcontrol.css')
+
+    # FIXME: Determine the library naming for other platforms
+    if Options.platform == 'linux':
+        extensions = os.listdir ('data/extensions')
+        for extension in extensions:
+            folder = 'lib' + extension + '.so'
+            source = 'data/extensions/' + extension +  '/config'
+            if os.path.exists (source):
+                bld.install_files ('${SYSCONFDIR}/' + APPNAME + \
+                                   '/extensions/' + folder, source)
 
     if Options.commands['check']:
         bld.add_subdirs ('tests')
@@ -511,7 +526,7 @@ def shutdown ():
             pass
         try:
             ext = 'MIDORI_EXTENSION_PATH=' + relfolder + os.sep + 'extensions'
-            nls = 'NLSPATH=' + relfolder + os.sep + 'po'
+            nls = 'MIDORI_NLSPATH=' + relfolder + os.sep + 'po'
             lang = os.environ['LANG']
             try:
                 for lang in os.listdir (folder + os.sep + 'po'):