From: Ryan Niebur Date: Sun, 18 Oct 2009 21:45:13 +0000 (-0700) Subject: Imported Upstream version 0.2.0 X-Git-Url: https://spindle.queued.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79bb58a7febf9e87a7fba5c3871b449bd354fa22;p=midori Imported Upstream version 0.2.0 --- diff --git a/ChangeLog b/ChangeLog index baa1134c..8a808dea 100644 --- 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 index 00000000..a7ca89d2 --- /dev/null +++ b/data/autosuggestcontrol.css @@ -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 index 00000000..fc0d251b --- /dev/null +++ b/data/autosuggestcontrol.js @@ -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 #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) + "easylist.adblockplus.org"); + #else + "http://easylist.adblockplus.org/"); + #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 ", 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 index 00000000..0667534d --- /dev/null +++ b/extensions/dnsprefetch.c @@ -0,0 +1,203 @@ +/* + Copyright (C) 2009 Alexander Butenko + + 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 + +#include "config.h" + +#include +#if HAVE_UNISTD_H + #include +#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 ", + 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 index 00000000..0cb119ca --- /dev/null +++ b/extensions/formhistory.c @@ -0,0 +1,308 @@ +/* + Copyright (C) 2009 Alexander Butenko + + 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 + +#include "config.h" + +#include +#if HAVE_UNISTD_H + #include +#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 +/* + + + autosuggest testcase + + +
+

+

+ +
+ + */ +#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 ", + NULL); + g_free (desc); + + if (should_init) + g_signal_connect (extension, "activate", + G_CALLBACK (formhistory_activate_cb), NULL); + + return extension; +} diff --git a/extensions/mouse-gestures/main.c b/extensions/mouse-gestures/main.c index 1e8707b7..cd39a283 100644 --- a/extensions/mouse-gestures/main.c +++ b/extensions/mouse-gestures/main.c @@ -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", diff --git a/extensions/tab-panel.c b/extensions/tab-panel.c index 0feb2c09..df6c70d1 100644 --- a/extensions/tab-panel.c +++ b/extensions/tab-panel.c @@ -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); } diff --git a/extensions/toolbar-editor.c b/extensions/toolbar-editor.c index 2a39057a..13c51b81 100644 --- a/extensions/toolbar-editor.c +++ b/extensions/toolbar-editor.c @@ -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 ", NULL); diff --git a/extensions/wscript_build b/extensions/wscript_build index 8f84a173..49c0247a 100644 --- a/extensions/wscript_build +++ b/extensions/wscript_build @@ -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' diff --git a/katze/katze-array.c b/katze/katze-array.c index 5df9291f..93a3f569 100644 --- a/katze/katze-array.c +++ b/katze/katze-array.c @@ -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 diff --git a/katze/katze-array.h b/katze/katze-array.h index 89bfea9c..af3370d5 100644 --- a/katze/katze-array.h +++ b/katze/katze-array.h @@ -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); diff --git a/katze/katze-http-auth.c b/katze/katze-http-auth.c index fb020822..38c6ce5c 100644 --- a/katze/katze-http-auth.c +++ b/katze/katze-http-auth.c @@ -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 diff --git a/katze/katze-net.c b/katze/katze-net.c index 8a82747b..e445aa8d 100644 --- a/katze/katze-net.c +++ b/katze/katze-net.c @@ -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 index 00000000..49239250 --- /dev/null +++ b/katze/katze-scrolled.c @@ -0,0 +1,1098 @@ +/* + Copyright (C) 2007 Henrik Hedberg + Copyright (C) 2009 Nadav Wiener + Copyright (C) 2009 Christian Dywan + + 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)¤t_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 index 00000000..e8787f17 --- /dev/null +++ b/katze/katze-scrolled.h @@ -0,0 +1,59 @@ +/* + Copyright (C) 2007 Henrik Hedberg + Copyright (C) 2009 Nadav Wiener + Copyright (C) 2009 Christian Dywan + + 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 + +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__ */ diff --git a/katze/katze-utils.c b/katze/katze-utils.c index 253d8955..473d0913 100644 --- a/katze/katze-utils.c +++ b/katze/katze-utils.c @@ -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); diff --git a/katze/katze.h b/katze/katze.h index 8dd286bf..ab85d27b 100644 --- a/katze/katze.h +++ b/katze/katze.h @@ -21,5 +21,6 @@ #include "katze-arrayaction.h" #include "katze-separatoraction.h" #include "katze-net.h" +#include "katze-scrolled.h" #endif /* __KATZE_H__ */ diff --git a/midori/main.c b/midori/main.c index 109b5a70..b4ed755b 100644 --- a/midori/main.c +++ b/midori/main.c @@ -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 diff --git a/midori/midori-array.c b/midori/midori-array.c index 4ea123b2..7004bea1 100644 --- a/midori/midori-array.c +++ b/midori/midori-array.c @@ -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\n"); return g_string_free (markup, FALSE); } diff --git a/midori/midori-browser.c b/midori/midori-browser.c index ac58f11f..03ffd135 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -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 ", 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"), "h", N_("Add shortcut to speed dial"), G_CALLBACK (_action_add_speed_dial_activate) }, + { "AddDesktopShortcut", NULL, + N_("Add Shortcut to the _desktop"), "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"), "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"), "U", + N_("View So_urce"), "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"), "Page_Down", N_("Switch to the next tab"), G_CALLBACK (_action_tab_next_activate) }, + { "TabCurrent", NULL, + N_("Focus _Current Tab"), "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 = "" "" "" + "" "" "" "" @@ -4700,6 +4991,8 @@ static const gchar* ui_markup = "" "" "" + "" + "" "" "" "" @@ -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); } diff --git a/midori/midori-extension.c b/midori/midori-extension.c index ece419fd..9eceea8b 100644 --- a/midori/midori-extension.c +++ b/midori/midori-extension.c @@ -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) diff --git a/midori/midori-locationaction.c b/midori/midori-locationaction.c index 0270f9c3..60e36cff 100644 --- a/midori/midori-locationaction.c +++ b/midori/midori-locationaction.c @@ -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 } /** diff --git a/midori/midori-locationaction.h b/midori/midori-locationaction.h index 593d55df..b3f1781f 100644 --- a/midori/midori-locationaction.h +++ b/midori/midori-locationaction.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2008 Christian Dywan + Copyright (C) 2008-2009 Christian Dywan 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); diff --git a/midori/midori-locationentry.c b/midori/midori-locationentry.c index 7d0b95e0..eba3477c 100644 --- a/midori/midori-locationentry.c +++ b/midori/midori-locationentry.c @@ -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; diff --git a/midori/midori-locationentry.h b/midori/midori-locationentry.h index f84d0b29..7a2317f4 100644 --- a/midori/midori-locationentry.h +++ b/midori/midori-locationentry.h @@ -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); diff --git a/midori/midori-panel.c b/midori/midori-panel.c index 6ae27e1c..13680175 100644 --- a/midori/midori-panel.c +++ b/midori/midori-panel.c @@ -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); diff --git a/midori/midori-preferences.c b/midori/midori-preferences.c index 751ba906..82c19c45 100644 --- a/midori/midori-preferences.c +++ b/midori/midori-preferences.c @@ -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 diff --git a/midori/midori-stock.h b/midori/midori-stock.h index 2ee090d0..5e5f86aa 100644 --- a/midori/midori-stock.h +++ b/midori/midori-stock.h @@ -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" diff --git a/midori/midori-view.c b/midori/midori-view.c index efb037cb..0890abf0 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -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); diff --git a/midori/midori-websettings.c b/midori/midori-websettings.c index 9acc74d0..336a14fb 100644 --- a/midori/midori-websettings.c +++ b/midori/midori-websettings.c @@ -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; diff --git a/midori/midori-websettings.h b/midori/midori-websettings.h index 91d88a08..82c79390 100644 --- a/midori/midori-websettings.h +++ b/midori/midori-websettings.h @@ -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 diff --git a/midori/sokoke.c b/midori/sokoke.c index 1bc9aa19..b2f4b59a 100644 --- a/midori/sokoke.c +++ b/midori/sokoke.c @@ -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); } /** diff --git a/midori/sokoke.h b/midori/sokoke.h index 9deee903..f01de6cc 100644 --- a/midori/sokoke.h +++ b/midori/sokoke.h @@ -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 index 00000000..bfe10744 --- /dev/null +++ b/module.xml @@ -0,0 +1,20 @@ + + + + midori + Midori is a lightweight web browser + + + + + + Christian Dywan + christian@twotoasts.de + kalikiana + + + diff --git a/panels/midori-addons.c b/panels/midori-addons.c index cd2d057a..0d1c092e 100644 --- a/panels/midori-addons.c +++ b/panels/midori-addons.c @@ -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; diff --git a/po/LINGUAS b/po/LINGUAS index 4d77fd22..eb729205 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -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 diff --git a/po/POTFILES.in b/po/POTFILES.in index 9a87c5d4..42792b86 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -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 diff --git a/po/ca.po b/po/ca.po index 2ad78cc6..7b41386a 100644 --- 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 \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 diff --git a/po/de.po b/po/de.po index 0a8e418f..de347d2a 100644 --- 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 \n" "Language-Team: German \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 '%s' has been downloaded." -msgstr "Die Datei «%s» wurde heruntergeladen." +msgstr "Die Datei »%s« 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 \n" "Christian Dywan " -#: ../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..." diff --git a/po/el.po b/po/el.po index 773350ff..e2fb1ffa 100644 --- 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 \n" "Language-Team: Greek \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 '%s' has been downloaded." msgstr "Το αρχείο '%s' έχει κατέβει." -#: ../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 "Ευάγγελος Μπαλάσκας 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 "Κ_ατέβασμα συνδέσμου προορισμού" +#: ../midori/midori-view.c:1661 +msgid "_Copy Link destination" +msgstr "Α_ντιγραφή συνδέσμου προορισμού" -#: ../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 "Μη διαθέσιμο σε αυτή την πλατφόρμα" + diff --git a/po/id.po b/po/id.po index 7ba6abcd..7168c460 100644 --- a/po/id.po +++ b/po/id.po @@ -1,1313 +1,1889 @@ # 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 2008 +# Andhika Padmawan , 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 \n" "Language-Team: Indonesian \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 '%s' has been downloaded." +msgstr "Berkas '%s' 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 "Separator" -msgstr "Pemisah" +#: ../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 " -#: ../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 "Separator" +msgstr "Pemisah" #: ../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 "" +"Host: %s\n" +"Name: %s\n" +"Value: %s\n" +"Path: %s\n" +"Secure: %s\n" +"Expires: %s" +msgstr "" +"Host: %s\n" +"Nama: %s\n" +"Nilai: %s\n" +"Alamat: %s\n" +"Keamanan: %s\n" +"Kadaluwarsa: %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" diff --git a/po/ja.po b/po/ja.po index 3ffc3c1f..d7e10e11 100644 --- 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 \n" "Language-Team: Japanese \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 '%s' has been downloaded." msgstr "ファイル '%s' をダウンロードしました。" -#: ../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 " -#: ../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 "リンク先をダウンロード(_D)" +#: ../midori/midori-view.c:1661 +msgid "_Copy Link destination" +msgstr "リンク先をコピー(_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 "リンクの場所のコピー(_A)" +msgstr "リンクの場所をコピー(_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 index 00000000..2a079dbe --- /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 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 \n" +"Language-Team: Korean \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 '%s' 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 " + +#: ../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 "Separator" +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 "" +"Host: %s\n" +"Name: %s\n" +"Value: %s\n" +"Path: %s\n" +"Secure: %s\n" +"Expires: %s" +msgstr "" +"호스트: %s\n" +"이름: %s\n" +"내용: %s\n" +"경로: %s\n" +"보안: %s\n" +"만료: %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 "" diff --git a/po/pt_BR.po b/po/pt_BR.po index a05bd709..8966fb27 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -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 \n" "Language-Team: Rogério Brito \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 " 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 o 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 o 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 o arquivo" #: ../katze/katze-utils.c:250 msgid "Choose folder" -msgstr "Escolha pasta" +msgstr "Escolha a 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 "" "Secure: %s\n" "Expires: %s" msgstr "" -"Hospedeiro: %s\n" +"Site: %s\n" "Nome: %s\n" "Valor: %s\n" "Caminho: %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" - diff --git a/po/sk.po b/po/sk.po index cdef637d..9a9c46e3 100644 --- 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 \n" -"Language-Team: slovak \n" +"Language-Team: Slovak \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 diff --git a/tests/magic-uri.c b/tests/magic-uri.c index db9ea4ee..826ae896 100644 --- a/tests/magic-uri.c +++ b/tests/magic-uri.c @@ -18,6 +18,20 @@ #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 c243cb8d..9f345ae6 100644 --- 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'):