diff options
author | Shaun McCance <shaunm@gnome.org> | 2010-06-16 14:33:58 -0500 |
---|---|---|
committer | Shaun McCance <shaunm@gnome.org> | 2010-06-16 14:33:58 -0500 |
commit | bff85a2245cf505195d5c26b9617251f9f26365e (patch) | |
tree | 79a166363dd3a80342bdfedaf2356dab528f6d29 | |
parent | c75080dd47f03209e7ebaed20bd954d1799f8b96 (diff) | |
parent | aa2d430e9b23e7b2106486b4c5ce1715d114747d (diff) | |
download | yelp-bff85a2245cf505195d5c26b9617251f9f26365e.tar.gz |
Merge branch 'master' into gdbus
46 files changed, 5529 insertions, 4326 deletions
@@ -1,3 +1,53 @@ +Changes in 2.31.5: +------------------ +* New "Read Later" feature +* Support for proposed XDG help: URI scheme +* Use entire search path when loading Mallard docs +* Updated for new yelp-xsl common HTML output +* New bookmarks editor window +* Man pages are back again +* Recognize Mallard docs by index.page.stub in editor mode +* Fix for incorrect bookmarks titles when switching docs +* Updated translations: + de (Mario Blättermann) + es (Jorge González) + et (Ivar Smolin) + gl (Fran Diéguez) + he (Yaron Shahrabani) + nb (Kjartan Maraas) + sl (Matej Urbančič) + zh_CN (Funda Wang) + +Changes in 2.31.4: +------------------ +* Build fixes for gsettings and bumped yelp-xsl requirement + +Changes in 2.31.3: +------------------ +* Added DocBook 5 support (Brian M. Carlson) +* Accept dragged documents on Yelp windows +* Context-sensitive right-click menus +* Store scroll positions in back/forward list +* Basic print support added +* Better handling of plain text documents +* Added emblems to drop-downs on bookmarked locations +* Updated LZMA decoder to the new API (Javier Jardón) +* Compile-time options for lzma and bz2 +* Color animation on search entry when focused +* Find bar added, slides in from bottom +* Ctrl+S now starts a search +* Fixed some issues with page titles not being displayed +* Fixes for relative links in HTML documents +* Automatically update bookmarks icons and titles +* Use new common HTML output from yelp-xsl +* Fixed issue that prevented primary window from being used +* Updated translations: + es (Jorge González) + gl (Fran Diéguez) + id (Andika Triwidada) + or (Manoj Kumar Giri) + sl (Matej Urbančič) + Changes in 2.31.2: ------------------ * Location entry completions are sorted by icon and title. diff --git a/configure.ac b/configure.ac index a5ecb1f8..8fefea2a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.63]) -AC_INIT([Yelp],[2.31.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=yelp],[yelp]) +AC_INIT([Yelp],[2.31.5],[http://bugzilla.gnome.org/enter_bug.cgi?product=yelp],[yelp]) AC_CONFIG_SRCDIR([src/yelp.c]) AC_CONFIG_HEADERS([config.h]) @@ -36,7 +36,7 @@ PKG_CHECK_MODULES(YELP, libexslt >= 0.8.1 dbus-glib-1 webkit-1.0 >= 1.1.15 - yelp-xsl + yelp-xsl >= 2.31.3 ]) AC_SUBST([YELP_CFLAGS]) AC_SUBST([YELP_LIBS]) @@ -131,12 +131,12 @@ AC_SUBST(XSL_DB2XHTML) XSL_MAL2XHTML="`$PKG_CONFIG --variable=mal2xhtml yelp-xsl`" AC_SUBST(XSL_MAL2XHTML) -XSL_THEME_COLORS="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-colors.xsl" -AC_SUBST(XSL_THEME_COLORS) -XSL_THEME_ICONS="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-icons.xsl" -AC_SUBST(XSL_THEME_ICONS) -XSL_THEME_HTML="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/theme/theme-html.xsl" -AC_SUBST(XSL_THEME_HTML) +XSL_COLOR="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/common/color.xsl" +AC_SUBST(XSL_COLOR) +XSL_ICONS="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/common/icons.xsl" +AC_SUBST(XSL_ICONS) +XSL_HTML="`$PKG_CONFIG --variable=xsltdir yelp-xsl`/common/html.xsl" +AC_SUBST(XSL_HTML) XSL_GETTEXT="`$PKG_CONFIG --variable=gettext yelp-xsl`" AC_SUBST(XSL_GETTEXT) @@ -201,6 +201,7 @@ stylesheets/db2html.xsl stylesheets/db-title.xsl stylesheets/info2html.xsl stylesheets/mal2html.xsl +stylesheets/man2html.xsl stylesheets/toc2html.xsl stylesheets/yelp-common.xsl data/Makefile diff --git a/data/Makefile.am b/data/Makefile.am index adab8627..50334c4e 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -6,12 +6,8 @@ MOSTLYCLEANFILES = @INTLTOOL_XML_RULE@ @INTLTOOL_SCHEMAS_RULE@ -gsettingsschema_DATA = org.gnome.yelp.gschema.xml -@GSETTINGS_CHECK_RULE@ -if GSETTINGS_SCHEMAS_INSTALL -install-data-hook: - $(GLIB_COMPILE_SCHEMAS) $(DESTDIR)$(gsettingsschemadir) -endif +gsettings_SCHEMAS = org.gnome.yelp.gschema.xml +@GSETTINGS_RULES@ tocdir = $(datadir)/yelp toc_DATA = man.xml toc.xml scrollkeeper.xml info.xml @@ -30,7 +26,6 @@ EXTRA_DIST = \ toc.xml toc.xml.in \ info.xml info.xml.in \ scrollkeeper.xml default.css \ - $(gsettingsschema_DATA) \ - $(js_DATA) + $(gsettings_SCHEMAS) $(js_DATA) CLEANFILES = toc.xml man.xml info.xml diff --git a/data/org.gnome.yelp.gschema.xml b/data/org.gnome.yelp.gschema.xml index 250c12a3..0f325aec 100644 --- a/data/org.gnome.yelp.gschema.xml +++ b/data/org.gnome.yelp.gschema.xml @@ -1,5 +1,5 @@ <schemalist> -<schema id="org.gnome.yelp" path="/org/gnome/yelp/"> +<schema id="org.gnome.yelp" path="/apps/yelp/"> <key name="show-cursor" type="b"> <default>false</default> </key> @@ -23,5 +23,8 @@ <key name="bookmarks" type="a(sss)"> <default>[]</default> </key> + <key name="readlater" type="a(ss)"> + <default>[]</default> + </key> </schema> </schemalist> diff --git a/libyelp/Makefile.am b/libyelp/Makefile.am index df7fc23f..01217d16 100644 --- a/libyelp/Makefile.am +++ b/libyelp/Makefile.am @@ -10,6 +10,8 @@ libyelp_la_SOURCES = \ yelp-location-entry.c \ yelp-magic-decompressor.c \ yelp-mallard-document.c \ + yelp-man-document.c \ + yelp-man-parser.c \ yelp-marshal.c \ yelp-settings.c \ yelp-simple-document.c \ @@ -23,6 +25,7 @@ EXTRA_DIST = \ yelp-debug.h \ yelp-error.h \ yelp-info-parser.h \ + yelp-man-parser.h \ yelp-lzma-decompressor.h \ yelp-magic-decompressor.h \ yelp-marshal.list @@ -53,6 +56,7 @@ libyelp_headers = \ yelp-info-document.h \ yelp-location-entry.h \ yelp-mallard-document.h \ + yelp-man-document.h \ yelp-settings.h \ yelp-simple-document.h \ yelp-transform.h \ @@ -98,7 +102,7 @@ yelp-types.h: $(libyelp_headers) --fhead "G_BEGIN_DECLS\n\n" \ --ftail "G_END_DECLS\n\n" \ --ftail "#endif /* __LIBYELP_TYPES_H__ */\n" \ - --fprod "#include <libyelp/@filename@>\n" \ + --fprod "#include \"@filename@\"\n" \ --eprod "#define YELP_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \ --eprod "GType @enum_name@_get_type (void);\n" \ $(libyelp_headers)) > $@ diff --git a/libyelp/yelp-docbook-document.c b/libyelp/yelp-docbook-document.c index 7463033a..bb083d3d 100644 --- a/libyelp/yelp-docbook-document.c +++ b/libyelp/yelp-docbook-document.c @@ -352,6 +352,9 @@ docbook_process (YelpDocbookDocument *docbook) priv->xmlcur = xmlDocGetRootElement (xmldoc); id = xmlGetProp (priv->xmlcur, BAD_CAST "id"); + if (!id) + id = xmlGetNsProp (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "id"); + if (id) { priv->root_id = g_strdup (id); yelp_document_set_page_id (document, NULL, (gchar *) id); @@ -366,7 +369,12 @@ docbook_process (YelpDocbookDocument *docbook) yelp_document_set_next_id (document, "//about", "//index"); /* add the id attribute to the root element with value "index" * so when we try to load the document later, it doesn't fail */ - xmlNewProp (priv->xmlcur, BAD_CAST "id", BAD_CAST "//index"); + if (priv->xmlcur->ns) + xmlNewNsProp (priv->xmlcur, + xmlNewNs (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "xml"), + BAD_CAST "id", BAD_CAST "//index"); + else + xmlNewProp (priv->xmlcur, BAD_CAST "id", BAD_CAST "//index"); } yelp_document_set_root_id (document, priv->root_id, priv->root_id); yelp_document_set_root_id (document, "//about", priv->root_id); @@ -478,13 +486,23 @@ docbook_walk (YelpDocbookDocument *docbook) } id = xmlGetProp (priv->xmlcur, BAD_CAST "id"); + if (!id) + id = xmlGetNsProp (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "id"); if (docbook_walk_divisionQ (docbook) && !id) { /* If id attribute is not present, autogenerate a * unique value, and insert it into the in-memory tree */ g_snprintf (autoidstr, 20, "//autoid-%d", ++autoid); - xmlNewProp (priv->xmlcur, BAD_CAST "id", BAD_CAST autoidstr); - id = xmlGetProp (priv->xmlcur, BAD_CAST "id"); + if (priv->xmlcur->ns) { + xmlNewNsProp (priv->xmlcur, + xmlNewNs (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "xml"), + BAD_CAST "id", BAD_CAST autoidstr); + id = xmlGetNsProp (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "id"); + } + else { + xmlNewProp (priv->xmlcur, BAD_CAST "id", BAD_CAST autoidstr); + id = xmlGetProp (priv->xmlcur, BAD_CAST "id"); + } } if (docbook_walk_chunkQ (docbook)) { @@ -681,6 +699,8 @@ docbook_walk_get_title (YelpDocbookDocument *docbook) } else if (!xmlStrcmp (child->name, BAD_CAST "title")) title_tmp = child; + else if (!xmlStrcmp (child->name, BAD_CAST "info")) + infos[0] = child; else if (!xmlStrcmp (child->name, BAD_CAST infoname)) infos[0] = child; else if (!xmlStrcmp (child->name, BAD_CAST "blockinfo")) diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c index 1ead2fa4..1a1cbb65 100644 --- a/libyelp/yelp-document.c +++ b/libyelp/yelp-document.c @@ -30,9 +30,10 @@ #include "yelp-debug.h" #include "yelp-document.h" #include "yelp-error.h" -#include "yelp-info-document.h" #include "yelp-docbook-document.h" +#include "yelp-info-document.h" #include "yelp-mallard-document.h" +#include "yelp-man-document.h" #include "yelp-simple-document.h" typedef struct _Request Request; @@ -76,6 +77,8 @@ struct _YelpDocumentPriv { Hash *prev_ids; /* Mapping of page IDs to "previous page" IDs */ Hash *next_ids; /* Mapping of page IDs to "next page" IDs */ Hash *up_ids; /* Mapping of page IDs to "up page" IDs */ + + GError *idle_error; }; G_DEFINE_TYPE (YelpDocument, yelp_document, G_TYPE_OBJECT); @@ -136,53 +139,72 @@ yelp_document_get_for_uri (YelpUri *uri) { static GHashTable *documents = NULL; gchar *docuri; + gchar *page_id, *tmp; YelpDocument *document = NULL; if (documents == NULL) - documents = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, g_object_unref); + documents = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, g_object_unref); g_return_val_if_fail (yelp_uri_is_resolved (uri), NULL); docuri = yelp_uri_get_document_uri (uri); if (docuri == NULL) - return NULL; + return NULL; + switch (yelp_uri_get_document_type (uri)) { + case YELP_URI_DOCUMENT_TYPE_TEXT: + case YELP_URI_DOCUMENT_TYPE_HTML: + case YELP_URI_DOCUMENT_TYPE_XHTML: + /* We use YelpSimpleDocument for these, which is a single-file + * responder. But the document URI may be set to the directory + * holding the file, to allow a directory of HTML files to act + * as a single document. So we cache these by a fuller URI. + */ + page_id = yelp_uri_get_page_id (uri); + tmp = g_strconcat (docuri, "/", page_id, NULL); + g_free (page_id); + g_free (docuri); + docuri = tmp; + break; + default: + break; + } document = g_hash_table_lookup (documents, docuri); if (document != NULL) { - g_free (docuri); - return g_object_ref (document); + g_free (docuri); + return g_object_ref (document); } switch (yelp_uri_get_document_type (uri)) { case YELP_URI_DOCUMENT_TYPE_TEXT: case YELP_URI_DOCUMENT_TYPE_HTML: case YELP_URI_DOCUMENT_TYPE_XHTML: - document = yelp_simple_document_new (uri); - break; + document = yelp_simple_document_new (uri); + break; case YELP_URI_DOCUMENT_TYPE_DOCBOOK: - document = yelp_docbook_document_new (uri); - break; + document = yelp_docbook_document_new (uri); + break; case YELP_URI_DOCUMENT_TYPE_MALLARD: - document = yelp_mallard_document_new (uri); - break; + document = yelp_mallard_document_new (uri); + break; case YELP_URI_DOCUMENT_TYPE_MAN: - /* FIXME */ - break; + document = yelp_man_document_new (uri); + break; case YELP_URI_DOCUMENT_TYPE_INFO: - document = yelp_info_document_new (uri); - break; + document = yelp_info_document_new (uri); + break; case YELP_URI_DOCUMENT_TYPE_TOC: - /* FIXME */ - break; + /* FIXME */ + break; case YELP_URI_DOCUMENT_TYPE_SEARCH: - /* FIXME */ - break; + /* FIXME */ + break; case YELP_URI_DOCUMENT_TYPE_NOT_FOUND: case YELP_URI_DOCUMENT_TYPE_EXTERNAL: case YELP_URI_DOCUMENT_TYPE_ERROR: - break; + break; } if (document != NULL) { @@ -828,22 +850,19 @@ yelp_document_signal (YelpDocument *document, g_mutex_unlock (document->priv->mutex); } -void -yelp_document_error_pending (YelpDocument *document, - const GError *error) +static gboolean +yelp_document_error_pending_idle (YelpDocument *document) { YelpDocumentPriv *priv = GET_PRIV (document); GSList *cur; Request *request; - g_assert (document != NULL && YELP_IS_DOCUMENT (document)); - g_mutex_lock (priv->mutex); if (priv->reqs_pending) { for (cur = priv->reqs_pending; cur; cur = cur->next) { request = cur->data; - request->error = yelp_error_copy ((GError *) error); + request->error = yelp_error_copy ((GError *) priv->idle_error); request->idle_funcs++; g_idle_add ((GSourceFunc) request_idle_error, request); } @@ -853,6 +872,22 @@ yelp_document_error_pending (YelpDocument *document, } g_mutex_unlock (priv->mutex); + + g_object_unref (document); + return FALSE; +} + +void +yelp_document_error_pending (YelpDocument *document, + const GError *error) +{ + YelpDocumentPriv *priv = GET_PRIV (document); + + g_assert (document != NULL && YELP_IS_DOCUMENT (document)); + + g_object_ref (document); + priv->idle_error = g_error_copy (error); + g_idle_add ((GSourceFunc) yelp_document_error_pending_idle, document); } /******************************************************************************/ diff --git a/libyelp/yelp-info-document.h b/libyelp/yelp-info-document.h index 40139446..a3f4a7bd 100644 --- a/libyelp/yelp-info-document.h +++ b/libyelp/yelp-info-document.h @@ -36,7 +36,6 @@ typedef struct _YelpInfoDocument YelpInfoDocument; typedef struct _YelpInfoDocumentClass YelpInfoDocumentClass; -typedef struct _YelpInfoPriv YelpInfoPriv; struct _YelpInfoDocument { YelpDocument parent; diff --git a/libyelp/yelp-info-parser.c b/libyelp/yelp-info-parser.c index cbca0e47..33107948 100644 --- a/libyelp/yelp-info-parser.c +++ b/libyelp/yelp-info-parser.c @@ -224,11 +224,6 @@ static char g_string_append_len (string, buf, bytes); g_object_unref (stream); - /* - g_object_unref (converter); - g_object_unref (file_stream); - g_object_unref (file); - */ str = string->str; diff --git a/libyelp/yelp-location-entry.h b/libyelp/yelp-location-entry.h index 37167add..54d1fc89 100644 --- a/libyelp/yelp-location-entry.h +++ b/libyelp/yelp-location-entry.h @@ -63,6 +63,8 @@ struct _YelpLocationEntryClass * @YELP_LOCATION_ENTRY_CAN_BOOKMARK: This location can be bookmarked. When a * bookmarkable location is selected, the secondary icon of the embedded text * entry will be a clickable bookmark icon. + * @YELP_LOCATION_ENTRY_IS_BOOKMARKED: This location is already bookmarked. + * Bookmarked locations will have an emblem in drop-down lists. * @YELP_LOCATION_ENTRY_IS_LOADING: Page data for this location is still loading. * The #YelpLocationEntry widget will display an indeterminate progress indicator. * @YELP_LOCATION_ENTRY_IS_SEPARATOR: This row should be displayed as a separator. diff --git a/libyelp/yelp-mallard-document.c b/libyelp/yelp-mallard-document.c index 8925674b..1676595b 100644 --- a/libyelp/yelp-mallard-document.c +++ b/libyelp/yelp-mallard-document.c @@ -277,6 +277,8 @@ mallard_think (YelpMallardDocument *mallard) gchar **search_path; gboolean editor_mode; + gchar **path; + gint path_i; GFile *gfile; GFileEnumerator *children; GFileInfo *pageinfo; @@ -298,53 +300,57 @@ mallard_think (YelpMallardDocument *mallard) goto done; } - gfile = yelp_uri_get_file (priv->uri); - children = g_file_enumerate_children (gfile, - G_FILE_ATTRIBUTE_STANDARD_NAME, - G_FILE_QUERY_INFO_NONE, - NULL, NULL); - while ((pageinfo = g_file_enumerator_next_file (children, NULL, NULL))) { - MallardPageData *page_data; - gchar *filename; - GFile *pagefile; - filename = g_file_info_get_attribute_as_string (pageinfo, - G_FILE_ATTRIBUTE_STANDARD_NAME); - if (!g_str_has_suffix (filename, ".page") && - !(editor_mode && g_str_has_suffix (filename, ".page.stub"))) { + path = yelp_uri_get_search_path (priv->uri); + for (path_i = 0; path[path_i] != NULL; path_i++) { + gfile = g_file_new_for_path (path[path_i]); + children = g_file_enumerate_children (gfile, + G_FILE_ATTRIBUTE_STANDARD_NAME, + G_FILE_QUERY_INFO_NONE, + NULL, NULL); + while ((pageinfo = g_file_enumerator_next_file (children, NULL, NULL))) { + MallardPageData *page_data; + gchar *filename; + GFile *pagefile; + filename = g_file_info_get_attribute_as_string (pageinfo, + G_FILE_ATTRIBUTE_STANDARD_NAME); + if (!g_str_has_suffix (filename, ".page") && + !(editor_mode && g_str_has_suffix (filename, ".page.stub"))) { + g_free (filename); + g_object_unref (pageinfo); + continue; + } + page_data = g_new0 (MallardPageData, 1); + page_data->mallard = mallard; + pagefile = g_file_resolve_relative_path (gfile, filename); + page_data->filename = g_file_get_path (pagefile); + mallard_page_data_walk (page_data); + if (page_data->page_id == NULL) { + mallard_page_data_free (page_data); + } else { + g_mutex_lock (priv->mutex); + yelp_document_set_root_id ((YelpDocument *) mallard, + page_data->page_id, "index"); + yelp_document_set_page_id ((YelpDocument *) mallard, + page_data->page_id, page_data->page_id); + g_hash_table_insert (priv->pages_hash, page_data->page_id, page_data); + yelp_document_set_page_title ((YelpDocument *) mallard, + page_data->page_id, + page_data->page_title); + yelp_document_set_page_desc ((YelpDocument *) mallard, + page_data->page_id, + page_data->page_desc); + yelp_document_signal ((YelpDocument *) mallard, + page_data->page_id, + YELP_DOCUMENT_SIGNAL_INFO, + NULL); + g_mutex_unlock (priv->mutex); + } + g_object_unref (pagefile); g_free (filename); g_object_unref (pageinfo); - continue; - } - page_data = g_new0 (MallardPageData, 1); - page_data->mallard = mallard; - pagefile = g_file_resolve_relative_path (gfile, filename); - page_data->filename = g_file_get_path (pagefile); - mallard_page_data_walk (page_data); - if (page_data->page_id == NULL) { - mallard_page_data_free (page_data); - } else { - g_mutex_lock (priv->mutex); - yelp_document_set_root_id ((YelpDocument *) mallard, - page_data->page_id, "index"); - yelp_document_set_page_id ((YelpDocument *) mallard, - page_data->page_id, page_data->page_id); - g_hash_table_insert (priv->pages_hash, page_data->page_id, page_data); - yelp_document_set_page_title ((YelpDocument *) mallard, - page_data->page_id, - page_data->page_title); - yelp_document_set_page_desc ((YelpDocument *) mallard, - page_data->page_id, - page_data->page_desc); - yelp_document_signal ((YelpDocument *) mallard, - page_data->page_id, - YELP_DOCUMENT_SIGNAL_INFO, - NULL); - g_mutex_unlock (priv->mutex); } - g_object_unref (pagefile); - g_free (filename); - g_object_unref (pageinfo); } + g_strfreev (path); g_mutex_lock (priv->mutex); priv->state = MALLARD_STATE_IDLE; diff --git a/libyelp/yelp-man-document.c b/libyelp/yelp-man-document.c new file mode 100644 index 00000000..14ac8cd0 --- /dev/null +++ b/libyelp/yelp-man-document.c @@ -0,0 +1,506 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright (C) 2007-2010 Shaun McCance <shaunm@gnome.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Shaun McCance <shaunm@gnome.org> + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <libxml/tree.h> + +#include "yelp-error.h" +#include "yelp-man-document.h" +#include "yelp-man-parser.h" +#include "yelp-transform.h" +#include "yelp-settings.h" + +#define STYLESHEET DATADIR"/yelp/xslt/man2html.xsl" + +typedef enum { + MAN_STATE_BLANK, /* Brand new, run transform as needed */ + MAN_STATE_PARSING, /* Parsing/transforming document, please wait */ + MAN_STATE_PARSED, /* All done, if we ain't got it, it ain't here */ + MAN_STATE_STOP /* Stop everything now, object to be disposed */ +} ManState; + +typedef struct _YelpManDocumentPrivate YelpManDocumentPrivate; +struct _YelpManDocumentPrivate { + YelpUri *uri; + ManState state; + + GMutex *mutex; + GThread *thread; + + xmlDocPtr xmldoc; + + gboolean process_running; + gboolean transform_running; + + YelpTransform *transform; + guint chunk_ready; + guint finished; + guint error; +}; + +typedef struct _YelpLangEncodings YelpLangEncodings; +struct _YelpLangEncodings { + gchar *language; + gchar *encoding; +}; +/* http://www.w3.org/International/O-charset-lang.html */ +static const YelpLangEncodings langmap[] = { + { "C", "ISO-8859-1" }, + { "af", "ISO-8859-1" }, + { "ar", "ISO-8859-6" }, + { "bg", "ISO-8859-5" }, + { "be", "ISO-8859-5" }, + { "ca", "ISO-8859-1" }, + { "cs", "ISO-8859-2" }, + { "da", "ISO-8859-1" }, + { "de", "ISO-8859-1" }, + { "el", "ISO-8859-7" }, + { "en", "ISO-8859-1" }, + { "eo", "ISO-8859-3" }, + { "es", "ISO-8859-1" }, + { "et", "ISO-8859-15" }, + { "eu", "ISO-8859-1" }, + { "fi", "ISO-8859-1" }, + { "fo", "ISO-8859-1" }, + { "fr", "ISO-8859-1" }, + { "ga", "ISO-8859-1" }, + { "gd", "ISO-8859-1" }, + { "gl", "ISO-8859-1" }, + { "hu", "ISO-8859-2" }, + { "id", "ISO-8859-1" }, /* is this right */ + { "mt", "ISO-8859-3" }, + { "is", "ISO-8859-1" }, + { "it", "ISO-8859-1" }, + { "iw", "ISO-8859-8" }, + { "ja", "EUC-JP" }, + { "ko", "EUC-KR" }, + { "lt", "ISO-8859-13" }, + { "lv", "ISO-8859-13" }, + { "mk", "ISO-8859-5" }, + { "mt", "ISO-8859-3" }, + { "no", "ISO-8859-1" }, + { "pl", "ISO-8859-2" }, + { "pt_BR", "ISO-8859-1" }, + { "ro", "ISO-8859-2" }, + { "ru", "KOI8-R" }, + { "sl", "ISO-8859-2" }, + { "sr", "ISO-8859-2" }, /* Latin, not cyrillic */ + { "sk", "ISO-8859-2" }, + { "sv", "ISO-8859-1" }, + { "tr", "ISO-8859-9" }, + { "uk", "ISO-8859-5" }, + { "zh_CN", "BIG5" }, + { "zh_TW", "BIG5" }, + { NULL, NULL }, +}; + +static void yelp_man_document_class_init (YelpManDocumentClass *klass); +static void yelp_man_document_init (YelpManDocument *man); +static void yelp_man_document_dispose (GObject *object); +static void yelp_man_document_finalize (GObject *object); + +/* YelpDocument */ +static gboolean man_request_page (YelpDocument *document, + const gchar *page_id, + GCancellable *cancellable, + YelpDocumentCallback callback, + gpointer user_data); + +/* YelpTransform */ +static void transform_chunk_ready (YelpTransform *transform, + gchar *chunk_id, + YelpManDocument *man); +static void transform_finished (YelpTransform *transform, + YelpManDocument *man); +static void transform_error (YelpTransform *transform, + YelpManDocument *man); +static void transform_finalized (YelpManDocument *man, + gpointer transform); + +/* Threaded */ +static void man_document_process (YelpManDocument *man); + +static void man_document_disconnect (YelpManDocument *man); + + +G_DEFINE_TYPE (YelpManDocument, yelp_man_document, YELP_TYPE_DOCUMENT); +#define GET_PRIV(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_MAN_DOCUMENT, YelpManDocumentPrivate)) + +static void +yelp_man_document_class_init (YelpManDocumentClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + YelpDocumentClass *document_class = YELP_DOCUMENT_CLASS (klass); + + object_class->dispose = yelp_man_document_dispose; + object_class->finalize = yelp_man_document_finalize; + + document_class->request_page = man_request_page; + + g_type_class_add_private (klass, sizeof (YelpManDocumentPrivate)); +} + +static void +yelp_man_document_init (YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + + priv->state = MAN_STATE_BLANK; + priv->mutex = g_mutex_new (); +} + +static void +yelp_man_document_dispose (GObject *object) +{ + YelpManDocumentPrivate *priv = GET_PRIV (object); + + if (priv->uri) { + g_object_unref (priv->uri); + priv->uri = NULL; + } + + G_OBJECT_CLASS (yelp_man_document_parent_class)->dispose (object); +} + +static void +yelp_man_document_finalize (GObject *object) +{ + YelpManDocumentPrivate *priv = GET_PRIV (object); + + if (priv->xmldoc) + xmlFreeDoc (priv->xmldoc); + + g_mutex_free (priv->mutex); + + G_OBJECT_CLASS (yelp_man_document_parent_class)->finalize (object); +} + +/******************************************************************************/ + +YelpDocument * +yelp_man_document_new (YelpUri *uri) +{ + YelpManDocument *man; + YelpManDocumentPrivate *priv; + + g_return_val_if_fail (uri != NULL, NULL); + + man = (YelpManDocument *) g_object_new (YELP_TYPE_MAN_DOCUMENT, NULL); + priv = GET_PRIV (man); + + priv->uri = g_object_ref (uri); + + return (YelpDocument *) man; +} + + +/******************************************************************************/ +/** YelpDocument **************************************************************/ + +static gboolean +man_request_page (YelpDocument *document, + const gchar *page_id, + GCancellable *cancellable, + YelpDocumentCallback callback, + gpointer user_data) +{ + YelpManDocumentPrivate *priv = GET_PRIV (document); + gchar *docuri; + GError *error; + gboolean handled; + + if (page_id == NULL) + page_id = "//index"; + + handled = + YELP_DOCUMENT_CLASS (yelp_man_document_parent_class)->request_page (document, + page_id, + cancellable, + callback, + user_data); + if (handled) { + return; + } + + g_mutex_lock (priv->mutex); + + switch (priv->state) { + case MAN_STATE_BLANK: + priv->state = MAN_STATE_PARSING; + priv->process_running = TRUE; + g_object_ref (document); + yelp_document_set_page_id (document, NULL, "//index"); + yelp_document_set_page_id (document, "//index", "//index"); + yelp_document_set_root_id (document, "//index", "//index"); + priv->thread = g_thread_create ((GThreadFunc) man_document_process, + document, FALSE, NULL); + break; + case MAN_STATE_PARSING: + break; + case MAN_STATE_PARSED: + case MAN_STATE_STOP: + docuri = yelp_uri_get_document_uri (priv->uri); + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The page ‘%s’ was not found in the document ‘%s’."), + page_id, docuri); + g_free (docuri); + yelp_document_signal (document, page_id, + YELP_DOCUMENT_SIGNAL_ERROR, + error); + g_error_free (error); + break; + } + + g_mutex_unlock (priv->mutex); +} + + +/******************************************************************************/ +/** YelpTransform *************************************************************/ + +static void +transform_chunk_ready (YelpTransform *transform, + gchar *chunk_id, + YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + gchar *content; + + g_assert (transform == priv->transform); + + if (priv->state == MAN_STATE_STOP) { + man_document_disconnect (man); + return; + } + + content = yelp_transform_take_chunk (transform, chunk_id); + yelp_document_give_contents (YELP_DOCUMENT (man), + chunk_id, + content, + "application/xhtml+xml"); + + yelp_document_signal (YELP_DOCUMENT (man), + chunk_id, + YELP_DOCUMENT_SIGNAL_INFO, + NULL); + yelp_document_signal (YELP_DOCUMENT (man), + chunk_id, + YELP_DOCUMENT_SIGNAL_CONTENTS, + NULL); +} + +static void +transform_finished (YelpTransform *transform, + YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + gchar *docuri; + GError *error; + + g_assert (transform == priv->transform); + + if (priv->state == MAN_STATE_STOP) { + man_document_disconnect (man); + return; + } + + man_document_disconnect (man); + priv->state = MAN_STATE_PARSED; + + /* We want to free priv->xmldoc, but we can't free it before transform + is finalized. Otherwise, we could crash when YelpTransform frees + its libxslt resources. + */ + g_object_weak_ref ((GObject *) transform, + (GWeakNotify) transform_finalized, + man); + + docuri = yelp_uri_get_document_uri (priv->uri); + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The requested page was not found in the document ‘%s’."), + docuri); + g_free (docuri); + yelp_document_error_pending ((YelpDocument *) man, error); + g_error_free (error); +} + +static void +transform_error (YelpTransform *transform, + YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + GError *error; + + g_assert (transform == priv->transform); + + if (priv->state == MAN_STATE_STOP) { + man_document_disconnect (man); + return; + } + + error = yelp_transform_get_error (transform); + yelp_document_error_pending ((YelpDocument *) man, error); + g_error_free (error); + + man_document_disconnect (man); +} + +static void +transform_finalized (YelpManDocument *man, + gpointer transform) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + + if (priv->xmldoc) + xmlFreeDoc (priv->xmldoc); + priv->xmldoc = NULL; +} + + +/******************************************************************************/ +/** Threaded ******************************************************************/ + +static void +man_document_process (YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + GFile *file = NULL; + gchar *filepath = NULL; + GError *error; + gint params_i = 0; + gchar **params = NULL; + YelpManParser *parser; + const gchar *language, *encoding; + + file = yelp_uri_get_file (priv->uri); + if (file == NULL) { + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The file does not exist.")); + yelp_document_error_pending ((YelpDocument *) man, error); + g_error_free (error); + goto done; + } + + filepath = g_file_get_path (file); + g_object_unref (file); + if (!g_file_test (filepath, G_FILE_TEST_IS_REGULAR)) { + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The file ‘%s’ does not exist."), + filepath); + yelp_document_error_pending ((YelpDocument *) man, error); + g_error_free (error); + goto done; + } + + /* FIXME: get the language */ + language = "C"; + + /* default encoding if the language doesn't match below */ + encoding = g_getenv("MAN_ENCODING"); + if (encoding == NULL) + encoding = "ISO-8859-1"; + + if (language != NULL) { + gint i; + for (i = 0; langmap[i].language != NULL; i++) { + if (g_str_equal (language, langmap[i].language)) { + encoding = langmap[i].encoding; + break; + } + } + } + + parser = yelp_man_parser_new (); + priv->xmldoc = yelp_man_parser_parse_file (parser, filepath, encoding); + yelp_man_parser_free (parser); + + if (priv->xmldoc == NULL) { + error = g_error_new (YELP_ERROR, YELP_ERROR_PROCESSING, + _("The file ‘%s’ could not be parsed because it is" + " not a well-formed man page."), + filepath); + yelp_document_error_pending ((YelpDocument *) man, error); + } + + g_mutex_lock (priv->mutex); + if (priv->state == MAN_STATE_STOP) { + g_mutex_unlock (priv->mutex); + goto done; + } + + priv->transform = yelp_transform_new (STYLESHEET); + priv->chunk_ready = + g_signal_connect (priv->transform, "chunk-ready", + (GCallback) transform_chunk_ready, + man); + priv->finished = + g_signal_connect (priv->transform, "finished", + (GCallback) transform_finished, + man); + priv->error = + g_signal_connect (priv->transform, "error", + (GCallback) transform_error, + man); + + params = yelp_settings_get_all_params (yelp_settings_get_default (), 0, ¶ms_i); + + priv->transform_running = TRUE; + yelp_transform_start (priv->transform, + priv->xmldoc, + NULL, + (const gchar * const *) params); + g_strfreev (params); + g_mutex_unlock (priv->mutex); + + done: + g_free (filepath); + priv->process_running = FALSE; + g_object_unref (man); +} + +static void +man_document_disconnect (YelpManDocument *man) +{ + YelpManDocumentPrivate *priv = GET_PRIV (man); + if (priv->chunk_ready) { + g_signal_handler_disconnect (priv->transform, priv->chunk_ready); + priv->chunk_ready = 0; + } + if (priv->finished) { + g_signal_handler_disconnect (priv->transform, priv->finished); + priv->finished = 0; + } + if (priv->error) { + g_signal_handler_disconnect (priv->transform, priv->error); + priv->error = 0; + } + yelp_transform_cancel (priv->transform); + g_object_unref (priv->transform); + priv->transform = NULL; + priv->transform_running = FALSE; +} diff --git a/libyelp/yelp-man-document.h b/libyelp/yelp-man-document.h new file mode 100644 index 00000000..2379f081 --- /dev/null +++ b/libyelp/yelp-man-document.h @@ -0,0 +1,51 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Copyright (C) 2007-2010 Shaun McCance <shaunm@gnome.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Shaun McCance <shaunm@gnome.org> + */ + +#ifndef __YELP_MAN_DOCUMENT_H__ +#define __YELP_MAN_DOCUMENT_H__ + +#include <glib-object.h> + +#include "yelp-document.h" + +#define YELP_TYPE_MAN_DOCUMENT (yelp_man_document_get_type ()) +#define YELP_MAN_DOCUMENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_MAN_DOCUMENT, YelpManDocument)) +#define YELP_MAN_DOCUMENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_MAN_DOCUMENT, YelpManDocumentClass)) +#define YELP_IS_MAN_DOCUMENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_MAN_DOCUMENT)) +#define YELP_IS_MAN_DOCUMENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_MAN_DOCUMENT)) +#define YELP_MAN_DOCUMENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_MAN_DOCUMENT, YelpManDocumentClass)) + +typedef struct _YelpManDocument YelpManDocument; +typedef struct _YelpManDocumentClass YelpManDocumentClass; + +struct _YelpManDocument { + YelpDocument parent; +}; + +struct _YelpManDocumentClass { + YelpDocumentClass parent_class; +}; + +GType yelp_man_document_get_type (void); +YelpDocument * yelp_man_document_new (YelpUri *uri); + +#endif /* __YELP_MAN_DOCUMENT_H__ */ diff --git a/src/yelp-man-parser.c b/libyelp/yelp-man-parser.c index 933b3589..49efe9ff 100644 --- a/src/yelp-man-parser.c +++ b/libyelp/yelp-man-parser.c @@ -1,6 +1,6 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ /* - * Copyright (C) 2003 Shaun McCance <shaunm@gnome.org> + * Copyright (C) 2003-2010 Shaun McCance <shaunm@gnome.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -17,7 +17,7 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * - * Author: Shaun McCance <shaunm@gnome.org> + * Author: Shaun McCance <shaunm@gnome.org> */ #ifdef HAVE_CONFIG_H @@ -29,9 +29,8 @@ #include <libxml/tree.h> #include <string.h> -#include "yelp-debug.h" -#include "yelp-io-channel.h" #include "yelp-man-parser.h" +#include "yelp-magic-decompressor.h" #define PARSER_CUR (g_utf8_get_char (parser->cur) != '\0' \ && (parser->cur - parser->buffer < parser->length)) @@ -69,10 +68,9 @@ struct _YelpManParser { xmlNodePtr ins; /* The insertion node */ xmlNodePtr th_node; /* The TH node, or NULL if it doesn't exist */ - GIOChannel *channel; /* GIOChannel for the entire document */ - - gchar *buffer; /* The buffer, line at a time */ - gsize length; /* The buffer length */ + GDataInputStream *stream; /* The GIO input stream to read from */ + gchar *buffer; /* The buffer, line at a time */ + gsize length; /* The buffer length */ gchar *anc; /* The anchor point in the document */ gchar *cur; /* Our current position in the document */ @@ -98,17 +96,18 @@ yelp_man_parser_parse_file (YelpManParser *parser, gchar *file, const gchar *encoding) { - GError *errormsg = NULL; - /*gchar *ptr = NULL;*/ - - g_return_val_if_fail (parser != NULL, NULL); - g_return_val_if_fail (file != NULL, NULL); - g_return_val_if_fail (encoding != NULL, NULL); - - parser->channel = yelp_io_channel_new_file (file, NULL); - - if (!parser->channel) - return NULL; + GFile *gfile; + GConverter *converter; + GFileInputStream *file_stream; + GInputStream *stream; + gchar *line; + gsize len; + + gfile = g_file_new_for_path (file); + file_stream = g_file_read (gfile, NULL, NULL); + converter = (GConverter *) yelp_magic_decompressor_new (); + stream = g_converter_input_stream_new ((GInputStream *) file_stream, converter); + parser->stream = g_data_input_stream_new (stream); parser->doc = xmlNewDoc (BAD_CAST "1.0"); parser->ins = xmlNewNode (NULL, BAD_CAST "Man"); @@ -116,20 +115,14 @@ yelp_man_parser_parse_file (YelpManParser *parser, parser->make_links = TRUE; - while (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, &errormsg) - == G_IO_STATUS_NORMAL) { - + while ((parser->buffer = g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL)) != NULL) { /* convert this line from the encoding indicated to UTF-8 */ if (!g_str_equal (encoding, "UTF-8")) { GError *converr = NULL; gchar *new_buffer = NULL; gsize bytes_written = 0; - /* since our encoding is binary (NULL) in g_io_channel, then - * our returned lined should end with \n. Therefore we are making the + /* We are making the * assumption that there are no partial characters at the end of this * string, and therefore can use calls like g_convert() which do not * preserve state - someone tell me if I'm wrong here */ @@ -149,23 +142,13 @@ yelp_man_parser_parse_file (YelpManParser *parser, parser->buffer = new_buffer; parser->length = bytes_written; } - - /* for debugging, make sure line is valid UTF-8 */ - /*if (!g_utf8_validate (parser->buffer, (gssize)parser->length, &ptr)) { - g_print ("str = %s\n", parser->buffer); - g_print ("str ptr = %p\n", parser->buffer); - g_print ("invalid char = %p (%c)\n", ptr, *ptr); - }*/ - + parser_parse_line (parser); g_free (parser->buffer); } - if (errormsg) - g_print ("Error in g_io_channel_read_line()\n"); - - g_io_channel_shutdown (parser->channel, FALSE, NULL); + g_object_unref (parser->stream); return parser->doc; } @@ -173,9 +156,6 @@ yelp_man_parser_parse_file (YelpManParser *parser, void yelp_man_parser_free (YelpManParser *parser) { - if (parser->channel) - g_io_channel_unref (parser->channel); - g_free (parser); } @@ -211,7 +191,7 @@ parser_parse_line (YelpManParser *parser) { if (parser->ignore) return; break; - case '\n': + case '\0': parser->ins = xmlDocGetRootElement (parser->doc); break; case '\'': @@ -222,7 +202,7 @@ parser_parse_line (YelpManParser *parser) { } } - parser_read_until (parser, '\n'); + parser_read_until (parser, '\0'); if (parser->cur != parser->anc) parser_append_text (parser); @@ -381,20 +361,20 @@ macro_section_header_handler (YelpManParser *parser, gchar *macro, GSList *args) { static gint id = 0; GIOStatus retval; - GError **errormsg = NULL; + GError *error = NULL; gchar *str = NULL; gchar *macro_uc = g_strdup (macro); gchar *ptr; gchar idval[20]; if (!args) { - retval = g_io_channel_read_line (parser->channel, - &str, - NULL, NULL, errormsg); - if (retval != G_IO_STATUS_NORMAL) { - g_warning ("g_io_channel_read_line != G_IO_STATUS_NORMAL\n"); + str = g_data_input_stream_read_line (parser->stream, NULL, NULL, &error); + if (error) { + g_warning ("%s\n", error->message); + g_error_free (error); } - } else + } + else str = args_concat_all (args); for (ptr = macro_uc; *ptr != '\0'; ptr++) @@ -459,11 +439,8 @@ macro_tp_handler (YelpManParser *parser, gchar *macro, GSList *args) g_free (parser->buffer); - if (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, errormsg) - == G_IO_STATUS_NORMAL) { + parser->buffer = g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL); + if (parser->buffer != NULL) { parser->ins = parser_append_node (parser, "Tag"); parser_parse_line (parser); parser->ins = parser->ins->parent; @@ -609,7 +586,7 @@ macro_url_handler (YelpManParser *parser, gchar *macro, GSList *args) tmpNode = parser_stack_pop_node (parser, "UR"); if (tmpNode == NULL) - debug_print (DB_WARN, "Found unexpected tag: '%s'\n", macro); + g_warning ("Found unexpected tag: '%s'\n", macro); else parser->ins = tmpNode->parent; } else @@ -706,7 +683,7 @@ macro_mandoc_list_handler (YelpManParser *parser, gchar *macro, GSList *args) tmpNode = parser_stack_pop_node (parser, "Bl"); if (tmpNode == NULL) - debug_print (DB_WARN, "Found unexpected tag: '%s'\n", macro); + g_warning ("Found unexpected tag: '%s'\n", macro); else parser->ins = tmpNode->parent; } @@ -725,7 +702,7 @@ macro_verbatim_handler (YelpManParser *parser, gchar *macro, GSList *args) tmpNode = parser_stack_pop_node (parser, "Verbatim"); if (tmpNode == NULL) - debug_print (DB_WARN, "Found unexpected tag: '%s'\n", macro); + g_warning ("Found unexpected tag: '%s'\n", macro); else parser->ins = tmpNode->parent; } @@ -1103,16 +1080,16 @@ parser_handle_linetag (YelpManParser *parser) { } /* FIXME: figure out a better way to handle these cases */ - /* special case, if the line is simply ".\n" then return */ - if (g_utf8_get_char (g_utf8_next_char (parser->cur)) == '\n') { + /* special case, if the line is simply ".\0" then return */ + if (g_utf8_get_char (g_utf8_next_char (parser->cur)) == '\0') { parser->cur = g_utf8_next_char (parser->cur); parser->cur = g_utf8_next_char (parser->cur); parser->anc = parser->cur; return; } - /* special case, if the line is simply "..\n" then return */ + /* special case, if the line is simply "..\0" then return */ else if (g_utf8_get_char (g_utf8_next_char(parser->cur)) == '.' && - g_utf8_get_char (g_utf8_next_char (g_utf8_next_char (parser->cur+2))) == '\n') { + g_utf8_get_char (g_utf8_next_char (g_utf8_next_char (parser->cur+2))) == '\0') { parser->cur = g_utf8_next_char (parser->cur); parser->cur = g_utf8_next_char (parser->cur); parser->cur = g_utf8_next_char (parser->cur); @@ -1131,7 +1108,7 @@ parser_handle_linetag (YelpManParser *parser) { (g_utf8_get_char(g_utf8_next_char (parser->cur)) == '\"') ) ) - && g_utf8_get_char (parser->cur) != '\n') { + && g_utf8_get_char (parser->cur) != '\0') { if ( (g_utf8_get_char (parser->cur) == '\\') && (g_utf8_get_char (g_utf8_next_char (parser->cur)) == '\"') @@ -1151,7 +1128,7 @@ parser_handle_linetag (YelpManParser *parser) { /* FIXME: need to handle escaped characters */ /* perform argument parsing and store argument in a singly linked list */ - while (PARSER_CUR && g_utf8_get_char (parser->cur) != '\n') { + while (PARSER_CUR && g_utf8_get_char (parser->cur) != '\0') { ptr = NULL; arg = NULL; @@ -1164,7 +1141,7 @@ parser_handle_linetag (YelpManParser *parser) { get_argument: /* search until we hit whitespace or an " */ while (PARSER_CUR && - g_utf8_get_char (parser->cur) != '\n' && + g_utf8_get_char (parser->cur) != '\0' && g_utf8_get_char (parser->cur) != ' ' && g_utf8_get_char (parser->cur) != '\"') parser->cur = g_utf8_next_char (parser->cur); @@ -1178,7 +1155,7 @@ get_argument: goto get_argument; } - if (g_utf8_get_char (parser->cur) == '\n' && + if (g_utf8_get_char (parser->cur) == '\0' && (parser->cur == parser->anc)) break; @@ -1215,7 +1192,7 @@ get_argument: *(parser->cur) = c; parser->anc = ++parser->cur; } - else if (*(parser->cur) == '\n' && *(parser->cur-1) != ' ') { + else if (*(parser->cur) == '\0' && *(parser->cur-1) != ' ') { /* special case for EOL */ c = *(parser->cur); *(parser->cur) = '\0'; @@ -1269,7 +1246,7 @@ get_argument: } else if (g_str_equal (str, "TE")) { /* We should only see this from within parser_parse_table */ - debug_print (DB_WARN, "Found unexpected tag: '%s'\n", str); + g_warning ("Found unexpected tag: '%s'\n", str); g_free (str); } /* "ie" and "if" are conditional macros in groff @@ -1334,7 +1311,7 @@ parser_read_until (YelpManParser *parser, gchar c; while (PARSER_CUR - && g_utf8_get_char (parser->cur) != '\n' + && g_utf8_get_char (parser->cur) != '\0' && g_utf8_get_char (parser->cur) != delim) { parser->cur = g_utf8_next_char (parser->cur); } @@ -1454,7 +1431,7 @@ parser_append_given_text_handle_escapes (YelpManParser *parser, gchar *text, gbo if (g_str_equal (str, "fI") || g_str_equal (str, "fB")) parser->ins = parser_append_node (parser, str); else if (!g_str_equal (str, "fR") && !g_str_equal (str, "fP")) - debug_print (DB_WARN, "No rule matching the tag '%s'\n", str); + g_warning ("No rule matching the tag '%s'\n", str); g_free (str); anc = ptr; @@ -1630,6 +1607,7 @@ parser_append_given_text_handle_escapes (YelpManParser *parser, gchar *text, gbo c = *(ptr); *(ptr) = '\0'; parser_append_given_text (parser, anc); + parser_append_given_text (parser, "\n"); *(ptr) = c; g_free (baseptr); @@ -1647,7 +1625,7 @@ parser_append_text (YelpManParser *parser) c = *(parser->cur); *(parser->cur) = '\0'; - if (g_utf8_get_char (parser->anc) != '\n') + if (g_utf8_get_char (parser->anc) != '\0') parser_ensure_P (parser); node = xmlNewText (BAD_CAST parser->anc); @@ -1754,11 +1732,9 @@ parser_handle_row_options (YelpManParser *parser) g_free (parser->buffer); - } while (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, NULL) - == G_IO_STATUS_NORMAL); + } while ((parser->buffer = + g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL)) + != NULL); } static void @@ -1769,11 +1745,8 @@ parser_parse_table (YelpManParser *parser) table_start = parser->ins; - if (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, NULL) - == G_IO_STATUS_NORMAL) { + parser->buffer = g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL); + if (parser->buffer != NULL) { parser->anc = parser->buffer; parser->cur = parser->buffer; @@ -1782,15 +1755,12 @@ parser_parse_table (YelpManParser *parser) if (*(parser->cur) == ';') { parser_handle_table_options (parser); - if (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, NULL) - == G_IO_STATUS_NORMAL) { + parser->buffer = g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL); + if (parser->buffer != NULL) { parser->anc = parser->buffer; parser->cur = parser->buffer; - parser_read_until (parser, '\n'); + parser_read_until (parser, '\0'); } else return; } @@ -1798,12 +1768,7 @@ parser_parse_table (YelpManParser *parser) parser_handle_row_options (parser); /* Now this is where we go through all the rows */ - while (g_io_channel_read_line (parser->channel, - &(parser->buffer), - &(parser->length), - NULL, NULL) - == G_IO_STATUS_NORMAL) { - + while ((parser->buffer = g_data_input_stream_read_line (parser->stream, &(parser->length), NULL, NULL)) != NULL) { parser->anc = parser->buffer; parser->cur = parser->buffer; @@ -1814,7 +1779,7 @@ parser_parse_table (YelpManParser *parser) if (*(parser->buffer + 1) == 'T' && *(parser->buffer + 2) == 'E') { if (parser_stack_pop_node (parser, "TABLE") == NULL) - debug_print (DB_WARN, "Found unexpected tag: 'TE'\n"); + g_warning ("Found unexpected tag: 'TE'\n"); else { parser->ins = table_start; @@ -1830,7 +1795,7 @@ parser_parse_table (YelpManParser *parser) parser_handle_linetag (parser); break; } - case '\n': + case '\0': empty_row = TRUE; break; default: @@ -1839,7 +1804,7 @@ parser_parse_table (YelpManParser *parser) if (!empty_row) { parser->ins = parser_append_node (parser, "ROW"); - while (PARSER_CUR && *(parser->cur) != '\n') { + while (PARSER_CUR && *(parser->cur) != '\0') { parser_read_until (parser, '\t'); parser->ins = parser_append_node (parser, "CELL"); parser_append_text (parser); diff --git a/src/yelp-man-parser.h b/libyelp/yelp-man-parser.h index 26976d2a..1901f1b2 100644 --- a/src/yelp-man-parser.h +++ b/libyelp/yelp-man-parser.h @@ -1,6 +1,6 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ /* - * Copyright (C) 2003 Shaun McCance <shaunm@gnome.org> + * Copyright (C) 2003-2010 Shaun McCance <shaunm@gnome.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -17,7 +17,7 @@ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * - * Author: Shaun McCance <shaunm@gnome.org> + * Author: Shaun McCance <shaunm@gnome.org> */ #ifndef __YELP_MAN_PARSER_H__ diff --git a/libyelp/yelp-settings.c b/libyelp/yelp-settings.c index 0c8a386a..478b3780 100644 --- a/libyelp/yelp-settings.c +++ b/libyelp/yelp-settings.c @@ -451,20 +451,20 @@ const gchar* yelp_settings_get_color_param (YelpSettingsColor color) { static const gchar *params[YELP_SETTINGS_NUM_COLORS] = { - "theme.color.background", - "theme.color.text", - "theme.color.text_light", - "theme.color.link", - "theme.color.link_visted", - "theme.color.gray_background", - "theme.color.dark_background", - "theme.color.gray_border", - "theme.color.blue_background", - "theme.color.blue_border", - "theme.color.red_background", - "theme.color.red_border", - "theme.color.yellow_background", - "theme.color.yellow_border" + "color.background", + "color.text", + "color.text_light", + "color.link", + "color.link_visted", + "color.gray_background", + "color.dark_background", + "color.gray_border", + "color.blue_background", + "color.blue_border", + "color.red_background", + "color.red_border", + "color.yellow_background", + "color.yellow_border" }; g_return_val_if_fail (color < YELP_SETTINGS_NUM_COLORS, NULL); return params[color]; @@ -659,11 +659,11 @@ const gchar * yelp_settings_get_icon_param (YelpSettingsIcon icon) { static const gchar *params[YELP_SETTINGS_NUM_ICONS] = { - "theme.icons.note.bug", - "theme.icons.note.important", - "theme.icons.note", - "theme.icons.note.tip", - "theme.icons.note.warning" + "icons.note.bug", + "icons.note.important", + "icons.note", + "icons.note.tip", + "icons.note.warning" }; g_return_val_if_fail (icon < YELP_SETTINGS_NUM_ICONS, NULL); return params[icon]; @@ -727,7 +727,7 @@ yelp_settings_get_all_params (YelpSettings *settings, g_free (val); } ix = 2 * (YELP_SETTINGS_NUM_COLORS + YELP_SETTINGS_NUM_ICONS); - params[ix++] = g_strdup ("theme.icon.admon.size"); + params[ix++] = g_strdup ("icons.size.note"); params[ix++] = g_strdup_printf ("%i", yelp_settings_get_icon_size (settings)); params[ix++] = g_strdup ("yelp.editor_mode"); if (settings->priv->editor_mode) @@ -859,11 +859,11 @@ gtk_theme_changed (GtkSettings *gtk_settings, settings->priv->colors[YELP_SETTINGS_COLOR_RED_BORDER]); /* YELP_SETTINGS_COLOR_YELLOW */ - hsv_to_hex (54, - 0.2, + hsv_to_hex (60, + 0.25, base_v - ((base_v - text_v) * 0.01), settings->priv->colors[YELP_SETTINGS_COLOR_YELLOW_BASE]); - hsv_to_hex (54, + hsv_to_hex (60, 1.0, base_v - ((base_v - text_v) * 0.07), settings->priv->colors[YELP_SETTINGS_COLOR_YELLOW_BORDER]); diff --git a/libyelp/yelp-simple-document.c b/libyelp/yelp-simple-document.c index a566dca1..de62a9ba 100644 --- a/libyelp/yelp-simple-document.c +++ b/libyelp/yelp-simple-document.c @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * Copyright (C) 2003-2009 Shaun McCance <shaunm@gnome.org> * @@ -76,7 +76,7 @@ static void document_finish_read (YelpDocument const gchar *contents); static gchar * document_get_mime_type (YelpDocument *document, const gchar *mime_type); -static void document_signal_all (YelpSimpleDocument *document); +static gboolean document_signal_all (YelpSimpleDocument *document); static void file_info_cb (GFile *file, GAsyncResult *result, @@ -93,7 +93,7 @@ static void stream_close_cb (GInputStream static void request_cancel (GCancellable *cancellable, Request *request); -static void request_try_free (Request *request); +static gboolean request_try_free (Request *request); static void request_free (Request *request); static void @@ -253,18 +253,24 @@ document_get_mime_type (YelpDocument *document, return NULL; } -static void +static gboolean document_signal_all (YelpSimpleDocument *document) { GSList *cur; for (cur = document->priv->reqs; cur != NULL; cur = cur->next) { - Request *request = (Request *) cur->data; - if (request->callback) - request->callback (request->document, - YELP_DOCUMENT_SIGNAL_CONTENTS, - request->user_data, - NULL); + Request *request = (Request *) cur->data; + if (request->callback) { + request->callback (request->document, + YELP_DOCUMENT_SIGNAL_INFO, + request->user_data, + NULL); + request->callback (request->document, + YELP_DOCUMENT_SIGNAL_CONTENTS, + request->user_data, + NULL); + } } + return FALSE; } /******************************************************************************/ @@ -277,8 +283,21 @@ file_info_cb (GFile *file, GFileInfo *info = g_file_query_info_finish (file, result, NULL); const gchar *type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); - document->priv->mime_type = g_strdup (type); + if (g_str_equal (type, "text/x-readme")) + document->priv->mime_type = g_strdup ("text/plain"); + else + document->priv->mime_type = g_strdup (type); g_object_unref (info); + + if (g_str_equal (document->priv->mime_type, "text/plain")) { + gchar *basename = g_file_get_basename (document->priv->file); + yelp_document_set_page_id (YELP_DOCUMENT (document), "//index", "//index"); + yelp_document_set_page_id (YELP_DOCUMENT (document), NULL, "//index"); + yelp_document_set_page_title (YELP_DOCUMENT (document), "//index", basename); + yelp_document_set_page_icon (YELP_DOCUMENT (document), "//index", "text-x-generic"); + g_free (basename); + } + g_file_read_async (document->priv->file, G_PRIORITY_DEFAULT, NULL, @@ -396,7 +415,7 @@ request_cancel (GCancellable *cancellable, Request *request) request_try_free (request); } -static void +static gboolean request_try_free (Request *request) { if (!g_cancellable_is_cancelled (request->cancellable)) @@ -406,6 +425,7 @@ request_try_free (Request *request) request_free (request); else g_idle_add ((GSourceFunc) request_try_free, request); + return FALSE; } static void diff --git a/libyelp/yelp-uri.c b/libyelp/yelp-uri.c index ee17b75a..9735b05d 100644 --- a/libyelp/yelp-uri.c +++ b/libyelp/yelp-uri.c @@ -44,10 +44,12 @@ static gboolean resolve_final (YelpUri *uri); static void resolve_file_uri (YelpUri *uri); static void resolve_file_path (YelpUri *uri); static void resolve_data_dirs (YelpUri *uri, - const gchar **subdirs, + const gchar *subdir, const gchar *docid, - const gchar *pageid); + const gchar *pageid, + gboolean langfirst); static void resolve_ghelp_uri (YelpUri *uri); +static void resolve_help_uri (YelpUri *uri); static void resolve_man_uri (YelpUri *uri); static void resolve_info_uri (YelpUri *uri); static void resolve_xref_uri (YelpUri *uri); @@ -258,6 +260,9 @@ resolve_async (YelpUri *uri) || g_str_has_prefix (priv->res_arg, "gnome-help:")) { resolve_ghelp_uri (uri); } + else if (g_str_has_prefix (priv->res_arg, "help:")) { + resolve_help_uri (uri); + } else if (g_str_has_prefix (priv->res_arg, "file:")) { resolve_file_uri (uri); } @@ -288,7 +293,7 @@ resolve_async (YelpUri *uri) case YELP_URI_DOCUMENT_TYPE_TEXT: case YELP_URI_DOCUMENT_TYPE_HTML: case YELP_URI_DOCUMENT_TYPE_XHTML: - /* FIXME: look up a relative file */ + resolve_file_path (uri); break; case YELP_URI_DOCUMENT_TYPE_TOC: /* FIXME: what do we do? */ @@ -304,12 +309,18 @@ resolve_async (YelpUri *uri) } else if (strchr (priv->res_arg, ':')) { priv->tmptype = YELP_URI_DOCUMENT_TYPE_EXTERNAL; - priv->fulluri = g_strdup (priv->res_arg); } else { resolve_file_path (uri); } + /* We _always_ want to have a non-null fulluri, so check for it + * having been set here and, if we can't think of something + * better, set it to res_arg. */ + if (!priv->fulluri) { + priv->fulluri = g_strdup (priv->res_arg); + } + done: g_idle_add ((GSourceFunc) resolve_final, uri); } @@ -363,6 +374,15 @@ yelp_uri_get_document_uri (YelpUri *uri) YelpUriPrivate *priv = GET_PRIV (uri); if (priv->doctype == YELP_URI_DOCUMENT_TYPE_UNRESOLVED) return NULL; + + /* There's some client code where it makes sense to want a + * document uri, whether or not it conforms to a scheme we really + * understand. For example, we might want to look up whether the + * given page is currently being visited. */ + if ((!priv->docuri) && priv->fulluri) { + return g_strdup (priv->fulluri); + } + return g_strdup (priv->docuri); } @@ -463,11 +483,18 @@ resolve_file_uri (YelpUri *uri) static void resolve_file_path (YelpUri *uri) { - YelpUriPrivate *base_priv; + YelpUriPrivate *base_priv = NULL; YelpUriPrivate *priv = GET_PRIV (uri); gchar *path; const gchar *hash = strchr (priv->res_arg, '#'); + /* Treat xref: URIs like relative file paths */ + if (g_str_has_prefix (priv->res_arg, "xref:")) { + gchar *tmp = g_strdup (priv->res_arg + 5); + g_free (priv->res_arg); + priv->res_arg = tmp; + } + if (priv->res_base) base_priv = GET_PRIV (priv->res_base); @@ -482,7 +509,19 @@ resolve_file_path (YelpUri *uri) priv->gfile = g_file_new_for_path (path); } else if (base_priv && base_priv->gfile) { - priv->gfile = g_file_resolve_relative_path (base_priv->gfile, path); + GFileInfo *info; + info = g_file_query_info (base_priv->gfile, + G_FILE_ATTRIBUTE_STANDARD_TYPE, + G_FILE_QUERY_INFO_NONE, + NULL, NULL); + if (g_file_info_get_file_type (info) == G_FILE_TYPE_REGULAR) { + GFile *parent = g_file_get_parent (base_priv->gfile); + priv->gfile = g_file_resolve_relative_path (parent, path); + g_object_unref (parent); + } + else { + priv->gfile = g_file_resolve_relative_path (base_priv->gfile, path); + } } else { gchar *cur; @@ -499,9 +538,10 @@ resolve_file_path (YelpUri *uri) static void resolve_data_dirs (YelpUri *ret, - const gchar **subdirs, + const gchar *subdir, const gchar *docid, - const gchar *pageid) + const gchar *pageid, + gboolean langfirst) { const gchar * const *sdatadirs = g_get_system_data_dirs (); const gchar * const *langs = g_get_language_names (); @@ -523,54 +563,68 @@ resolve_data_dirs (YelpUri *ret, searchpath = g_new0 (gchar *, 10); for (datadir_i = 0; datadirs[datadir_i]; datadir_i++) { - for (subdir_i = 0; subdirs[subdir_i]; subdir_i++) { - for (lang_i = 0; langs[lang_i]; lang_i++) { - gchar *helpdir = g_strdup_printf ("%s%s%s/%s/%s", - datadirs[datadir_i], - (datadirs[datadir_i][strlen(datadirs[datadir_i]) - 1] == '/' ? "" : "/"), - subdirs[subdir_i], - docid, - langs[lang_i]); - if (!g_file_test (helpdir, G_FILE_TEST_IS_DIR)) { - g_free (helpdir); - continue; - } + for (lang_i = 0; langs[lang_i]; lang_i++) { + gchar *helpdir = g_build_filename (datadirs[datadir_i], + subdir, + langfirst ? langs[lang_i] : docid, + langfirst ? docid : langs[lang_i], + NULL); + if (!g_file_test (helpdir, G_FILE_TEST_IS_DIR)) { + g_free (helpdir); + continue; + } - if (searchi + 1 >= searchmax) { - searchmax += 5; - searchpath = g_renew (gchar *, searchpath, searchmax); - } - searchpath[searchi] = helpdir; - searchpath[++searchi] = NULL; + if (searchi + 1 >= searchmax) { + searchmax += 5; + searchpath = g_renew (gchar *, searchpath, searchmax); + } + searchpath[searchi] = helpdir; + searchpath[++searchi] = NULL; - if (priv->tmptype != YELP_URI_DOCUMENT_TYPE_UNRESOLVED) - /* We've already found it. We're just adding to the search path now. */ - continue; + if (priv->tmptype != YELP_URI_DOCUMENT_TYPE_UNRESOLVED) + /* We've already found it. We're just adding to the search path now. */ + continue; - filename = g_strdup_printf ("%s/index.page", helpdir); - if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { - priv->tmptype = YELP_URI_DOCUMENT_TYPE_MALLARD; - g_free (filename); - filename = g_strdup (helpdir); - continue; - } + filename = g_strdup_printf ("%s/index.page", helpdir); + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_MALLARD; g_free (filename); + filename = g_strdup (helpdir); + continue; + } + g_free (filename); - filename = g_strdup_printf ("%s/%s.xml", helpdir, pageid); + if (langfirst) { + filename = g_strdup_printf ("%s/index.docbook", helpdir); if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { priv->tmptype = YELP_URI_DOCUMENT_TYPE_DOCBOOK; continue; } g_free (filename); - - filename = g_strdup_printf ("%s/%s.html", helpdir, pageid); + } + else { + filename = g_strdup_printf ("%s/%s.xml", helpdir, pageid); if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { - priv->tmptype = YELP_URI_DOCUMENT_TYPE_HTML; + priv->tmptype = YELP_URI_DOCUMENT_TYPE_DOCBOOK; continue; } g_free (filename); - } /* end for langs */ - } /* end for subdirs */ + } + + filename = g_strdup_printf ("%s/%s.html", helpdir, pageid); + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_HTML; + continue; + } + g_free (filename); + + filename = g_strdup_printf ("%s/%s.xhtml", helpdir, pageid); + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_XHTML; + continue; + } + g_free (filename); + } /* end for langs */ } /* end for datadirs */ g_free (datadirs); @@ -591,7 +645,6 @@ resolve_ghelp_uri (YelpUri *uri) * ghelp:document[/file][?page][#frag] */ YelpUriPrivate *priv = GET_PRIV (uri); - const gchar const *helpdirs[3] = {"help", "gnome/help", NULL}; gchar *document, *slash, *query, *hash; gchar *colon, *c; /* do not free */ @@ -640,7 +693,7 @@ resolve_ghelp_uri (YelpUri *uri) resolve_file_uri (uri); } else { - resolve_data_dirs (uri, helpdirs, document, slash ? slash : document); + resolve_data_dirs (uri, "gnome/help", document, slash ? slash : document, FALSE); } if (query && hash) { @@ -674,6 +727,74 @@ resolve_ghelp_uri (YelpUri *uri) } static void +resolve_help_uri (YelpUri *uri) +{ + /* help:document[/page][?query][#frag] + */ + YelpUriPrivate *priv = GET_PRIV (uri); + gchar *document, *slash, *query, *hash; + gchar *colon, *c; /* do not free */ + + colon = strchr (priv->res_arg, ':'); + if (!colon) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_ERROR; + return; + } + + slash = query = hash = NULL; + for (c = colon; *c != '\0'; c++) { + if (*c == '#' && hash == NULL) + hash = c; + else if (*c == '?' && query == NULL && hash == NULL) + query = c; + else if (*c == '/' && slash == NULL && query == NULL && hash == NULL) + slash = c; + } + + if (slash || query || hash) + document = g_strndup (colon + 1, + (slash ? slash : (query ? query : hash)) - colon - 1); + else + document = g_strdup (colon + 1); + + if (slash && (query || hash)) + slash = g_strndup (slash + 1, + (query ? query : hash) - slash - 1); + else if (slash) + slash = g_strdup (slash + 1); + + if (query && hash) + query = g_strndup (query + 1, + hash - query - 1); + else if (query) + query = g_strdup (query + 1); + + if (hash) + hash = g_strdup (hash + 1); + + priv->page_id = (slash ? slash : g_strdup ("index")); + resolve_data_dirs (uri, "help", document, priv->page_id, TRUE); + + if (hash) + priv->frag_id = hash; + + priv->docuri = g_strconcat ("help:", document, NULL); + + priv->fulluri = g_strconcat (priv->docuri, + priv->page_id ? "/" : "", + priv->page_id ? priv->page_id : "", + query ? "?" : "", + query ? query : "", + priv->frag_id ? "#" : "", + priv->frag_id ? priv->frag_id : "", + NULL); + + g_free (query); + g_free (document); + return; +} + +static void resolve_man_uri (YelpUri *uri) { YelpUriPrivate *priv = GET_PRIV (uri); @@ -1055,6 +1176,19 @@ resolve_gfile (YelpUri *uri, const gchar *hash) priv->frag_id = g_strdup (splithash[1]); } } + else if (yelp_settings_get_editor_mode (yelp_settings_get_default ())) { + g_object_unref (child); + child = g_file_get_child (priv->gfile, "index.page.stub"); + if (g_file_query_exists (child, NULL)) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_MALLARD; + if (splithash) { + if (priv->page_id == NULL) + priv->page_id = g_strdup (splithash[0]); + if (priv->frag_id == NULL && splithash[0]) + priv->frag_id = g_strdup (splithash[1]); + } + } + } g_object_unref (child); } else { @@ -1091,15 +1225,25 @@ resolve_gfile (YelpUri *uri, const gchar *hash) priv->frag_id = g_strdup (splithash[1]); } } - else if (g_str_equal (mime_type, "text/html")) { - priv->tmptype = YELP_URI_DOCUMENT_TYPE_HTML; - if (priv->frag_id == NULL) - priv->frag_id = g_strdup (hash); - } - else if (g_str_equal (mime_type, "application/xhtml+xml")) { - priv->tmptype = YELP_URI_DOCUMENT_TYPE_XHTML; + else if (g_str_equal (mime_type, "text/html") || + g_str_equal (mime_type, "application/xhtml+xml")) { + GFile *parent = g_file_get_parent (priv->gfile); + priv->docuri = g_file_get_uri (parent); + g_object_unref (parent); + priv->tmptype = mime_type[0] == 't' ? YELP_URI_DOCUMENT_TYPE_HTML : YELP_URI_DOCUMENT_TYPE_XHTML; + if (priv->page_id == NULL) + priv->page_id = g_file_get_basename (priv->gfile); if (priv->frag_id == NULL) priv->frag_id = g_strdup (hash); + if (priv->fulluri == NULL) { + gchar *fulluri; + fulluri = g_file_get_uri (priv->gfile); + priv->fulluri = g_strconcat (fulluri, + priv->frag_id ? "#" : NULL, + priv->frag_id, + NULL); + g_free (fulluri); + } } else if (g_str_equal (mime_type, "application/x-gzip")) { if (g_str_has_suffix (basename, ".info.gz")) @@ -1135,6 +1279,9 @@ resolve_gfile (YelpUri *uri, const gchar *hash) if (priv->frag_id == NULL) priv->frag_id = g_strdup (hash); } + else if (g_str_equal (mime_type, "text/x-readme")) { + priv->tmptype = YELP_URI_DOCUMENT_TYPE_TEXT; + } else { priv->tmptype = YELP_URI_DOCUMENT_TYPE_EXTERNAL; } @@ -1149,7 +1296,9 @@ resolve_gfile (YelpUri *uri, const gchar *hash) if (priv->fulluri == NULL) priv->fulluri = g_strconcat (priv->docuri, (priv->page_id || priv->frag_id) ? "#" : NULL, - priv->page_id ? priv->page_id : priv->frag_id, + priv->page_id ? priv->page_id : "", + priv->frag_id ? "#" : NULL, + priv->frag_id ? priv->frag_id : NULL, NULL); g_object_unref (info); diff --git a/libyelp/yelp-uri.h b/libyelp/yelp-uri.h index 81612619..13aa73bb 100644 --- a/libyelp/yelp-uri.h +++ b/libyelp/yelp-uri.h @@ -73,6 +73,8 @@ void yelp_uri_resolve (YelpUri *uri); gboolean yelp_uri_is_resolved (YelpUri *uri); YelpUriDocumentType yelp_uri_get_document_type (YelpUri *uri); +/* Both of these functions return a non-null answer, provided that + * the uri has been resolved. */ gchar * yelp_uri_get_canonical_uri (YelpUri *uri); gchar * yelp_uri_get_document_uri (YelpUri *uri); diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c index 767299b9..3a6868c8 100644 --- a/libyelp/yelp-view.c +++ b/libyelp/yelp-view.c @@ -29,7 +29,6 @@ #include <gio/gio.h> #include <gtk/gtk.h> #include <webkit/webkit.h> -#include <webkit/webkitwebresource.h> #include "yelp-debug.h" #include "yelp-docbook-document.h" @@ -54,6 +53,27 @@ static void yelp_view_set_property (GObject *object, const GValue *value, GParamSpec *pspec); +static void view_scrolled (GtkAdjustment *adjustment, + YelpView *view); +static void view_scroll_adjustments (YelpView *view, + GtkAdjustment *hadj, + GtkAdjustment *vadj, + gpointer data); +static void popup_open_link (GtkMenuItem *item, + YelpView *view); +static void popup_open_link_new (GtkMenuItem *item, + YelpView *view); +static void popup_save_image (GtkMenuItem *item, + YelpView *view); +static void popup_send_image (GtkMenuItem *item, + YelpView *view); +static void popup_copy_code (GtkMenuItem *item, + YelpView *view); +static void popup_save_code (GtkMenuItem *item, + YelpView *view); +static void view_populate_popup (YelpView *view, + GtkMenu *menu, + gpointer data); static gboolean view_navigation_requested (WebKitWebView *view, WebKitWebFrame *frame, WebKitNetworkRequest *request, @@ -88,6 +108,10 @@ static void document_callback (YelpDocument *document, YelpDocumentSignal signal, YelpView *view, GError *error); +static gboolean dom_node_is_name (WebKitDOMNode *node, + gchar *name); +static gboolean dom_node_has_class (WebKitDOMNode *node, + gchar *class); static const GtkActionEntry entries[] = { {"YelpViewPrint", GTK_STOCK_PRINT, @@ -117,6 +141,8 @@ static const GtkActionEntry entries[] = { G_CALLBACK (view_navigation_action) } }; +static gchar *nautilus_sendto = NULL; + enum { PROP_0, PROP_URI, @@ -144,8 +170,10 @@ static WebKitWebSettings *websettings; typedef struct _YelpBackEntry YelpBackEntry; struct _YelpBackEntry { YelpUri *uri; - gchar *title; - gchar *desc; + gchar *title; + gchar *desc; + gdouble hadj; + gdouble vadj; }; static void back_entry_free (YelpBackEntry *back) @@ -165,6 +193,19 @@ struct _YelpViewPrivate { gchar *bogus_uri; YelpDocument *document; GCancellable *cancellable; + GtkAdjustment *vadjustment; + GtkAdjustment *hadjustment; + gdouble vadjust; + gdouble hadjust; + gulong vadjuster; + gulong hadjuster; + + gchar *popup_link_uri; + gchar *popup_link_text; + gchar *popup_image_uri; + WebKitDOMNode *popup_code_node; + WebKitDOMNode *popup_code_title; + gchar *popup_code_text; YelpViewState state; @@ -174,13 +215,15 @@ struct _YelpViewPrivate { gchar *page_desc; gchar *page_icon; - GList *back_list; - GList *back_cur; - gboolean back_load; + GList *back_list; + GList *back_cur; + gboolean back_load; GtkActionGroup *action_group; - gint navigation_requested; + GSList *link_actions; + + gint navigation_requested; }; #define TARGET_TYPE_URI_LIST "text/uri-list" @@ -204,6 +247,10 @@ yelp_view_init (YelpView *view) G_CALLBACK (view_navigation_requested), NULL); g_signal_connect (view, "resource-request-starting", G_CALLBACK (view_resource_request), NULL); + g_signal_connect (view, "set-scroll-adjustments", + G_CALLBACK (view_scroll_adjustments), NULL); + g_signal_connect (view, "populate-popup", + G_CALLBACK (view_populate_popup), NULL); priv->action_group = gtk_action_group_new ("YelpView"); gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE); @@ -222,6 +269,16 @@ yelp_view_dispose (GObject *object) priv->uri = NULL; } + if (priv->vadjuster > 0) { + g_source_remove (priv->vadjuster); + priv->vadjuster = 0; + } + + if (priv->hadjuster > 0) { + g_source_remove (priv->hadjuster); + priv->hadjuster = 0; + } + if (priv->cancellable) { g_cancellable_cancel (priv->cancellable); g_object_unref (priv->cancellable); @@ -238,6 +295,12 @@ yelp_view_dispose (GObject *object) priv->document = NULL; } + while (priv->link_actions) { + g_object_unref (priv->link_actions->data); + priv->link_actions = g_slist_delete_link (priv->link_actions, priv->link_actions); + } + + priv->back_cur = NULL; while (priv->back_list) { back_entry_free ((YelpBackEntry *) priv->back_list->data); priv->back_list = g_list_delete_link (priv->back_list, priv->back_list); @@ -251,6 +314,11 @@ yelp_view_finalize (GObject *object) { YelpViewPrivate *priv = GET_PRIV (object); + g_free (priv->popup_link_uri); + g_free (priv->popup_link_text); + g_free (priv->popup_image_uri); + g_free (priv->popup_code_text); + g_free (priv->page_id); g_free (priv->root_title); g_free (priv->page_title); @@ -268,6 +336,8 @@ yelp_view_class_init (YelpViewClass *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); YelpSettings *settings = yelp_settings_get_default (); + nautilus_sendto = g_find_program_in_path ("nautilus-sendto"); + websettings = webkit_web_settings_new (); g_signal_connect (settings, "fonts-changed", @@ -290,8 +360,8 @@ yelp_view_class_init (YelpViewClass *klass) G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, 1, G_TYPE_STRING); + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, YELP_TYPE_URI); signals[EXTERNAL_URI] = g_signal_new ("external-uri", @@ -402,7 +472,10 @@ yelp_view_get_property (GObject *object, g_value_set_string (value, priv->page_desc); break; case PROP_PAGE_ICON: - g_value_set_string (value, priv->page_icon); + if (priv->page_icon) + g_value_set_string (value, priv->page_icon); + else + g_value_set_string (value, "help-contents"); break; case PROP_STATE: g_value_set_enum (value, priv->state); @@ -552,6 +625,520 @@ yelp_view_get_action_group (YelpView *view) /******************************************************************************/ +void +yelp_view_add_link_action (YelpView *view, GtkAction *action) +{ + YelpViewPrivate *priv = GET_PRIV (view); + + priv->link_actions = g_slist_append (priv->link_actions, + g_object_ref (action)); +} + +YelpUri * +yelp_view_get_active_link_uri (YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + YelpUri *uri; + + if (g_str_has_prefix (priv->popup_link_uri, BOGUS_URI)) + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri + BOGUS_URI_LEN); + else + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri); + + return uri; +} + +gchar * +yelp_view_get_active_link_text (YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + return g_strdup (priv->popup_link_text); +} + +/******************************************************************************/ + +static void +view_scrolled (GtkAdjustment *adjustment, + YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + if (priv->back_cur == NULL || priv->back_cur->data == NULL) + return; + if (adjustment == priv->vadjustment) + ((YelpBackEntry *) priv->back_cur->data)->vadj = gtk_adjustment_get_value (adjustment); + else if (adjustment = priv->hadjustment) + ((YelpBackEntry *) priv->back_cur->data)->hadj = gtk_adjustment_get_value (adjustment); +} + +static void +view_scroll_adjustments (YelpView *view, + GtkAdjustment *hadj, + GtkAdjustment *vadj, + gpointer data) +{ + YelpViewPrivate *priv = GET_PRIV (view); + priv->vadjustment = vadj; + if (priv->vadjuster > 0) + g_source_remove (priv->vadjuster); + priv->vadjuster = 0; + if (vadj) { + priv->vadjuster = g_signal_connect (vadj, "value-changed", + G_CALLBACK (view_scrolled), view); + } + priv->hadjustment = hadj; + if (priv->hadjuster > 0) + g_source_remove (priv->hadjuster); + priv->hadjuster = 0; + if (hadj) { + priv->hadjuster = g_signal_connect (hadj, "value-changed", + G_CALLBACK (view_scrolled), view); + } +} + +static void +popup_open_link (GtkMenuItem *item, + YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + YelpUri *uri; + + if (g_str_has_prefix (priv->popup_link_uri, BOGUS_URI)) + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri + BOGUS_URI_LEN); + else + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri); + + yelp_view_load_uri (view, uri); + + g_free (priv->popup_link_uri); + priv->popup_link_uri = NULL; + + g_free (priv->popup_link_text); + priv->popup_link_text = NULL; +} + +static void +popup_open_link_new (GtkMenuItem *item, + YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + YelpUri *uri; + + if (g_str_has_prefix (priv->popup_link_uri, BOGUS_URI)) + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri + BOGUS_URI_LEN); + else + uri = yelp_uri_new_relative (priv->uri, priv->popup_link_uri); + + g_free (priv->popup_link_uri); + priv->popup_link_uri = NULL; + + g_free (priv->popup_link_text); + priv->popup_link_text = NULL; + + g_signal_emit (view, signals[NEW_VIEW_REQUESTED], 0, uri); + g_object_unref (uri); +} + +typedef struct _YelpSaveData YelpSaveData; +struct _YelpSaveData { + GFile *orig; + GFile *dest; + YelpView *view; + GtkWindow *window; +}; + +static void +file_copied (GFile *file, + GAsyncResult *res, + YelpSaveData *data) +{ + GError *error = NULL; + if (!g_file_copy_finish (file, res, &error)) { + GtkWidget *dialog = gtk_message_dialog_new (GTK_WIDGET_VISIBLE (data->window) ? data->window : NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + "%s", error->message); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } + g_object_unref (data->orig); + g_object_unref (data->dest); + g_object_unref (data->view); + g_object_unref (data->window); +} + +static void +popup_save_image (GtkMenuItem *item, + YelpView *view) +{ + YelpSaveData *data; + GtkWidget *dialog, *window; + gchar *basename; + gint res; + YelpViewPrivate *priv = GET_PRIV (view); + + for (window = gtk_widget_get_parent (GTK_WIDGET (view)); + window && !GTK_IS_WINDOW (window); + window = gtk_widget_get_parent (window)); + + data = g_new0 (YelpSaveData, 1); + data->orig = g_file_new_for_uri (priv->popup_image_uri); + data->view = g_object_ref (view); + data->window = g_object_ref (window); + g_free (priv->popup_image_uri); + priv->popup_image_uri = NULL; + + dialog = gtk_file_chooser_dialog_new (_("Save Image"), + GTK_WINDOW (window), + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_OK, + NULL); + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); + basename = g_file_get_basename (data->orig); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), basename); + g_free (basename); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), + g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP)); + + res = gtk_dialog_run (GTK_DIALOG (dialog)); + + if (res == GTK_RESPONSE_OK) { + data->dest = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + g_file_copy_async (data->orig, data->dest, + G_FILE_COPY_OVERWRITE, + G_PRIORITY_DEFAULT, + NULL, NULL, NULL, + (GAsyncReadyCallback) file_copied, + data); + } + else { + g_object_unref (data->orig); + g_object_unref (data->view); + g_object_unref (data->window); + g_free (data); + } + + gtk_widget_destroy (dialog); +} + +static void +popup_send_image (GtkMenuItem *item, + YelpView *view) +{ + gchar *command; + YelpViewPrivate *priv = GET_PRIV (view); + + command = g_strdup_printf ("%s %s", nautilus_sendto, priv->popup_image_uri); + + gdk_spawn_command_line_on_screen (gtk_widget_get_screen (GTK_WIDGET (view)), + command, NULL); + + g_free (command); + g_free (priv->popup_image_uri); + priv->popup_image_uri = NULL; +} + +static void +popup_copy_code (GtkMenuItem *item, + YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); + gchar *content = webkit_dom_node_get_text_content (priv->popup_code_node); + gtk_clipboard_set_text (clipboard, content, -1); + g_free (content); +} + +static void +popup_save_code (GtkMenuItem *item, + YelpView *view) +{ + YelpViewPrivate *priv = GET_PRIV (view); + GtkWidget *dialog, *window; + gint res; + + g_free (priv->popup_code_text); + priv->popup_code_text = webkit_dom_node_get_text_content (priv->popup_code_node); + if (!g_str_has_suffix (priv->popup_code_text, "\n")) { + gchar *tmp = g_strconcat (priv->popup_code_text, "\n", NULL); + g_free (priv->popup_code_text); + priv->popup_code_text = tmp; + } + + for (window = gtk_widget_get_parent (GTK_WIDGET (view)); + window && !GTK_IS_WINDOW (window); + window = gtk_widget_get_parent (window)); + + dialog = gtk_file_chooser_dialog_new (_("Save Code"), + GTK_WINDOW (window), + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_SAVE, GTK_RESPONSE_OK, + NULL); + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE); + if (priv->popup_code_title) { + gchar *filename = webkit_dom_node_get_text_content (priv->popup_code_title); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), filename); + g_free (filename); + } + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), + g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS)); + + res = gtk_dialog_run (GTK_DIALOG (dialog)); + + if (res == GTK_RESPONSE_OK) { + GError *error = NULL; + GFile *file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog)); + GFileOutputStream *stream = g_file_replace (file, NULL, FALSE, + G_FILE_CREATE_NONE, + NULL, + &error); + if (stream == NULL) { + GtkWidget *dialog = gtk_message_dialog_new (GTK_WIDGET_VISIBLE (window) ? GTK_WINDOW (window) : NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + "%s", error->message); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_error_free (error); + } + else { + /* FIXME: we should do this async */ + GDataOutputStream *datastream = g_data_output_stream_new (G_OUTPUT_STREAM (stream)); + if (!g_data_output_stream_put_string (datastream, priv->popup_code_text, NULL, &error)) { + GtkWidget *dialog = gtk_message_dialog_new (GTK_WIDGET_VISIBLE (window) ? GTK_WINDOW (window) : NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + "%s", error->message); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + g_error_free (error); + } + g_object_unref (datastream); + } + g_object_unref (file); + } + + priv->popup_code_node = NULL; + priv->popup_code_title = NULL; + g_free (priv->popup_code_text); + priv->popup_code_text = NULL; + + gtk_widget_destroy (dialog); +} + +static void +view_populate_popup (YelpView *view, + GtkMenu *menu, + gpointer data) +{ + WebKitHitTestResult *result; + WebKitHitTestResultContext context; + GdkEvent *event; + YelpViewPrivate *priv = GET_PRIV (view); + GList *children; + GtkWidget *item; + WebKitDOMNode *node, *cur, *link_node = NULL, *code_node = NULL, *code_title_node = NULL; + + children = gtk_container_get_children (GTK_CONTAINER (menu)); + while (children) { + gtk_container_remove (GTK_CONTAINER (menu), + GTK_WIDGET (children->data)); + children = children->next; + } + g_list_free (children); + + event = gtk_get_current_event (); + + result = webkit_web_view_get_hit_test_result (WEBKIT_WEB_VIEW (view), (GdkEventButton *) event); + g_object_get (result, + "context", &context, + "inner-node", &node, + NULL); + for (cur = node; cur != NULL; cur = webkit_dom_node_get_parent_node (cur)) { + if (dom_node_is_name (cur, "a")) + link_node = cur; + + if (dom_node_is_name (cur, "div") && dom_node_has_class (cur, "code")) { + WebKitDOMNode *title; + code_node = cur; + title = webkit_dom_node_get_parent_node (cur); + if (title && dom_node_is_name (title, "div") && dom_node_has_class (title, "contents")) { + title = webkit_dom_node_get_previous_sibling (title); + if (title && dom_node_is_name (title, "div") && dom_node_has_class (title, "title")) { + code_title_node = title; + } + } + } + } + + if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) { + gchar *uri; + g_object_get (result, "link-uri", &uri, NULL); + g_free (priv->popup_link_uri); + priv->popup_link_uri = uri; + + g_free (priv->popup_link_text); + priv->popup_link_text = NULL; + /* FIXME: Handled space-separated class names, etc. See about a convenience API + * in WebKit, because this kind of processing in C really sucks. + */ + if (link_node != NULL) { + WebKitDOMNode *child = webkit_dom_node_get_first_child (link_node); + gchar *tmp; + gint i, tmpi; + gboolean ws; + if (dom_node_is_name (child, "div") && dom_node_has_class (child, "linkdiv")) { + child = webkit_dom_node_get_first_child (child); + if (child && dom_node_is_name (child, "div") && dom_node_has_class (child, "title")) { + priv->popup_link_text = webkit_dom_node_get_text_content (child); + } + } + if (priv->popup_link_text == NULL) + priv->popup_link_text = webkit_dom_node_get_text_content (link_node); + + tmp = g_new0 (gchar, strlen(priv->popup_link_text) + 1); + ws = FALSE; + for (i = 0, tmpi = 0; priv->popup_link_text[i] != '\0'; i++) { + if (priv->popup_link_text[i] == ' ' || priv->popup_link_text[i] == '\n') { + if (!ws) { + tmp[tmpi] = ' '; + tmpi++; + ws = TRUE; + } + } + else { + tmp[tmpi] = priv->popup_link_text[i]; + tmpi++; + ws = FALSE; + } + } + tmp[tmpi] = '\0'; + g_free (priv->popup_link_text); + priv->popup_link_text = tmp; + } + else { + priv->popup_link_text = g_strdup (uri); + } + + if (g_str_has_prefix (priv->popup_link_uri, "mailto:")) { + /* Not using a mnemonic because underscores are common in email + * addresses, and we'd have to escape them. There doesn't seem + * to be a quick GTK+ function for this. In practice, there will + * probably only be one menu item for mailto link popups anyway, + * so the mnemonic's not that big of a deal. + */ + gchar *label = g_strdup_printf (_("Send email to %s"), + priv->popup_link_uri + 7); + item = gtk_menu_item_new_with_label (label); + g_signal_connect (item, "activate", + G_CALLBACK (popup_open_link), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + else { + GSList *cur; + + item = gtk_menu_item_new_with_mnemonic (_("_Open Link")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_open_link), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("Open Link in New _Window")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_open_link_new), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + for (cur = priv->link_actions; cur != NULL; cur = cur->next) { + GtkAction *action = (GtkAction *) cur->data; + item = gtk_action_create_menu_item (action); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + } + } + else { + item = gtk_action_create_menu_item (gtk_action_group_get_action (priv->action_group, + "YelpViewGoBack")); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + item = gtk_action_create_menu_item (gtk_action_group_get_action (priv->action_group, + "YelpViewGoForward")); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + + if ((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) || + (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA)) { + /* This doesn't currently work for video with automatic controls, + * because WebKit puts the hit test on the div with the controls. + */ + gboolean image = context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE; + gchar *uri; + g_object_get (result, image ? "image-uri" : "media-uri", &uri, NULL); + g_free (priv->popup_image_uri); + if (g_str_has_prefix (uri, BOGUS_URI)) { + priv->popup_image_uri = yelp_uri_locate_file_uri (priv->uri, uri + BOGUS_URI_LEN); + g_free (uri); + } + else { + priv->popup_image_uri = uri; + } + + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + if (image) + item = gtk_menu_item_new_with_mnemonic (_("_Save Image As...")); + else + item = gtk_menu_item_new_with_mnemonic (_("_Save Video As...")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_save_image), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + if (nautilus_sendto) { + if (image) + item = gtk_menu_item_new_with_mnemonic (_("S_end Image To...")); + else + item = gtk_menu_item_new_with_mnemonic (_("S_end Video To...")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_send_image), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + } + + if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION) { + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("_Copy Text")); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (webkit_web_view_copy_clipboard), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + + if (code_node != NULL) { + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + priv->popup_code_node = code_node; + priv->popup_code_title = code_title_node; + + item = gtk_menu_item_new_with_mnemonic (_("C_opy Code Block")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_copy_code), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("Save Code _Block As...")); + g_signal_connect (item, "activate", + G_CALLBACK (popup_save_code), view); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + } + + g_object_unref (result); + gdk_event_free (event); + gtk_widget_show_all (GTK_WIDGET (menu)); +} + static gboolean view_navigation_requested (WebKitWebView *view, WebKitWebFrame *frame, @@ -560,13 +1147,14 @@ view_navigation_requested (WebKitWebView *view, WebKitWebPolicyDecision *decision, gpointer user_data) { + const gchar *requri = webkit_network_request_get_uri (request); YelpViewPrivate *priv = GET_PRIV (view); YelpUri *uri; - debug_print (DB_FUNCTION, "entering\n"); - - uri = yelp_uri_new_relative (priv->uri, - webkit_network_request_get_uri (request)); + if (g_str_has_prefix (requri, BOGUS_URI)) + uri = yelp_uri_new_relative (priv->uri, requri + BOGUS_URI_LEN); + else + uri = yelp_uri_new_relative (priv->uri, requri); webkit_web_policy_decision_ignore (decision); @@ -639,6 +1227,8 @@ view_history_action (GtkAction *action, priv->back_load = TRUE; yelp_view_load_uri (view, ((YelpBackEntry *) priv->back_cur->data)->uri); + priv->vadjust = ((YelpBackEntry *) priv->back_cur->data)->vadj; + priv->hadjust = ((YelpBackEntry *) priv->back_cur->data)->hadj; } static void @@ -881,10 +1471,17 @@ uri_resolved (YelpUri *uri, return; case YELP_URI_DOCUMENT_TYPE_NOT_FOUND: struri = yelp_uri_get_canonical_uri (uri); - error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, - _("The URI ‘%s’ does point to a valid page."), - struri); - g_free (struri); + if (struri != NULL) { + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The URI ‘%s’ does not point to a valid page."), + struri); + g_free (struri); + } + else { + error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND, + _("The URI does not point to a valid page."), + struri); + } view_show_error_page (view, error); return; case YELP_URI_DOCUMENT_TYPE_ERROR: @@ -1002,7 +1599,7 @@ document_callback (YelpDocument *document, GParamSpec *spec; real_id = yelp_document_get_page_id (document, priv->page_id); - if (priv->page_id && g_str_equal (real_id, priv->page_id)) { + if (priv->page_id && real_id && g_str_equal (real_id, priv->page_id)) { g_free (real_id); } else { @@ -1060,8 +1657,9 @@ document_callback (YelpDocument *document, g_signal_emit_by_name (view, "notify::page-icon", spec); } else if (signal == YELP_DOCUMENT_SIGNAL_CONTENTS) { + YelpUriDocumentType doctype; const gchar *contents; - gchar *mime_type, *page_id, *frag_id; + gchar *mime_type, *page_id, *frag_id, *full_uri; page_id = yelp_uri_get_page_id (priv->uri); debug_print (DB_ARG, " document.uri.page_id=\"%s\"\n", page_id); mime_type = yelp_document_get_mime_type (document, page_id); @@ -1091,10 +1689,21 @@ document_callback (YelpDocument *document, based on actual file locations, but in fact it doesn't matter. So we just make a bogus URI that's easy to process later. */ - if (frag_id != NULL) - priv->bogus_uri = g_strdup_printf ("%s%p#%s", BOGUS_URI, priv->uri, frag_id); - else - priv->bogus_uri = g_strdup_printf ("%s%p", BOGUS_URI, priv->uri); + doctype = yelp_uri_get_document_type (priv->uri); + full_uri = yelp_uri_get_canonical_uri (priv->uri); + if (g_str_has_prefix (full_uri, "file:/") && + (doctype == YELP_URI_DOCUMENT_TYPE_TEXT || + doctype == YELP_URI_DOCUMENT_TYPE_HTML || + doctype == YELP_URI_DOCUMENT_TYPE_XHTML )) { + priv->bogus_uri = full_uri; + } + else { + g_free (full_uri); + if (frag_id != NULL) + priv->bogus_uri = g_strdup_printf ("%s%p#%s", BOGUS_URI, priv->uri, frag_id); + else + priv->bogus_uri = g_strdup_printf ("%s%p", BOGUS_URI, priv->uri); + } g_signal_handler_block (view, priv->navigation_requested); webkit_web_view_load_string (WEBKIT_WEB_VIEW (view), contents, @@ -1103,6 +1712,44 @@ document_callback (YelpDocument *document, priv->bogus_uri); g_signal_handler_unblock (view, priv->navigation_requested); g_object_set (view, "state", YELP_VIEW_STATE_LOADED, NULL); + + /* If we need to set the GtkAdjustment or trigger the page title + * from what WebKit thinks it is (see comment below), we need to + * let the main loop run through. + */ + if (priv->vadjust > 0 || priv->hadjust > 0 || priv->page_title == NULL) + while (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, FALSE); + + /* Setting adjustments only work after the page is loaded. These + * are set by view_history_action, and they're reset to 0 after + * each load here. + */ + if (priv->vadjust > 0) { + if (priv->vadjustment) + gtk_adjustment_set_value (priv->vadjustment, priv->vadjust); + priv->vadjust = 0; + } + if (priv->hadjust > 0) { + if (priv->hadjustment) + gtk_adjustment_set_value (priv->hadjustment, priv->hadjust); + priv->hadjust = 0; + } + + /* If the document didn't give us a page title, get it from WebKit. + * We let the main loop run through so that WebKit gets the title + * set so that we can send notify::page-title before loaded. It + * simplifies things if YelpView consumers can assume the title + * is set before loaded is triggered. + */ + if (priv->page_title == NULL) { + GParamSpec *spec; + priv->page_title = g_strdup (webkit_web_view_get_title (WEBKIT_WEB_VIEW (view))); + spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view), + "page-title"); + g_signal_emit_by_name (view, "notify::page-title", spec); + } + g_free (frag_id); g_free (page_id); g_free (mime_type); @@ -1113,3 +1760,37 @@ document_callback (YelpDocument *document, view_show_error_page (view, error); } } + +static gboolean +dom_node_is_name (WebKitDOMNode *node, + gchar *name) +{ + gboolean ret; + gchar *nodename = webkit_dom_node_get_node_name (node); + ret = g_str_equal (nodename, name); + g_free (nodename); + return ret; +} + +static gboolean +dom_node_has_class (WebKitDOMNode *node, + gchar *class) +{ + gboolean ret = FALSE; + WebKitDOMNamedNodeMap *map = webkit_dom_node_get_attributes (node); + WebKitDOMNode *attr = webkit_dom_named_node_map_get_named_item (map, "class"); + if (attr) { + gchar *htmlclass = webkit_dom_node_get_text_content (attr); + gchar **classes = g_strsplit (htmlclass, " ", -1); + gint classi; + for (classi = 0; classes[classi] != NULL; classi++) { + if (g_str_equal (classes[classi], class)) { + ret = TRUE; + break; + } + } + g_strfreev (classes); + g_free (htmlclass); + } + return ret; +} diff --git a/libyelp/yelp-view.h b/libyelp/yelp-view.h index d6930524..572b085d 100644 --- a/libyelp/yelp-view.h +++ b/libyelp/yelp-view.h @@ -58,19 +58,24 @@ typedef enum { YELP_VIEW_STATE_ERROR } YelpViewState; -GType yelp_view_get_type (void); -GType yelp_view_state_get_type (void); +GType yelp_view_get_type (void); +GType yelp_view_state_get_type (void); -GtkWidget * yelp_view_new (void); -void yelp_view_load (YelpView *view, - const gchar *uri); -void yelp_view_load_uri (YelpView *view, - YelpUri *uri); -void yelp_view_load_document (YelpView *view, - YelpUri *uri, - YelpDocument *document); -YelpDocument * yelp_view_get_document (YelpView *view); -GtkActionGroup * yelp_view_get_action_group (YelpView *view); +GtkWidget * yelp_view_new (void); +void yelp_view_load (YelpView *view, + const gchar *uri); +void yelp_view_load_uri (YelpView *view, + YelpUri *uri); +void yelp_view_load_document (YelpView *view, + YelpUri *uri, + YelpDocument *document); +YelpDocument * yelp_view_get_document (YelpView *view); +GtkActionGroup * yelp_view_get_action_group (YelpView *view); + +void yelp_view_add_link_action (YelpView *view, + GtkAction *action); +YelpUri * yelp_view_get_active_link_uri (YelpView *view); +gchar * yelp_view_get_active_link_text (YelpView *view); G_END_DECLS diff --git a/po/ChangeLog b/po/ChangeLog index 2b3ddef6..53e94ee9 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,7 @@ +2010-05-31 Funda Wang <fundawang@gmail.com> + + * zh_CN.po: Updated zh_CN translation. + 2009-04-5 Nikos Charonitakis <nikosx@gmail.com> * el.po: Updated Greek translation by alefteris. diff --git a/po/POTFILES.in b/po/POTFILES.in index 32b1b9d4..5d85fd50 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -14,6 +14,7 @@ libyelp/yelp-location-entry.c libyelp/yelp-lzma-decompressor.c libyelp/yelp-magic-decompressor.c libyelp/yelp-mallard-document.c +libyelp/yelp-man-document.c libyelp/yelp-settings.c libyelp/yelp-simple-document.c libyelp/yelp-transform.c diff --git a/po/POTFILES.skip b/po/POTFILES.skip index b4e8b5c2..c62653f3 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -1,4 +1,3 @@ -src/yelp-man.c src/yelp-print.c src/yelp-search-parser.c src/yelp-search.c @@ -14,13 +14,16 @@ msgstr "" "Project-Id-Version: Yelp\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=yelp&component=general\n" -"POT-Creation-Date: 2010-05-02 09:38+0000\n" -"PO-Revision-Date: 2010-05-02 15:11+0100\n" +"POT-Creation-Date: 2010-05-27 22:05+0000\n" +"PO-Revision-Date: 2010-05-28 13:43+0100\n" "Last-Translator: Mario Blättermann <mariobl@gnome.org>\n" "Language-Team: German <gnome-de@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" #: ../data/info.xml.in.h:1 msgid "GNU Info Pages" @@ -690,7 +693,7 @@ msgstr "Wiedergabe" msgid "Presentation Tools" msgstr "Präsentationswerkzeuge" -#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364 +#: ../data/toc.xml.in.h:104 msgid "Printing" msgstr "Drucken" @@ -875,13 +878,12 @@ msgid "Word Processors" msgstr "Textverarbeitung" #: ../libyelp/yelp-bz2-decompressor.c:146 -#: ../libyelp/yelp-lzma-decompressor.c:147 +#: ../libyelp/yelp-lzma-decompressor.c:155 msgid "Invalid compressed data" msgstr "Ungültige gepackte Daten" #: ../libyelp/yelp-bz2-decompressor.c:152 -#: ../libyelp/yelp-lzma-decompressor.c:153 -#| msgid "Out of memory" +#: ../libyelp/yelp-lzma-decompressor.c:161 msgid "Not enough memory" msgstr "Nicht genug Speicher" @@ -889,23 +891,20 @@ msgstr "Nicht genug Speicher" #: ../libyelp/yelp-mallard-document.c:254 #: ../libyelp/yelp-mallard-document.c:391 #, c-format -#| msgid "The page %s was not found in the document %s." msgid "The page ‘%s’ was not found in the document ‘%s’." msgstr "Die Seite »%s« konnte im Dokument »%s« nicht gefunden werden." #: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 #, c-format -#| msgid "The file ‘%s’ does not exist." msgid "The file does not exist." msgstr "Die Datei existiert nicht." #: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 -#: ../src/yelp-db-print.c:393 ../src/yelp-man.c:430 #, c-format msgid "The file ‘%s’ does not exist." msgstr "Die Datei »%s« existiert nicht." -#: ../libyelp/yelp-docbook-document.c:323 ../src/yelp-db-print.c:407 +#: ../libyelp/yelp-docbook-document.c:323 #, c-format msgid "" "The file ‘%s’ could not be parsed because it is not a well-formed XML " @@ -914,7 +913,7 @@ msgstr "" "Die Datei »%s« konnte nicht analysiert werden, da der Inhalt kein gültiges XML-" "Dokument ist." -#: ../libyelp/yelp-docbook-document.c:336 ../src/yelp-db-print.c:419 +#: ../libyelp/yelp-docbook-document.c:336 #, c-format msgid "" "The file ‘%s’ could not be parsed because one or more of its included files " @@ -923,19 +922,17 @@ msgstr "" "Die Datei »%s« konnte nicht analysiert werden, da eine oder mehrere der " "enthaltenen Dateien kein gültiges XML-Dokument ist." -#: ../libyelp/yelp-docbook-document.c:720 ../src/yelp-db-print.c:766 +#: ../libyelp/yelp-docbook-document.c:740 msgid "Unknown" msgstr "Unbekannt" -#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 #, c-format -#| msgid "The requested page was not found in the document %s." msgid "The requested page was not found in the document ‘%s’." msgstr "Die angeforderte Seite konnte nicht im Dokument »%s« gefunden werden." #: ../libyelp/yelp-error.c:33 #, c-format -#| msgid "An unknown error occured" msgid "An unknown error occurred." msgstr "Es ist ein unbekannter Fehler aufgetreten." @@ -947,44 +944,36 @@ msgstr "" "Die Datei »%s« konnte nicht analysiert werden, da sie keine gültige Info-Seite " "ist." -#: ../libyelp/yelp-io-channel.c:125 -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in an " -"unsupported format." -msgstr "" -"Die Datei »%s« konnte nicht gelesen und dekodiert werden. Eventuell ist die " -"Datei in einem nicht unterstützen Format komprimiert." - -#: ../libyelp/yelp-location-entry.c:246 +#: ../libyelp/yelp-location-entry.c:279 msgid "Description Column" msgstr "Beschreibungsspalte" -#: ../libyelp/yelp-location-entry.c:247 -msgid "A column in the model to descriptions from" +#: ../libyelp/yelp-location-entry.c:280 +#| msgid "A column in the model to descriptions from" +msgid "A column in the model to get descriptions from" msgstr "Eine Spalte im Modell zum Bezug von Beschreibungen" -#: ../libyelp/yelp-location-entry.c:262 +#: ../libyelp/yelp-location-entry.c:295 msgid "Icon Column" msgstr "Symbolspalte" -#: ../libyelp/yelp-location-entry.c:263 +#: ../libyelp/yelp-location-entry.c:296 msgid "A column in the model to get icon names from" msgstr "Eine Spalte im Modell zum Bezug von Symbolnamen" -#: ../libyelp/yelp-location-entry.c:278 +#: ../libyelp/yelp-location-entry.c:311 msgid "Flags Column" msgstr "Markierungsspalte" -#: ../libyelp/yelp-location-entry.c:279 +#: ../libyelp/yelp-location-entry.c:312 msgid "A column in the model with YelpLocationEntryFlags flags" msgstr "Eine Spalte im Modell mit YelpLocationEntryFlags-Markierungen" -#: ../libyelp/yelp-location-entry.c:295 +#: ../libyelp/yelp-location-entry.c:328 msgid "Enable Search" msgstr "Suche aktivieren" -#: ../libyelp/yelp-location-entry.c:296 +#: ../libyelp/yelp-location-entry.c:329 msgid "Whether the location entry can be used as a search field" msgstr "Legt fest, ob die Adresszeile als Suchfeld verwendet werden kann" @@ -994,7 +983,6 @@ msgid "The directory ‘%s’ does not exist." msgstr "Der Ordner »%s« existiert nicht." #: ../libyelp/yelp-settings.c:146 -#| msgid "Settings" msgid "GtkSettings" msgstr "GtkSettings" @@ -1035,7 +1023,6 @@ msgid "Enable features useful to editors" msgstr "Nützliche Funktionsmerkmale für Editoren aktivieren" #: ../libyelp/yelp-transform.c:171 -#| msgid "Invalid Stylesheet" msgid "XSLT Stylesheet" msgstr "XSLT-Stilvorlage" @@ -1045,7 +1032,6 @@ msgstr "Der Ort der XSLT-Stilvorlage" #: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394 #, c-format -#| msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." msgstr "" "Entweder existiert die XSLT-Stilvorlage »%s« nicht, oder es ist keine gültige " @@ -1059,189 +1045,162 @@ msgstr "Kein href-Attribut im yelp:-Dokument gefunden\n" msgid "Out of memory" msgstr "Speichermangel" -#: ../libyelp/yelp-view.c:92 +#: ../libyelp/yelp-view.c:111 +#| msgid "Print" +msgid "_Print..." +msgstr "_Drucken …" + +#: ../libyelp/yelp-view.c:116 msgid "_Back" msgstr "_Zurück" -#: ../libyelp/yelp-view.c:97 +#: ../libyelp/yelp-view.c:121 msgid "_Forward" msgstr "_Vor" -#: ../libyelp/yelp-view.c:102 -#| msgid "_Previous" +#: ../libyelp/yelp-view.c:126 msgid "_Previous Page" msgstr "_Vorherige Seite" -#: ../libyelp/yelp-view.c:107 -#| msgid "_Next" +#: ../libyelp/yelp-view.c:131 msgid "_Next Page" msgstr "_Nächste Seite" -#: ../libyelp/yelp-view.c:310 -#| msgid "Yelp" +#: ../libyelp/yelp-view.c:367 msgid "Yelp URI" msgstr "Yelp-URI" -#: ../libyelp/yelp-view.c:311 +#: ../libyelp/yelp-view.c:368 msgid "A YelpUri with the current location" msgstr "Eine YelpUri mit dem aktuellen Ort" -#: ../libyelp/yelp-view.c:319 -#| msgid "Loading..." +#: ../libyelp/yelp-view.c:376 msgid "Loading State" msgstr "Ladestatus" -#: ../libyelp/yelp-view.c:320 +#: ../libyelp/yelp-view.c:377 msgid "The loading state of the view" msgstr "Der Ladestatus der Ansicht" -#: ../libyelp/yelp-view.c:329 +#: ../libyelp/yelp-view.c:386 msgid "Page ID" msgstr "Seitenkennung" -#: ../libyelp/yelp-view.c:330 -#| msgid "Sets the end of the range of pages to be printed" -msgid "The ID of the root page of the page being viewew" +#: ../libyelp/yelp-view.c:387 +#| msgid "The ID of the root page of the page being viewew" +msgid "The ID of the root page of the page being viewed" msgstr "Die Kennung der Basisseite der betrachteten Seite" -#: ../libyelp/yelp-view.c:338 +#: ../libyelp/yelp-view.c:395 msgid "Root Title" msgstr "Basistitel" -#: ../libyelp/yelp-view.c:339 -#| msgid "Sets the start of the range of pages to be printed" -msgid "The title of the root page of the page being viewew" +#: ../libyelp/yelp-view.c:396 +#| msgid "The title of the root page of the page being viewew" +msgid "The title of the root page of the page being viewed" msgstr "Der Titel der Basisseite der betrachteten Seite" -#: ../libyelp/yelp-view.c:347 +#: ../libyelp/yelp-view.c:404 msgid "Page Title" msgstr "Seitentitel" -#: ../libyelp/yelp-view.c:348 +#: ../libyelp/yelp-view.c:405 msgid "The title of the page being viewed" msgstr "Der Titel der betrachteten Seite" -#: ../libyelp/yelp-view.c:356 +#: ../libyelp/yelp-view.c:413 msgid "Page Description" msgstr "Seitenbeschreibung" -#: ../libyelp/yelp-view.c:357 +#: ../libyelp/yelp-view.c:414 msgid "The description of the page being viewed" msgstr "Die Beschreibung der betrachteten Seite" -#: ../libyelp/yelp-view.c:365 -#| msgid "Page not found" +#: ../libyelp/yelp-view.c:422 msgid "Page Icon" msgstr "Seitensymbol" -#: ../libyelp/yelp-view.c:366 +#: ../libyelp/yelp-view.c:423 msgid "The icon of the page being viewed" msgstr "Das Symbol der betrachteten Seite" -#: ../libyelp/yelp-view.c:683 +#: ../libyelp/yelp-view.c:733 +msgid "Save Image" +msgstr "Bild speichern" + +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. +#: ../libyelp/yelp-view.c:822 +#, c-format +msgid "Send email to %s" +msgstr "E-Mail senden an %s" + +#: ../libyelp/yelp-view.c:830 +msgid "_Open Link" +msgstr "_Verweis öffnen" + +#: ../libyelp/yelp-view.c:835 +#| msgid "Open Link in _New Window" +msgid "Open Link in New _Window" +msgstr "Verweis in _neuem Fenster öffnen" + +#: ../libyelp/yelp-view.c:871 +msgid "_Save Image As..." +msgstr "Bild _speichern unter …" + +#: ../libyelp/yelp-view.c:873 +msgid "_Save Video As..." +msgstr "Video _speichern unter …" + +#: ../libyelp/yelp-view.c:880 +msgid "S_end Image To..." +msgstr "Bild s_enden an …" + +#: ../libyelp/yelp-view.c:882 +msgid "S_end Video To..." +msgstr "Video s_enden an …" + +#: ../libyelp/yelp-view.c:893 +#| msgid "_Copy" +msgid "_Copy Text" +msgstr "Te_xt kopieren" + +#: ../libyelp/yelp-view.c:1064 #, c-format -#| msgid "Could not load document" msgid "Could not load a document for ‘%s’" msgstr "Ein Dokument für »%s« konnte nicht geladen werden" -#: ../libyelp/yelp-view.c:689 +#: ../libyelp/yelp-view.c:1070 #, c-format -#| msgid "Could not load document" msgid "Could not load a document" msgstr "Ein Dokument konnte nicht geladen werden" -#: ../libyelp/yelp-view.c:756 -#| msgid "Page not found" +#: ../libyelp/yelp-view.c:1137 msgid "Not Found" msgstr "Nicht gefunden" -#: ../libyelp/yelp-view.c:759 -#| msgid "Cannot create window" +#: ../libyelp/yelp-view.c:1140 msgid "Cannot Read" msgstr "Nicht lesbar" -#: ../libyelp/yelp-view.c:765 ../src/yelp-error.c:132 ../src/yelp-error.c:139 +#: ../libyelp/yelp-view.c:1146 msgid "Unknown Error" msgstr "Unbekannter Fehler" -#: ../libyelp/yelp-view.c:855 +#: ../libyelp/yelp-view.c:1237 #, c-format -#| msgid "The file ‘%s’ does not exist." msgid "The URI ‘%s’ does point to a valid page." msgstr "Die Adresse »%s« enthält keine gültige Seite." -#: ../libyelp/yelp-view.c:863 +#: ../libyelp/yelp-view.c:1245 #, c-format -#| msgid "The file ‘%s’ does not exist." msgid "The URI ‘%s’ could not be parsed." msgstr "Die Adresse »%s« konnte nicht verarbeitet werden." -#: ../src/eggdesktopfile.c:165 -#, c-format -msgid "File is not a valid .desktop file" -msgstr "Datei ist keine gültige .desktop-Datei" - -#: ../src/eggdesktopfile.c:188 -#, c-format -msgid "Unrecognized desktop file Version '%s'" -msgstr "Unbekannte Version »%s« der .desktop-Datei" - -#: ../src/eggdesktopfile.c:958 -#, c-format -msgid "Starting %s" -msgstr "%s wird gestartet" - -#: ../src/eggdesktopfile.c:1100 -#, c-format -msgid "Application does not accept documents on command line" -msgstr "" -"Von der Anwendung werden keine Dokumente auf der Befehlszeile angenommen" - -#: ../src/eggdesktopfile.c:1168 -#, c-format -msgid "Unrecognized launch option: %d" -msgstr "Unbekannte Startoption: %d" - -#: ../src/eggdesktopfile.c:1373 -#, c-format -msgid "Can't pass document URIs to a 'Type=Link' desktop entry" -msgstr "" -"Dokumentadressen können nicht an eine .desktop-Datei mit dem Eintrag " -"»Type=Link« übergeben werden" - -#: ../src/eggdesktopfile.c:1392 -#, c-format -msgid "Not a launchable item" -msgstr "Objekt kann nicht gestartet werden" - -#: ../src/eggsmclient.c:225 -msgid "Disable connection to session manager" -msgstr "Verbindung zur Sitzungsverwaltung ausschalten" - -#: ../src/eggsmclient.c:228 -msgid "Specify file containing saved configuration" -msgstr "Geben Sie die Datei mit der gespeicherten Konfiguration an" - -#: ../src/eggsmclient.c:228 -msgid "FILE" -msgstr "DATEI" - -#: ../src/eggsmclient.c:231 -msgid "Specify session management ID" -msgstr "Geben Sie die Kennung der Sitzungsverwaltung an" - -#: ../src/eggsmclient.c:231 -msgid "ID" -msgstr "Kennung" - -#: ../src/eggsmclient.c:252 -msgid "Session management options:" -msgstr "Optionen der Sitzungsverwaltung:" - -#: ../src/eggsmclient.c:253 -msgid "Show session management options" -msgstr "Optionen der Sitzungsverwaltung anzeigen" - #: ../src/yelp-application.c:55 msgid "Turn on editor mode" msgstr "In den Editor-Modus wechseln" @@ -1266,273 +1225,285 @@ msgstr "Die Schriftgröße des Texts verringern" msgid "Show Text _Cursor" msgstr "Text_cursor anzeigen" -#: ../src/yelp-application.c:297 ../src/yelp-main.c:386 -#: ../src/yelp-window.c:1000 ../yelp.desktop.in.in.h:2 +#: ../src/yelp-application.c:297 ../src/yelp-window.c:1665 +#: ../yelp.desktop.in.in.h:2 msgid "Help" msgstr "Hilfe" -#: ../src/yelp-application.c:547 +#: ../src/yelp-application.c:563 msgid "" "You do not have PackageKit installed. Package installation links require " "PackageKit." msgstr "" "PackageKit ist nicht installiert. Dies ist zur Paketinstallation erforderlich." -#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 ../src/yelp-man.c:292 -#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365 -msgid "Page not found" -msgstr "Seite konnte nicht gefunden werden" +#: ../src/yelp-window.c:289 +msgid "_Page" +msgstr "_Seite" + +#: ../src/yelp-window.c:290 +msgid "_View" +msgstr "_Ansicht" + +#: ../src/yelp-window.c:291 +msgid "_Go" +msgstr "_Gehe zu" + +#: ../src/yelp-window.c:292 +msgid "_Bookmarks" +msgstr "_Lesezeichen" + +#: ../src/yelp-window.c:295 +msgid "_New Window" +msgstr "_Neues Fenster" + +#: ../src/yelp-window.c:300 +msgid "_Close" +msgstr "S_chließen" + +#: ../src/yelp-window.c:305 +msgid "_Add Bookmark" +msgstr "Lesezeichen _hinzufügen" + +#: ../src/yelp-window.c:310 +#| msgid "_Edit Bookmarks..." +msgid "_Edit Bookmarks" +msgstr "Lesezeichen _bearbeiten" -#: ../src/yelp-db-print.c:259 ../src/yelp-man.c:293 +#: ../src/yelp-window.c:315 +#| msgid "Print This Page ..." +msgid "Find in Page..." +msgstr "In Seite suchen …" + +#: ../src/yelp-window.c:320 ../src/yelp-window.c:542 +msgid "Search..." +msgstr "Suchen …" + +#: ../src/yelp-window.c:325 +msgid "Open Location" +msgstr "Ort öffnen" + +#: ../src/yelp-window.c:352 +msgid "Application" +msgstr "Anwendung" + +#: ../src/yelp-window.c:353 +msgid "A YelpApplication instance that controls this window" +msgstr "Eine YelpApplication-Instanz, welche dieses Fenster steuert" + +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:785 #, c-format -msgid "The page %s was not found in the document %s." -msgstr "Die Seite %s konnte nicht im Dokument %s gefunden werden." +#| msgid "Bookmarks" +msgid "Bookmarks for %s" +msgstr "Lesezeichen für %s" -#: ../src/yelp-db-print.c:351 ../src/yelp-man.c:386 +#: ../src/yelp-window.c:1283 #, c-format -msgid "The requested page was not found in the document %s." -msgstr "Die angeforderte Seite konnte nicht im Dokument %s gefunden werden." +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "%i Treffer" +msgstr[1] "%i Treffer" + +#: ../src/yelp-window.c:1308 +msgid "No matches" +msgstr "Keine Treffer" + +#: ../src/yelp-window.c:1625 +msgid "Loading" +msgstr "Ladevorgang" + +#: ../src/yelp-window.c:1858 +#| msgid "Rename Bookmark" +msgid "_Open Bookmark" +msgstr "Lesezeichen _öffnen" -#: ../src/yelp-db-print.c:392 ../src/yelp-man.c:429 -msgid "File not found" -msgstr "Datei nicht gefunden" +#: ../src/yelp-window.c:1864 +#| msgid "Open Bookmark in New Window" +msgid "Open Bookmark in New _Window" +msgstr "Lesezeichen in neuem _Fenster öffnen" -#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 ../src/yelp-man.c:458 -#: ../src/yelp-toc.c:437 -msgid "Could not parse file" -msgstr "Datei konnte nicht analysiert werden" +#: ../src/yelp-window.c:1873 +#| msgid "Remove Bookmark" +msgid "_Remove Bookmark" +msgstr "Lesezeichen entfe_rnen" -#: ../src/yelp-error.c:136 -msgid "Could Not Read File" -msgstr "Datei konnte nicht gelesen werden" +#: ../yelp.desktop.in.in.h:1 +msgid "Get help with GNOME" +msgstr "Hilfe zu GNOME erhalten" -#: ../src/yelp-error.c:146 -msgid "No information is available about this error." -msgstr "Über diesen Fehler stehen keine weiteren Informationen zur Verfügung." +#~ msgid "" +#~ "The file ‘%s’ could not be read and decoded. The file may be compressed in " +#~ "an unsupported format." +#~ msgstr "" +#~ "Die Datei »%s« konnte nicht gelesen und dekodiert werden. Eventuell ist die " +#~ "Datei in einem nicht unterstützen Format komprimiert." -#: ../src/yelp-main.c:89 -msgid "Use a private session" -msgstr "Private Sitzung verwenden" +#~ msgid "File is not a valid .desktop file" +#~ msgstr "Datei ist keine gültige .desktop-Datei" -#: ../src/yelp-main.c:98 -msgid "Define which cache directory to use" -msgstr "Den Ordner für den Zwischenspeicher festlegen" +#~ msgid "Unrecognized desktop file Version '%s'" +#~ msgstr "Unbekannte Version »%s« der .desktop-Datei" -#. Commandline parsing is done here -#: ../src/yelp-main.c:357 -msgid " GNOME Help Browser" -msgstr " GNOME-Hilfe-Browser" +#~ msgid "Starting %s" +#~ msgstr "%s wird gestartet" -#: ../src/yelp-man.c:459 -#, c-format -msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed man page." -msgstr "" -"Die Datei »%s« konnte nicht analysiert werden, da sie keine gültige Handbuch-" -"Datei ist." +#~ msgid "Application does not accept documents on command line" +#~ msgstr "" +#~ "Von der Anwendung werden keine Dokumente auf der Befehlszeile angenommen" -#: ../src/yelp-print.c:97 -msgid "Print" -msgstr "Drucken" +#~ msgid "Unrecognized launch option: %d" +#~ msgstr "Unbekannte Startoption: %d" -#: ../src/yelp-print.c:167 -msgid "Preparing to print" -msgstr "Drucken wird vorbereitet" +#~ msgid "Can't pass document URIs to a 'Type=Link' desktop entry" +#~ msgstr "" +#~ "Dokumentadressen können nicht an eine .desktop-Datei mit dem Eintrag " +#~ "»Type=Link« übergeben werden" -#: ../src/yelp-print.c:261 -msgid "Printing is not supported on this printer" -msgstr "Drucken wird von diesem Drucker nicht unterstützt." +#~ msgid "Not a launchable item" +#~ msgstr "Objekt kann nicht gestartet werden" -#: ../src/yelp-print.c:264 -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "Postscript-Drucken wird vom Drucker »%s« nicht unterstützt." +#~ msgid "Disable connection to session manager" +#~ msgstr "Verbindung zur Sitzungsverwaltung ausschalten" -#: ../src/yelp-print.c:366 -msgid "Waiting to print" -msgstr "Warten auf Drucker" +#~ msgid "Specify file containing saved configuration" +#~ msgstr "Geben Sie die Datei mit der gespeicherten Konfiguration an" -#: ../src/yelp-print.c:578 -msgid "An error occurred while printing" -msgstr "Beim Drucken ist ein Fehler aufgetreten" +#~ msgid "FILE" +#~ msgstr "DATEI" -#: ../src/yelp-print.c:582 -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "Es war nicht möglich, das Dokument zu drucken: %s" +#~ msgid "Specify session management ID" +#~ msgstr "Geben Sie die Kennung der Sitzungsverwaltung an" -#: ../src/yelp-search-parser.c:67 -msgid "the GNOME Support Forums" -msgstr "GNOME Support-Foren (Englisch)" +#~ msgid "ID" +#~ msgstr "Kennung" -#: ../src/yelp-search-parser.c:285 -#, c-format -msgid "No results for \"%s\"" -msgstr "Keine Ergebnisse für »%s«" +#~ msgid "Session management options:" +#~ msgstr "Optionen der Sitzungsverwaltung:" -#: ../src/yelp-search-parser.c:286 -msgid "" -"Try using different words to describe the problem you're having or the topic " -"you want help with." -msgstr "" -"Versuchen Sie, Ihr Problem oder das Thema, zu dem Sie Hilfe möchten, mit " -"anderen Worten zu beschreiben." +#~ msgid "Show session management options" +#~ msgstr "Optionen der Sitzungsverwaltung anzeigen" -#: ../src/yelp-search-parser.c:289 -#, c-format -msgid "Search results for \"%s\"" -msgstr "Suchergebnisse für »%s«" +#~ msgid "Page not found" +#~ msgstr "Seite konnte nicht gefunden werden" -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT -#. -#: ../src/yelp-search-parser.c:303 -#, c-format -msgid "Repeat the search online at %s" -msgstr "Die Suche online bei %s wiederholen" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -#: ../src/yelp-search-parser.c:874 -msgid "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" -msgstr "" -"ein:eine:der:die:das:ich:du:er:sie:es:wir:ihr:so:zu:um:kann:dialog:tun:tut:" -"erklären:für:von:bis:nicht:hat:haben:hilfe:wie:wo:was:wieso:weshalb:warum:" -"kaputt:defekt:funktioniert:funktionieren:läuft:laufen" - -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -#: ../src/yelp-search-parser.c:890 -msgid "re" -msgstr "" -"ab:an:auf:be:bei:ein:ent:er:ge:hin:nach:nieder:über:um:un:unter:ver:vor:zer:zu" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -#: ../src/yelp-search-parser.c:899 -msgid "ers:er:ing:es:s:'s" -msgstr "e:n:en:s:lich:in:hei:keit:ung:nis:lein:chen" +#~ msgid "The page %s was not found in the document %s." +#~ msgstr "Die Seite %s konnte nicht im Dokument %s gefunden werden." -#: ../src/yelp-search-parser.c:1095 -msgid "No Comment" -msgstr "Kein Kommentar" +#~ msgid "The requested page was not found in the document %s." +#~ msgstr "Die angeforderte Seite konnte nicht im Dokument %s gefunden werden." -#. Much bigger problems -#: ../src/yelp-search.c:238 -msgid "Search could not be processed" -msgstr "Suche konnte nicht verarbeitet werden" +#~ msgid "File not found" +#~ msgstr "Datei nicht gefunden" -#: ../src/yelp-search.c:239 -msgid "The requested search could not be processed." -msgstr "Die angeforderte Suche konnte nicht verarbeitet werden." +#~ msgid "Could not parse file" +#~ msgstr "Datei konnte nicht analysiert werden" -#: ../src/yelp-search.c:366 -msgid "Cannot process the search" -msgstr "Suche konnte nicht verarbeitet werden" +#~ msgid "Could Not Read File" +#~ msgstr "Datei konnte nicht gelesen werden" -#: ../src/yelp-search.c:367 -msgid "The search processor returned invalid results" -msgstr "Die Verarbeitung der Suche gab ungültige Ergebnisse zurück" +#~ msgid "No information is available about this error." +#~ msgstr "" +#~ "Über diesen Fehler stehen keine weiteren Informationen zur Verfügung." -#: ../src/yelp-toc.c:267 -#, c-format -msgid "The page %s was not found in the TOC." -msgstr "Die Seite %s konnte nicht im Inhaltsverzeichnis gefunden werden." +#~ msgid "Use a private session" +#~ msgstr "Private Sitzung verwenden" -#: ../src/yelp-toc.c:366 -msgid "The requested page was not found in the TOC." -msgstr "" -"Die angeforderte Seite konnte nicht im Inhaltsverzeichnis gefunden werden." +#~ msgid "Define which cache directory to use" +#~ msgstr "Den Ordner für den Zwischenspeicher festlegen" -#: ../src/yelp-toc.c:438 -msgid "" -"The TOC file could not be parsed because it is not a well-formed XML document." -msgstr "" -"Die Inhaltsverzeichnis-Datei »%s« konnte nicht analysiert werden, da sie kein " -"gültiges XML-Dokument ist." +#~ msgid " GNOME Help Browser" +#~ msgstr " GNOME-Hilfe-Browser" -#: ../src/yelp-window.c:203 -msgid "_Page" -msgstr "_Seite" +#~ msgid "" +#~ "The file ‘%s’ could not be parsed because it is not a well-formed man page." +#~ msgstr "" +#~ "Die Datei »%s« konnte nicht analysiert werden, da sie keine gültige " +#~ "Handbuch-Datei ist." -#: ../src/yelp-window.c:204 -#| msgid "Viewer" -msgid "_View" -msgstr "_Ansicht" +#~ msgid "Preparing to print" +#~ msgstr "Drucken wird vorbereitet" -#: ../src/yelp-window.c:205 -msgid "_Go" -msgstr "_Gehe zu" +#~ msgid "Printing is not supported on this printer" +#~ msgstr "Drucken wird von diesem Drucker nicht unterstützt." -#: ../src/yelp-window.c:206 -msgid "_Bookmarks" -msgstr "_Lesezeichen" +#~ msgid "Printer %s does not support postscript printing." +#~ msgstr "Postscript-Drucken wird vom Drucker »%s« nicht unterstützt." -#: ../src/yelp-window.c:209 -msgid "_New Window" -msgstr "_Neues Fenster" +#~ msgid "Waiting to print" +#~ msgstr "Warten auf Drucker" -#: ../src/yelp-window.c:214 -#| msgid "Clocks" -msgid "_Close" -msgstr "S_chließen" +#~ msgid "An error occurred while printing" +#~ msgstr "Beim Drucken ist ein Fehler aufgetreten" -#: ../src/yelp-window.c:219 -msgid "_Add Bookmark" -msgstr "Lesezeichen _hinzufügen" +#~ msgid "It was not possible to print your document: %s" +#~ msgstr "Es war nicht möglich, das Dokument zu drucken: %s" -#: ../src/yelp-window.c:224 -msgid "Open Location" -msgstr "Ort öffnen" +#~ msgid "the GNOME Support Forums" +#~ msgstr "GNOME Support-Foren (Englisch)" -#: ../src/yelp-window.c:249 -#| msgid "Applications" -msgid "Application" -msgstr "Anwendung" +#~ msgid "No results for \"%s\"" +#~ msgstr "Keine Ergebnisse für »%s«" -#: ../src/yelp-window.c:250 -msgid "A YelpApplication instance that controls this window" -msgstr "Eine YelpApplication-Instanz, welche dieses Fenster steuert" +#~ msgid "" +#~ "Try using different words to describe the problem you're having or the " +#~ "topic you want help with." +#~ msgstr "" +#~ "Versuchen Sie, Ihr Problem oder das Thema, zu dem Sie Hilfe möchten, mit " +#~ "anderen Worten zu beschreiben." -#: ../src/yelp-window.c:416 -#| msgid "_Search:" -msgid "Search..." -msgstr "Suchen …" +#~ msgid "Search results for \"%s\"" +#~ msgstr "Suchergebnisse für »%s«" -#: ../src/yelp-window.c:945 -#| msgid "Loading..." -msgid "Loading" -msgstr "Ladevorgang" +#~ msgid "Repeat the search online at %s" +#~ msgstr "Die Suche online bei %s wiederholen" -#: ../yelp.desktop.in.in.h:1 -msgid "Get help with GNOME" -msgstr "Hilfe zu GNOME erhalten" +#~ msgid "" +#~ "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:" +#~ "doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:" +#~ "when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:" +#~ "this:to:what:where:who:will:with:won't:wont:why:work:working:works" +#~ msgstr "" +#~ "ein:eine:der:die:das:ich:du:er:sie:es:wir:ihr:so:zu:um:kann:dialog:tun:tut:" +#~ "erklären:für:von:bis:nicht:hat:haben:hilfe:wie:wo:was:wieso:weshalb:warum:" +#~ "kaputt:defekt:funktioniert:funktionieren:läuft:laufen" -#~ msgid "Bookmarks" -#~ msgstr "Lesezeichen" +#~ msgid "re" +#~ msgstr "" +#~ "ab:an:auf:be:bei:ein:ent:er:ge:hin:nach:nieder:über:um:un:unter:ver:vor:" +#~ "zer:zu" + +#~ msgid "ers:er:ing:es:s:'s" +#~ msgstr "e:n:en:s:lich:in:hei:keit:ung:nis:lein:chen" + +#~ msgid "No Comment" +#~ msgstr "Kein Kommentar" + +#~ msgid "Search could not be processed" +#~ msgstr "Suche konnte nicht verarbeitet werden" + +#~ msgid "The requested search could not be processed." +#~ msgstr "Die angeforderte Suche konnte nicht verarbeitet werden." + +#~ msgid "Cannot process the search" +#~ msgstr "Suche konnte nicht verarbeitet werden" + +#~ msgid "The search processor returned invalid results" +#~ msgstr "Die Verarbeitung der Suche gab ungültige Ergebnisse zurück" + +#~ msgid "The page %s was not found in the TOC." +#~ msgstr "Die Seite %s konnte nicht im Inhaltsverzeichnis gefunden werden." + +#~ msgid "The requested page was not found in the TOC." +#~ msgstr "" +#~ "Die angeforderte Seite konnte nicht im Inhaltsverzeichnis gefunden werden." + +#~ msgid "" +#~ "The TOC file could not be parsed because it is not a well-formed XML " +#~ "document." +#~ msgstr "" +#~ "Die Inhaltsverzeichnis-Datei »%s« konnte nicht analysiert werden, da sie " +#~ "kein gültiges XML-Dokument ist." #~ msgid "Re_name" #~ msgstr "Umbe_nennen" @@ -1593,15 +1564,6 @@ msgstr "Hilfe zu GNOME erhalten" #~ msgid "Use the default fonts set for the system." #~ msgstr "Die vom System vorgegebenen Schriften verwenden." -#~ msgid "Open Bookmark in New Window" -#~ msgstr "Lesezeichen in neuem Fenster öffnen" - -#~ msgid "Rename Bookmark" -#~ msgstr "Lesezeichen umbenennen" - -#~ msgid "Remove Bookmark" -#~ msgstr "Lesezeichen entfernen" - #~ msgid "A bookmark titled %s already exists for this page." #~ msgstr "Ein Lesezeichen mit dem Namen %s existiert bereits für diese Seite." @@ -1637,9 +1599,6 @@ msgstr "Hilfe zu GNOME erhalten" #~ msgid "Print This Document ..." #~ msgstr "Aktuelles Dokument drucken …" -#~ msgid "Print This Page ..." -#~ msgstr "Diese Seite drucken …" - #~ msgid "About This Document" #~ msgstr "Informationen über dieses Dokument" @@ -1649,9 +1608,6 @@ msgstr "Hilfe zu GNOME erhalten" #~ msgid "_Close Window" #~ msgstr "Fenster s_chließen" -#~ msgid "_Copy" -#~ msgstr "K_opieren" - #~ msgid "_Select All" #~ msgstr "_Alles auswählen" @@ -1697,15 +1653,6 @@ msgstr "Hilfe zu GNOME erhalten" #~ msgid "_Contents" #~ msgstr "_Inhalte" -#~ msgid "_Edit Bookmarks..." -#~ msgstr "Lesezeichen _bearbeiten" - -#~ msgid "_Open Link" -#~ msgstr "_Verweis öffnen" - -#~ msgid "Open Link in _New Window" -#~ msgstr "Verweis in _neuem Fenster öffnen" - #~ msgid "_Copy Link Address" #~ msgstr "Verweisadresse _kopieren" @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: yelp.HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=yelp&component=general\n" -"POT-Creation-Date: 2010-05-04 15:45+0000\n" -"PO-Revision-Date: 2010-05-04 19:29+0200\n" +"POT-Creation-Date: 2010-06-09 19:05+0000\n" +"PO-Revision-Date: 2010-06-16 06:12+0200\n" "Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n" "Language-Team: Español <gnome-es-list@gnome.org>\n" "MIME-Version: 1.0\n" @@ -872,28 +872,30 @@ msgid "Word Processors" msgstr "Procesador de textos" #: ../libyelp/yelp-bz2-decompressor.c:146 -#: ../libyelp/yelp-lzma-decompressor.c:147 +#: ../libyelp/yelp-lzma-decompressor.c:155 msgid "Invalid compressed data" msgstr "Datos comprimidos no válidos" #: ../libyelp/yelp-bz2-decompressor.c:152 -#: ../libyelp/yelp-lzma-decompressor.c:153 +#: ../libyelp/yelp-lzma-decompressor.c:161 msgid "Not enough memory" msgstr "No hay suficiente memoria" #: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233 #: ../libyelp/yelp-mallard-document.c:254 -#: ../libyelp/yelp-mallard-document.c:391 +#: ../libyelp/yelp-mallard-document.c:397 ../libyelp/yelp-man-document.c:269 #, c-format msgid "The page ‘%s’ was not found in the document ‘%s’." msgstr "La página «%s» no se encontró en el documento «%s»." #: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 +#: ../libyelp/yelp-man-document.c:403 #, c-format msgid "The file does not exist." msgstr "El archivo no existe." #: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 +#: ../libyelp/yelp-man-document.c:413 #, c-format msgid "The file ‘%s’ does not exist." msgstr "El archivo «%s» no existe." @@ -916,11 +918,12 @@ msgstr "" "El archivo «%s» no se pudo analizar porque uno o más de sus archivos " "incluidos no son documentos XML bien formados." -#: ../libyelp/yelp-docbook-document.c:720 +#: ../libyelp/yelp-docbook-document.c:740 msgid "Unknown" msgstr "Desconocido" -#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-man-document.c:345 #, c-format msgid "The requested page was not found in the document ‘%s’." msgstr "No se encontró la página solicitada en el documento «%s»." @@ -938,53 +941,51 @@ msgstr "" "El archivo «%s» no se pudo analizar porque no es una página de información " "bien formada." -#: ../libyelp/yelp-io-channel.c:125 -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." -msgstr "" -"El archivo «%s» no se pudo leer y decodificar. El archivo podría estar " -"comprimido en un formato no soportado." - -#: ../libyelp/yelp-location-entry.c:251 +#: ../libyelp/yelp-location-entry.c:279 msgid "Description Column" msgstr "Columna de descripción" -#: ../libyelp/yelp-location-entry.c:252 +#: ../libyelp/yelp-location-entry.c:280 msgid "A column in the model to get descriptions from" msgstr "Una columna en el modelo de la que obtener las descripciones" -#: ../libyelp/yelp-location-entry.c:267 +#: ../libyelp/yelp-location-entry.c:295 msgid "Icon Column" msgstr "Columna de icono" -#: ../libyelp/yelp-location-entry.c:268 +#: ../libyelp/yelp-location-entry.c:296 msgid "A column in the model to get icon names from" msgstr "Una columna en el modelo de la que obtener los nombres de icono" -#: ../libyelp/yelp-location-entry.c:283 +#: ../libyelp/yelp-location-entry.c:311 msgid "Flags Column" msgstr "Columna de opciones" -#: ../libyelp/yelp-location-entry.c:284 +#: ../libyelp/yelp-location-entry.c:312 msgid "A column in the model with YelpLocationEntryFlags flags" msgstr "Una columna en el modelo con las opciones YelpLocationEntryFlags" -#: ../libyelp/yelp-location-entry.c:300 +#: ../libyelp/yelp-location-entry.c:328 msgid "Enable Search" msgstr "Activar búsqueda" -#: ../libyelp/yelp-location-entry.c:301 +#: ../libyelp/yelp-location-entry.c:329 msgid "Whether the location entry can be used as a search field" msgstr "" "Indica si la entrada de ubicación se puede usar como un campo de búsqueda" -#: ../libyelp/yelp-mallard-document.c:294 +#: ../libyelp/yelp-mallard-document.c:296 #, c-format msgid "The directory ‘%s’ does not exist." msgstr "El directorio «%s» no existe." +#: ../libyelp/yelp-man-document.c:444 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed man page." +msgstr "" +"El archivo «%s» no se pudo analizar porque no es una página man bien formada." + #: ../libyelp/yelp-settings.c:146 msgid "GtkSettings" msgstr "GtkSettings" @@ -1046,140 +1047,208 @@ msgstr "No se encontró atributo href en yelp:document\n" msgid "Out of memory" msgstr "Se agotó la memoria" -#: ../libyelp/yelp-view.c:92 +#: ../libyelp/yelp-view.c:118 +msgid "_Print..." +msgstr "_Imprimir…" + +#: ../libyelp/yelp-view.c:123 msgid "_Back" msgstr "A_trás" -#: ../libyelp/yelp-view.c:97 +#: ../libyelp/yelp-view.c:128 msgid "_Forward" msgstr "A_delante" -#: ../libyelp/yelp-view.c:102 +#: ../libyelp/yelp-view.c:133 msgid "_Previous Page" msgstr "Página _anterior" -#: ../libyelp/yelp-view.c:107 +#: ../libyelp/yelp-view.c:138 msgid "_Next Page" msgstr "_Siguiente página" -#: ../libyelp/yelp-view.c:310 +#: ../libyelp/yelp-view.c:387 msgid "Yelp URI" msgstr "URI de Yelp" -#: ../libyelp/yelp-view.c:311 +#: ../libyelp/yelp-view.c:388 msgid "A YelpUri with the current location" msgstr "Un YelpUri con la ubicación actual" -#: ../libyelp/yelp-view.c:319 +#: ../libyelp/yelp-view.c:396 msgid "Loading State" msgstr "Estado de la carga" -#: ../libyelp/yelp-view.c:320 +#: ../libyelp/yelp-view.c:397 msgid "The loading state of the view" msgstr "El estado de carga de la vista" -#: ../libyelp/yelp-view.c:329 +#: ../libyelp/yelp-view.c:406 msgid "Page ID" msgstr "ID de página" -#: ../libyelp/yelp-view.c:330 -msgid "The ID of the root page of the page being viewew" +#: ../libyelp/yelp-view.c:407 +msgid "The ID of the root page of the page being viewed" msgstr "El ID de la página raíz de la página que se está viendo" -#: ../libyelp/yelp-view.c:338 +#: ../libyelp/yelp-view.c:415 msgid "Root Title" msgstr "Título raíz" -#: ../libyelp/yelp-view.c:339 -msgid "The title of the root page of the page being viewew" +#: ../libyelp/yelp-view.c:416 +msgid "The title of the root page of the page being viewed" msgstr "El título de la página raíz de la página que se está viendo" -#: ../libyelp/yelp-view.c:347 +#: ../libyelp/yelp-view.c:424 msgid "Page Title" msgstr "Título de página" -#: ../libyelp/yelp-view.c:348 +#: ../libyelp/yelp-view.c:425 msgid "The title of the page being viewed" msgstr "El título de la página que se está viendo" -#: ../libyelp/yelp-view.c:356 +#: ../libyelp/yelp-view.c:433 msgid "Page Description" msgstr "Descripción de página" -#: ../libyelp/yelp-view.c:357 +#: ../libyelp/yelp-view.c:434 msgid "The description of the page being viewed" msgstr "La descripción de la página que se está viendo" -#: ../libyelp/yelp-view.c:365 +#: ../libyelp/yelp-view.c:442 msgid "Page Icon" msgstr "Icono de página" -#: ../libyelp/yelp-view.c:366 +#: ../libyelp/yelp-view.c:443 msgid "The icon of the page being viewed" msgstr "El icono de la página que se está viendo" -#: ../libyelp/yelp-view.c:683 +#: ../libyelp/yelp-view.c:791 +msgid "Save Image" +msgstr "Guardar imagen" + +#: ../libyelp/yelp-view.c:873 +#| msgid "Save Image" +msgid "Save Code" +msgstr "Guardar código" + +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. +#: ../libyelp/yelp-view.c:1034 +#, c-format +msgid "Send email to %s" +msgstr "Enviar correo-e a %s" + +#: ../libyelp/yelp-view.c:1044 +msgid "_Open Link" +msgstr "_Abrir enlace" + +#: ../libyelp/yelp-view.c:1049 +msgid "Open Link in New _Window" +msgstr "Abrir enlace en una _ventana nueva" + +#: ../libyelp/yelp-view.c:1091 +msgid "_Save Image As..." +msgstr "Guardar imagen _como…" + +#: ../libyelp/yelp-view.c:1093 +msgid "_Save Video As..." +msgstr "Guardar vídeo _como…" + +#: ../libyelp/yelp-view.c:1100 +msgid "S_end Image To..." +msgstr "_Enviar imagen a…" + +#: ../libyelp/yelp-view.c:1102 +msgid "S_end Video To..." +msgstr "_Enviar vídeo a…" + +#: ../libyelp/yelp-view.c:1113 +msgid "_Copy Text" +msgstr "_Copiar texto" + +#: ../libyelp/yelp-view.c:1126 +msgid "C_opy Code Block" +msgstr "C_opiar bloque de código" + +#: ../libyelp/yelp-view.c:1131 +#| msgid "_Save Video As..." +msgid "Save Code _Block As..." +msgstr "Guarcar _bloque de código como…" + +#: ../libyelp/yelp-view.c:1302 #, c-format msgid "Could not load a document for ‘%s’" msgstr "No se pudo cargar un documento para «%s»" -#: ../libyelp/yelp-view.c:689 +#: ../libyelp/yelp-view.c:1308 #, c-format msgid "Could not load a document" msgstr "No se pudo cargar un documento" -#: ../libyelp/yelp-view.c:756 +#: ../libyelp/yelp-view.c:1375 msgid "Not Found" msgstr "No encontrada" -#: ../libyelp/yelp-view.c:759 +#: ../libyelp/yelp-view.c:1378 msgid "Cannot Read" msgstr "No se puede leer" -#: ../libyelp/yelp-view.c:765 +#: ../libyelp/yelp-view.c:1384 msgid "Unknown Error" msgstr "Error desconocido" -#: ../libyelp/yelp-view.c:855 +#: ../libyelp/yelp-view.c:1476 #, c-format -msgid "The URI ‘%s’ does point to a valid page." -msgstr "El URI «%s» no apunta a una página válida." +#| msgid "The URI ‘%s’ does point to a valid page." +msgid "The URI ‘%s’ does not point to a valid page." +msgstr "El URI «%s» no apunta a una página válida." -#: ../libyelp/yelp-view.c:863 +#: ../libyelp/yelp-view.c:1482 +#, c-format +#| msgid "The URI ‘%s’ does point to a valid page." +msgid "The URI does not point to a valid page." +msgstr "El URI no apunta a una página válida." + +#: ../libyelp/yelp-view.c:1490 #, c-format msgid "The URI ‘%s’ could not be parsed." msgstr "No se pudo analizar el URI «%s»." -#: ../src/yelp-application.c:55 +#: ../src/yelp-application.c:56 msgid "Turn on editor mode" msgstr "Activar el modo editor" -#: ../src/yelp-application.c:106 +#: ../src/yelp-application.c:107 msgid "_Larger Text" msgstr "Texto más gra_nde" -#: ../src/yelp-application.c:108 +#: ../src/yelp-application.c:109 msgid "Increase the size of the text" msgstr "Aumentar el tamaño del texto" -#: ../src/yelp-application.c:111 +#: ../src/yelp-application.c:112 msgid "_Smaller Text" msgstr "Texto más peque_ño" -#: ../src/yelp-application.c:113 +#: ../src/yelp-application.c:114 msgid "Descrease the size of the text" msgstr "Reducir el tamaño del texto" -#: ../src/yelp-application.c:221 +#: ../src/yelp-application.c:230 msgid "Show Text _Cursor" msgstr "Mostrar el _cursor de texto" -#: ../src/yelp-application.c:297 ../src/yelp-window.c:1041 +#: ../src/yelp-application.c:306 ../src/yelp-window.c:1841 #: ../yelp.desktop.in.in.h:2 msgid "Help" msgstr "Ayuda" -#: ../src/yelp-application.c:547 +#: ../src/yelp-application.c:572 msgid "" "You do not have PackageKit installed. Package installation links require " "PackageKit." @@ -1187,63 +1256,110 @@ msgstr "" "No tiene PackageKit instalado. Los enlaces de instalación de paquetes " "requieren PackageKit." -#: ../src/yelp-window.c:207 +#: ../src/yelp-window.c:298 msgid "_Page" msgstr "_Página" -#: ../src/yelp-window.c:208 +#: ../src/yelp-window.c:299 msgid "_View" msgstr "_Ver" -#: ../src/yelp-window.c:209 +#: ../src/yelp-window.c:300 msgid "_Go" msgstr "_Ir a" -#: ../src/yelp-window.c:210 +#: ../src/yelp-window.c:301 msgid "_Bookmarks" msgstr "_Marcadores" -#: ../src/yelp-window.c:213 +#: ../src/yelp-window.c:304 msgid "_New Window" msgstr "Ventana _nueva" -#: ../src/yelp-window.c:218 +#: ../src/yelp-window.c:309 msgid "_Close" msgstr "_Cerrar" -#: ../src/yelp-window.c:223 +#: ../src/yelp-window.c:314 msgid "_Add Bookmark" msgstr "_Añadir marcador" -#: ../src/yelp-window.c:228 -#| msgid "Search..." -msgid "Search" -msgstr "Buscar" +#: ../src/yelp-window.c:319 +msgid "_Edit Bookmarks" +msgstr "_Editar marcadores" + +#: ../src/yelp-window.c:324 +msgid "Find in Page..." +msgstr "Buscar en la página…" + +#: ../src/yelp-window.c:329 ../src/yelp-window.c:569 +msgid "Search..." +msgstr "Buscar…" -#: ../src/yelp-window.c:233 +#: ../src/yelp-window.c:334 msgid "Open Location" msgstr "Abrir dirección" -#: ../src/yelp-window.c:260 +#: ../src/yelp-window.c:363 msgid "Application" msgstr "Aplicación" -#: ../src/yelp-window.c:261 +#: ../src/yelp-window.c:364 msgid "A YelpApplication instance that controls this window" msgstr "Una instancia de YelpApplication que controla esta ventana" -#: ../src/yelp-window.c:426 -msgid "Search..." -msgstr "Buscar…" +#: ../src/yelp-window.c:641 +msgid "Read Later" +msgstr "Leer más tarde" + +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:829 +#, c-format +msgid "Bookmarks for %s" +msgstr "Marcadores para %s" -#: ../src/yelp-window.c:985 +#: ../src/yelp-window.c:1457 +#, c-format +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "%i coincidencia" +msgstr[1] "%i coincidencias" + +#: ../src/yelp-window.c:1482 +msgid "No matches" +msgstr "Sin coincidencias" + +#: ../src/yelp-window.c:1801 msgid "Loading" msgstr "Cargando" +#: ../src/yelp-window.c:2034 +msgid "_Open Bookmark" +msgstr "_Abrir marcador" + +#: ../src/yelp-window.c:2040 +msgid "Open Bookmark in New _Window" +msgstr "Abrir marcador en una _ventana nueva" + +#: ../src/yelp-window.c:2049 +msgid "_Remove Bookmark" +msgstr "_Quitar marcador" + #: ../yelp.desktop.in.in.h:1 msgid "Get help with GNOME" msgstr "Obtenga ayuda acerca de GNOME" +#~ msgid "" +#~ "The file ‘%s’ could not be read and decoded. The file may be compressed " +#~ "in an unsupported format." +#~ msgstr "" +#~ "El archivo «%s» no se pudo leer y decodificar. El archivo podría estar " +#~ "comprimido en un formato no soportado." + +#~| msgid "Search..." +#~ msgid "Search" +#~ msgstr "Buscar" + #~ msgid "File is not a valid .desktop file" #~ msgstr "El archivo no es un archivo .desktop válido" @@ -1318,16 +1434,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ msgid " GNOME Help Browser" #~ msgstr "Visor de ayuda de GNOME" -#~ msgid "" -#~ "The file ‘%s’ could not be parsed because it is not a well-formed man " -#~ "page." -#~ msgstr "" -#~ "El archivo «%s» no se pudo analizar porque no es una página man bien " -#~ "formada." - -#~ msgid "Print" -#~ msgstr "Imprimir" - #~ msgid "Preparing to print" #~ msgstr "Preparándose para imprimir" @@ -1408,9 +1514,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ "El archivo TOC no se pudo analizar porque no es un documento XML bien " #~ "formado." -#~ msgid "Bookmarks" -#~ msgstr "Marcadores" - #~ msgid "Re_name" #~ msgstr "Re_nombrar" @@ -1468,15 +1571,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ msgid "Use the default fonts set for the system." #~ msgstr "Usar el conjunto de tipos predeterminado del sistema." -#~ msgid "Open Bookmark in New Window" -#~ msgstr "Abrir marcador en una ventana nueva" - -#~ msgid "Rename Bookmark" -#~ msgstr "Renombrar marcador" - -#~ msgid "Remove Bookmark" -#~ msgstr "Eliminar marcador" - #~ msgid "A bookmark titled %s already exists for this page." #~ msgstr "Ya existe un marcador titulado %s para esta página." @@ -1511,9 +1605,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ msgid "Print This Document ..." #~ msgstr "Imprimir este documento..." -#~ msgid "Print This Page ..." -#~ msgstr "Imprimir esta página..." - #~ msgid "About This Document" #~ msgstr "Acerca de este documento" @@ -1523,9 +1614,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ msgid "_Close Window" #~ msgstr "_Cerrar ventana" -#~ msgid "_Copy" -#~ msgstr "_Copiar" - #~ msgid "_Select All" #~ msgstr "Seleccionar _todo" @@ -1571,15 +1659,6 @@ msgstr "Obtenga ayuda acerca de GNOME" #~ msgid "_Contents" #~ msgstr "Índ_ice" -#~ msgid "_Edit Bookmarks..." -#~ msgstr "_Editar marcadores..." - -#~ msgid "_Open Link" -#~ msgstr "_Abrir enlace" - -#~ msgid "Open Link in _New Window" -#~ msgstr "Abrir enlace en una _ventana nueva" - #~ msgid "_Copy Link Address" #~ msgstr "_Copiar dirección del enlace" @@ -1,27 +1,28 @@ # Yelp eesti keele tõlge. # Estonian translation of Yelp. # -# Copyright (C) 2002-2006 Free Software Foundation, Inc. -# Copyright (C) 2007-2009 The GNOME Project +# Copyright (C) 2002–2006 Free Software Foundation, Inc. +# Copyright (C) 2007–2010 The GNOME Project # This file is distributed under the same license as the Yelp package. # -# Tõivo Leedjärv <toivo@linux.ee>, 2002-2004. +# Tõivo Leedjärv <toivo@linux.ee>, 2002–2004. # Allan Sims <allsi@eau.ee>, 2003. # Priit Laes <amd store20 com>, 2005, 2006. -# Ivar Smolin <okul@linux.ee>, 2005-2009. +# Ivar Smolin <okul@linux.ee>, 2005–2010. # msgid "" msgstr "" -"Project-Id-Version: yelp HEAD\n" +"Project-Id-Version: yelp MASTER\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=yelp&component=general\n" -"POT-Creation-Date: 2009-08-07 00:18+0000\n" -"PO-Revision-Date: 2009-08-07 11:00+0300\n" +"POT-Creation-Date: 2010-06-02 22:55+0000\n" +"PO-Revision-Date: 2010-06-03 10:35+0300\n" "Last-Translator: Ivar Smolin <okul@linux.ee>\n" "Language-Team: Estonian <gnome-et@linux.ee>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "GNU Info Pages" msgstr "GNU teabelehed" @@ -660,547 +661,703 @@ msgstr "Tere tulemast GNOME'i Abiteabe sirvijasse" msgid "Word Processors" msgstr "Tekstitöötlusprogrammid" -msgid "Bookmarks" -msgstr "Järjehoidjad" +msgid "Invalid compressed data" +msgstr "Vigaselt pakitud andmed" -msgid "Re_name" -msgstr "Muuda _nime" +msgid "Not enough memory" +msgstr "Pole piisavalt mälu" -msgid "_Bookmarks:" -msgstr "_Järjehoidjad:" +#, c-format +msgid "The page ‘%s’ was not found in the document ‘%s’." +msgstr "Dokumendist „%2$s” ei leitud lehete „%1$s”." -msgid "Add Bookmark" -msgstr "Järjehoidja lisamine" +#, c-format +msgid "The file does not exist." +msgstr "Faili pole olemas." -msgid "_Title:" -msgstr "_Pealkiri:" +#, c-format +msgid "The file ‘%s’ does not exist." +msgstr "Faili „%s” pole olemas." -msgid "Open Location" -msgstr "Asukoha avamine" +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed XML " +"document." +msgstr "" +"Faili „%s” pole võimalik analüüsida kuna see pole korrektselt vormindatud " +"XML-dokument." -msgid "_Location:" -msgstr "_Asukoht:" +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because one or more of its included files " +"is not a well-formed XML document." +msgstr "" +"Faili „%s” pole võimalik analüüsida kuna üks või rohkem selle poolt kaasatud " +"faili pole korrektselt vormindatud XML-dokumendid." -msgid "Fonts" -msgstr "Kirjatüübid" +msgid "Unknown" +msgstr "Tundmatu" -msgid "Preferences" -msgstr "Eelistused" +#, c-format +msgid "The requested page was not found in the document ‘%s’." +msgstr "Dokumendist „%s” ei leitud küsitud lehekülge." -msgid "_Browse with caret" -msgstr "Sirvimisel näidatakse _tekstikursorit" +#, c-format +msgid "An unknown error occurred." +msgstr "Esines tundmatu viga." -msgid "_Fixed width:" -msgstr "_Fikseeritud laiusega:" +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed info page." +msgstr "" +"Faili „%s” pole võimalik analüüsida kuna see pole korrektselt vormindatud " +"teabeleht (info page)." -msgid "_Use system fonts" -msgstr "_Kasutatakse süsteemseid kirjatüüpe" +msgid "Description Column" +msgstr "Kirjelduse veerg" -msgid "_Variable width:" -msgstr "_Muutuva laiusega:" +msgid "A column in the model to get descriptions from" +msgstr "" -msgid "Font for fixed text" -msgstr "Kirjatüüp fikseeritud laiusega teksti jaoks" +msgid "Icon Column" +msgstr "Ikoonide veerg" -msgid "Font for text" -msgstr "Kirjatüüp teksti jaoks" +msgid "A column in the model to get icon names from" +msgstr "" -msgid "Font for text with fixed width." -msgstr "Kirjatüüp fikseeritud laiusega teksti jaoks." +msgid "Flags Column" +msgstr "Lippude veerg" -msgid "Font for text with variable width." -msgstr "Kirjatüüp muutuva laiusega teksti jaoks." +msgid "A column in the model with YelpLocationEntryFlags flags" +msgstr "" -msgid "Use a keyboard-controllable caret when viewing pages." -msgstr "Lehtede vaatamisel kasuta klaviatuuriga juhitavat tekstikursorit." +msgid "Enable Search" +msgstr "" -msgid "Use caret" -msgstr "Kasuta tekstikursorit" +msgid "Whether the location entry can be used as a search field" +msgstr "" -msgid "Use system fonts" -msgstr "Süsteemi kirjatüüpide kasutamine" +#, c-format +msgid "The directory ‘%s’ does not exist." +msgstr "Kataloogi „%s” pole olemas." -msgid "Use the default fonts set for the system." -msgstr "Süsteemsete vaikekirjatüüpide kasutamine." +msgid "GtkSettings" +msgstr "GtkSettings" -#, c-format -msgid "File is not a valid .desktop file" -msgstr "Fail pole korrektne .desktop fail" +msgid "A GtkSettings object to get settings from" +msgstr "" -#, c-format -msgid "Unrecognized desktop file Version '%s'" -msgstr "Töölauafaili tundmatu versioon '%s'" +msgid "GtkIconTheme" +msgstr "GtkIconTheme" -#, c-format -msgid "Starting %s" -msgstr "Käivitamine: %s" +msgid "A GtkIconTheme object to get icons from" +msgstr "" -#, c-format -msgid "Application does not accept documents on command line" -msgstr "Rakendus ei aktsepteeri käsurealt antud dokumente" +msgid "Font Adjustment" +msgstr "" -#, c-format -msgid "Unrecognized launch option: %d" -msgstr "Tundmatu käivitusvalik: %d" +msgid "A size adjustment to add to font sizes" +msgstr "" -#, c-format -msgid "Can't pass document URIs to a 'Type=Link' desktop entry" +msgid "Show Text Cursor" +msgstr "" + +msgid "Show the text cursor or caret for accessibile navigation" +msgstr "" + +msgid "Editor Mode" msgstr "" -"Dokumendi URI-sid pole võimalik 'Liik=Viit' tüüpi töölauakirjetele edastada" + +msgid "Enable features useful to editors" +msgstr "" + +msgid "XSLT Stylesheet" +msgstr "XSLT-laaditabel" + +msgid "The location of the XSLT stylesheet" +msgstr "XSLT-laaditabeli asukoht" #, c-format -msgid "Not a launchable item" -msgstr "Pole käivitatav kirje" +msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." +msgstr "XSLT-laaditabel „%s” on puudu või on see vigane." + +msgid "No href attribute found on yelp:document\n" +msgstr "yelp:document küljest ei leitud rekvisiiti \"href\"\n" + +msgid "Out of memory" +msgstr "Mälu otsas" -msgid "Disable connection to session manager" -msgstr "Seansihalduriga ühendumise keelamine" +msgid "_Print..." +msgstr "_Prindi..." -msgid "Specify file containing saved configuration" -msgstr "Salvestatud seadistusi sisaldava faili määramine" +msgid "_Back" +msgstr "_Tagasi" -msgid "FILE" -msgstr "FAIL" +msgid "_Forward" +msgstr "_Edasi" -msgid "Specify session management ID" -msgstr "Seansihalduse ID määramine" +msgid "_Previous Page" +msgstr "_Eelmine leht" -msgid "ID" -msgstr "ID" +msgid "_Next Page" +msgstr "_Järgmine leht" -msgid "Session management options:" -msgstr "Session management options" +msgid "Yelp URI" +msgstr "Yelpi URI" -msgid "Show session management options" -msgstr "Seansihalduse valikute näitamine" +msgid "A YelpUri with the current location" +msgstr "" -msgid "Open Bookmark in New Window" -msgstr "Ava järjehoidja uues aknas" +msgid "Loading State" +msgstr "Oleku laadimine" -msgid "Rename Bookmark" -msgstr "Muuda järjehoidja nime" +msgid "The loading state of the view" +msgstr "Vaate oleku laadimine" -msgid "Remove Bookmark" -msgstr "Eemalda järjehoidja" +msgid "Page ID" +msgstr "Lehe ID" -#, c-format -msgid "A bookmark titled %s already exists for this page." -msgstr "Järjehoidja pealkirjaga %s on selle lehe jaoks juba olemas." +msgid "The ID of the root page of the page being viewed" +msgstr "Vaadeldava juurlehe ID" -#, c-format -msgid "A bookmark titled <b>%s</b> already exists for this page." -msgstr "Järjehoidja pealkirjaga <b>%s</b> on selle lehe jaoks juba olemas." +msgid "Root Title" +msgstr "" -msgid "Help Topics" -msgstr "Abiteabe teemad" +msgid "The title of the root page of the page being viewed" +msgstr "" -msgid "Document Sections" -msgstr "Dokumendi jaotised" +msgid "Page Title" +msgstr "Lehe pealkiri" -msgid "Page not found" -msgstr "Lehekülge ei leitud" +msgid "The title of the page being viewed" +msgstr "Vaadatava lehe pealkiri" -#, c-format -msgid "The page %s was not found in the document %s." -msgstr "Dokumendist %2$s ei leitud lehekülge %1$s." +msgid "Page Description" +msgstr "Lehe kirjeldus" -#, c-format -msgid "The requested page was not found in the document %s." -msgstr "Dokumendis %s ei leitud küsitud lehekülge." +msgid "The description of the page being viewed" +msgstr "Vaadeldava lehe kirjeldus" -msgid "File not found" -msgstr "Faili ei leitud" +msgid "Page Icon" +msgstr "Lehe ikoon" -#, c-format -msgid "The file ‘%s’ does not exist." -msgstr "Faili „%s” pole olemas." +msgid "The icon of the page being viewed" +msgstr "Vaadeldava lehe ikoon" -msgid "Could not parse file" -msgstr "Faili pole võimalik analüüsida" +msgid "Save Image" +msgstr "Pildi salvestamine" +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. #, c-format -msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed XML " -"document." +msgid "Send email to %s" msgstr "" -"Faili „%s” pole võimalik analüüsida kuna see pole korrektselt vormindatud " -"XML-dokument." + +msgid "_Open Link" +msgstr "_Ava viit" + +msgid "Open Link in New _Window" +msgstr "Ava viit _uues aknas" + +msgid "_Save Image As..." +msgstr "Salvesta pilt _kui..." + +msgid "_Save Video As..." +msgstr "Salvesta video _kui..." + +msgid "S_end Image To..." +msgstr "S_aada pilt..." + +msgid "S_end Video To..." +msgstr "S_aada video..." + +msgid "_Copy Text" +msgstr "_Kopeeri tekst" #, c-format -msgid "" -"The file ‘%s’ could not be parsed because one or more of its included files " -"is not a well-formed XML document." +msgid "Could not load a document for ‘%s’" msgstr "" -"Faili „%s” pole võimalik analüüsida kuna üks või rohkem selle poolt kaasatud " -"faili pole korrektselt vormindatud XML-dokumendid." -msgid "Unknown" -msgstr "Tundmatu" +#, c-format +msgid "Could not load a document" +msgstr "Dokumenti pole võimalik laadida" + +msgid "Not Found" +msgstr "Ei leitud" + +msgid "Cannot Read" +msgstr "Pole võimalik lugeda" msgid "Unknown Error" msgstr "Tundmatu viga" -msgid "Could Not Read File" -msgstr "Faili pole võimalik lugeda" - -msgid "No information is available about this error." -msgstr "Selle vea kohta puuduvad andmed." +#, c-format +msgid "The URI ‘%s’ does point to a valid page." +msgstr "URI „%s” ei viita korrektsele lehele." #, c-format -msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed info page." +msgid "The URI ‘%s’ could not be parsed." +msgstr "URI „%s” pole võimalik analüüsida." + +msgid "Turn on editor mode" msgstr "" -"Faili „%s” pole võimalik analüüsida kuna see pole korrektselt vormindatud " -"teabeleht (info page)." -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." +msgid "_Larger Text" msgstr "" -"Faili „%s” ei ole võimalik lugeda ja dekodeerida. Arvatavasti on fail " -"pakitud toetamata vorminguga." -msgid "Use a private session" -msgstr "Uus privaatne seanss" +msgid "Increase the size of the text" +msgstr "Teksti suuruse suurendamine" -msgid "Define which cache directory to use" -msgstr "Kasutatava puhverkataloogi määramine" +msgid "_Smaller Text" +msgstr "" + +msgid "Descrease the size of the text" +msgstr "Teksti suuruse vähendamine" -#. Commandline parsing is done here -msgid " GNOME Help Browser" -msgstr " GNOME Abiteabe sirvija" +msgid "Show Text _Cursor" +msgstr "" msgid "Help" msgstr "Abi" -msgid "Directory not found" -msgstr "Kataloogi ei leitud" - -#, c-format -msgid "The directory ‘%s’ does not exist." -msgstr "Kataloogi „%s” pole olemas." - -#, c-format msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed man page." +"You do not have PackageKit installed. Package installation links require " +"PackageKit." msgstr "" -"Faili „%s” pole võimalik analüüsida kuna see pole käsiraamatu korrektselt " -"vormindatud leht (man page)." -msgid "Print" -msgstr "Prindi" +msgid "_Page" +msgstr "_Leht" -msgid "Preparing to print" -msgstr "Printimise ettevalmistamine" +msgid "_View" +msgstr "_Vaade" -msgid "Printing is not supported on this printer" -msgstr "Selle printeriga ei ole printimine toetatud" +msgid "_Go" +msgstr "_Liikumine" -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "Printer %s ei toeta postscript-printimist." +msgid "_Bookmarks" +msgstr "_Järjehoidjad" -msgid "Waiting to print" -msgstr "Printimise ootamine" +msgid "_New Window" +msgstr "_Uus aken" -msgid "An error occurred while printing" -msgstr "Printimisel tekkis viga" +msgid "_Close" +msgstr "Sul_ge" -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "Sinu dokumenti ei olnud võimalik printida: %s" +msgid "_Add Bookmark" +msgstr "_Lisa järjehoidja" -msgid "the GNOME Support Forums" -msgstr "GNOME kasutajatoe foorumid" +msgid "_Edit Bookmarks" +msgstr "_Järjehoidjate redigeerimine" -#, c-format -msgid "No results for \"%s\"" -msgstr "Tulemusi otsingule \"%s\" ei leitud" +msgid "Find in Page..." +msgstr "Otsi lehelt..." -msgid "" -"Try using different words to describe the problem you're having or the topic " -"you want help with." +msgid "Search..." +msgstr "Otsimine..." + +msgid "Open Location" +msgstr "Asukoha avamine" + +msgid "Application" +msgstr "Rakendus" + +msgid "A YelpApplication instance that controls this window" +msgstr "Seda akent juhtiv YelpApplication instants" + +msgid "Read Later" msgstr "" -"Proovi oma probleemi kirjeldamiseks või abiteabe otsimiseks kasutada veidi " -"teistsuguseid sõnu." +#. %s will be replaced with the name of a document #, c-format -msgid "Search results for \"%s\"" -msgstr "Otsingu \"%s\" tulemused" +msgid "Bookmarks for %s" +msgstr "Dokumendi „%s” järjehoidjad" -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT -#. #, c-format -msgid "Repeat the search online at %s" -msgstr "Võrgust otsimise kordamine asukohas %s" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -msgid "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" -msgstr "" -"ja:ning:ega:ehk:või:aga:kuid:ent:vaid:et:kui:kuna:sest:kuni:kuigi:ehkki:nagu:" -"saati:elik:justkui:otsekui:mina:ma:meie:me:sina:sa:teie:te:tema:ta:nemad:nad" - -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -msgid "re" -msgstr "eba" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -msgid "ers:er:ing:es:s:'s" -msgstr "" -"am:ard:e:el:gil:gile:i:ik:is:istu:ja:jas:k:kas:ke:kene:kesi:kil:kile:kond:" -"kuti:la:lane:ldane:ldasa:li:lik:line:lt:m:me:mik:mine:misi:mu:nd:ndik:ndus:" -"ne:ng:nik:nna:nu:r:rd:s:si:sk:sti:stik:stikku:stu:tar:ti:ts:tsi:tu:u:ur:us:v:" -"vel:vele:vil:vile" +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "%i vastavus" +msgstr[1] "%i vastavust" -msgid "No Comment" -msgstr "Kommentaarita" +msgid "No matches" +msgstr "Vastavused puuduvad" -#. Much bigger problems -msgid "Search could not be processed" -msgstr "Otsingut pole võimalik töödelda" +msgid "Loading" +msgstr "Laadimine" -msgid "The requested search could not be processed." -msgstr "Nõutud otsingut pole võimalik töödelda." +msgid "_Open Bookmark" +msgstr "_Ava järjehoidja" -msgid "Cannot process the search" -msgstr "Otsingut pole võimalik töödelda" +msgid "Open Bookmark in New _Window" +msgstr "Ava järjehoidja uues _aknas" -msgid "The search processor returned invalid results" -msgstr "Otsingutöötleja tagastas vigase tulemuse" +msgid "_Remove Bookmark" +msgstr "_Eemalda järjehoidja" -#, c-format -msgid "The page %s was not found in the TOC." -msgstr "Lehekülg %s puudub sisukorras." +msgid "Get help with GNOME" +msgstr "Abistab GNOME kasutamisel" -msgid "The requested page was not found in the TOC." -msgstr "Küsitud lehekülge sisukorras ei leitud." +#~ msgid "Re_name" +#~ msgstr "Muuda _nime" -msgid "" -"The TOC file could not be parsed because it is not a well-formed XML " -"document." -msgstr "" -"Sisukorda pole võimalik analüüsida kuna see pole korrektselt vormindatud XML-" -"dokument." +#~ msgid "_Bookmarks:" +#~ msgstr "_Järjehoidjad:" -msgid "Invalid Stylesheet" -msgstr "Vigane laaditabel" +#~ msgid "Add Bookmark" +#~ msgstr "Järjehoidja lisamine" -#, c-format -msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." -msgstr "XSLT-laaditabel „%s” on puudu või on see vigane." +#~ msgid "_Title:" +#~ msgstr "_Pealkiri:" -msgid "Broken Transformation" -msgstr "Katkine teisendus" +#~ msgid "_Location:" +#~ msgstr "_Asukoht:" -msgid "An unknown error occurred while attempting to transform the document." -msgstr "Dokumendi teisendamisel leidis aset tundmatu viga." +#~ msgid "Fonts" +#~ msgstr "Kirjatüübid" -msgid "No href attribute found on yelp:document\n" -msgstr "yelp:document küljest ei leitud rekvisiiti \"href\"\n" +#~ msgid "Preferences" +#~ msgstr "Eelistused" -msgid "Out of memory" -msgstr "Mälu otsas" +#~ msgid "_Browse with caret" +#~ msgstr "Sirvimisel näidatakse _tekstikursorit" -msgid "_File" -msgstr "_Fail" +#~ msgid "_Fixed width:" +#~ msgstr "_Fikseeritud laiusega:" -msgid "_Edit" -msgstr "_Redaktor" +#~ msgid "_Use system fonts" +#~ msgstr "_Kasutatakse süsteemseid kirjatüüpe" -msgid "_Go" -msgstr "_Liikumine" +#~ msgid "_Variable width:" +#~ msgstr "_Muutuva laiusega:" -msgid "_Bookmarks" -msgstr "_Järjehoidjad" +#~ msgid "Font for fixed text" +#~ msgstr "Kirjatüüp fikseeritud laiusega teksti jaoks" -msgid "_Help" -msgstr "A_bi" +#~ msgid "Font for text" +#~ msgstr "Kirjatüüp teksti jaoks" -msgid "_New Window" -msgstr "_Uus aken" +#~ msgid "Font for text with fixed width." +#~ msgstr "Kirjatüüp fikseeritud laiusega teksti jaoks." -msgid "Print This Document ..." -msgstr "Prindi see dokument..." +#~ msgid "Font for text with variable width." +#~ msgstr "Kirjatüüp muutuva laiusega teksti jaoks." -msgid "Print This Page ..." -msgstr "Prindi see lehekülg..." +#~ msgid "Use a keyboard-controllable caret when viewing pages." +#~ msgstr "Lehtede vaatamisel kasuta klaviatuuriga juhitavat tekstikursorit." -msgid "About This Document" -msgstr "Dokumendist" +#~ msgid "Use caret" +#~ msgstr "Kasuta tekstikursorit" -msgid "Open _Location" -msgstr "_Ava asukoht" +#~ msgid "Use system fonts" +#~ msgstr "Süsteemi kirjatüüpide kasutamine" -msgid "_Close Window" -msgstr "_Sulge aken" +#~ msgid "Use the default fonts set for the system." +#~ msgstr "Süsteemsete vaikekirjatüüpide kasutamine." -msgid "_Copy" -msgstr "_Kopeeri" +#~ msgid "File is not a valid .desktop file" +#~ msgstr "Fail pole korrektne .desktop fail" -msgid "_Select All" -msgstr "_Vali kõik" +#~ msgid "Unrecognized desktop file Version '%s'" +#~ msgstr "Töölauafaili tundmatu versioon '%s'" -msgid "_Find..." -msgstr "_Otsing..." +#~ msgid "Starting %s" +#~ msgstr "Käivitamine: %s" -msgid "Find Pre_vious" -msgstr "Otsi _eelmist" +#~ msgid "Application does not accept documents on command line" +#~ msgstr "Rakendus ei aktsepteeri käsurealt antud dokumente" -msgid "Find previous occurrence of the word or phrase" -msgstr "Leia selle sõna või fraasi järgmine esinemine" +#~ msgid "Unrecognized launch option: %d" +#~ msgstr "Tundmatu käivitusvalik: %d" -msgid "Find Ne_xt" -msgstr "Otsi _järgmist" +#~ msgid "Can't pass document URIs to a 'Type=Link' desktop entry" +#~ msgstr "" +#~ "Dokumendi URI-sid pole võimalik 'Liik=Viit' tüüpi töölauakirjetele " +#~ "edastada" -msgid "Find next occurrence of the word or phrase" -msgstr "Leia selle sõna või fraasi eelmine esinemine" +#~ msgid "Not a launchable item" +#~ msgstr "Pole käivitatav kirje" -msgid "_Preferences" -msgstr "_Eelistused" +#~ msgid "Disable connection to session manager" +#~ msgstr "Seansihalduriga ühendumise keelamine" -msgid "_Reload" -msgstr "_Lae uuesti" +#~ msgid "Specify file containing saved configuration" +#~ msgstr "Salvestatud seadistusi sisaldava faili määramine" -msgid "_Back" -msgstr "_Tagasi" +#~ msgid "FILE" +#~ msgstr "FAIL" -msgid "Show previous page in history" -msgstr "Ajaloos eelmise lehe näitamine" +#~ msgid "Specify session management ID" +#~ msgstr "Seansihalduse ID määramine" -msgid "_Forward" -msgstr "_Edasi" +#~ msgid "ID" +#~ msgstr "ID" -msgid "Show next page in history" -msgstr "Ajaloos järgmise lehe näitamine" +#~ msgid "Session management options:" +#~ msgstr "Session management options" -msgid "_Help Topics" -msgstr "_Abiteabe teemad" +#~ msgid "Show session management options" +#~ msgstr "Seansihalduse valikute näitamine" -msgid "Go to the listing of help topics" -msgstr "Liikumine abiteabe teemade loendisse" +#~ msgid "A bookmark titled %s already exists for this page." +#~ msgstr "Järjehoidja pealkirjaga %s on selle lehe jaoks juba olemas." -msgid "_Previous Section" -msgstr "_Eelmine peatükk" +#~ msgid "A bookmark titled <b>%s</b> already exists for this page." +#~ msgstr "Järjehoidja pealkirjaga <b>%s</b> on selle lehe jaoks juba olemas." -msgid "_Next Section" -msgstr "_Järgmine peatükk" +#~ msgid "Help Topics" +#~ msgstr "Abiteabe teemad" -msgid "_Contents" -msgstr "_Sisukord" +#~ msgid "Document Sections" +#~ msgstr "Dokumendi jaotised" -msgid "_Add Bookmark" -msgstr "_Lisa järjehoidja" +#~ msgid "File not found" +#~ msgstr "Faili ei leitud" -msgid "_Edit Bookmarks..." -msgstr "_Järjehoidjate redigeerimine..." +#~ msgid "Could not parse file" +#~ msgstr "Faili pole võimalik analüüsida" -msgid "_Open Link" -msgstr "_Ava viit" +#~ msgid "Could Not Read File" +#~ msgstr "Faili pole võimalik lugeda" -msgid "Open Link in _New Window" -msgstr "Ava viit _uues aknas" +#~ msgid "No information is available about this error." +#~ msgstr "Selle vea kohta puuduvad andmed." -msgid "_Copy Link Address" -msgstr "_Kopeeri viida aadress" +#~ msgid "" +#~ "The file ‘%s’ could not be read and decoded. The file may be compressed " +#~ "in an unsupported format." +#~ msgstr "" +#~ "Faili „%s” ei ole võimalik lugeda ja dekodeerida. Arvatavasti on fail " +#~ "pakitud toetamata vorminguga." -msgid "Help On this application" -msgstr "Selle rakenduse abiteave" +#~ msgid "Use a private session" +#~ msgstr "Uus privaatne seanss" -msgid "_About" -msgstr "_Programmist lähemalt" +#~ msgid "Define which cache directory to use" +#~ msgstr "Kasutatava puhverkataloogi määramine" -msgid "Copy _Email Address" -msgstr "Kopeeri _e-posti aadress" +#~ msgid " GNOME Help Browser" +#~ msgstr " GNOME Abiteabe sirvija" -msgid "Help Browser" -msgstr "Abiteabe sirvija" +#~ msgid "Directory not found" +#~ msgstr "Kataloogi ei leitud" -msgid "Loading..." -msgstr "Laadimine..." +#~ msgid "" +#~ "The file ‘%s’ could not be parsed because it is not a well-formed man " +#~ "page." +#~ msgstr "" +#~ "Faili „%s” pole võimalik analüüsida kuna see pole käsiraamatu korrektselt " +#~ "vormindatud leht (man page)." -msgid "Unknown Page" -msgstr "Tundmatu lehekülg" +#~ msgid "Preparing to print" +#~ msgstr "Printimise ettevalmistamine" -#, c-format -msgid "The requested URI \"%s\" is invalid" -msgstr "Küsitud URI \"%s\" on vigane" +#~ msgid "Printing is not supported on this printer" +#~ msgstr "Selle printeriga ei ole printimine toetatud" -msgid "Unable to load page" -msgstr "Lehekülge pole võimalik laadida" +#~ msgid "Printer %s does not support postscript printing." +#~ msgstr "Printer %s ei toeta postscript-printimist." -msgid "_Search:" -msgstr "_Otsing:" +#~ msgid "Waiting to print" +#~ msgstr "Printimise ootamine" -msgid "Search for other documentation" -msgstr "Otsi muud dokumentatsiooni" +#~ msgid "An error occurred while printing" +#~ msgstr "Printimisel tekkis viga" -msgid "Cannot create window" -msgstr "Akent pole võimalik luua" +#~ msgid "It was not possible to print your document: %s" +#~ msgstr "Sinu dokumenti ei olnud võimalik printida: %s" -msgid "Cannot create search component" -msgstr "Otsingukomponenti pole võimalik luua" +#~ msgid "the GNOME Support Forums" +#~ msgstr "GNOME kasutajatoe foorumid" -msgid "Fin_d:" -msgstr "_Otsing:" +#~ msgid "No results for \"%s\"" +#~ msgstr "Tulemusi otsingule \"%s\" ei leitud" -msgid "Find _Previous" -msgstr "Otsi _eelmist" +#~ msgid "" +#~ "Try using different words to describe the problem you're having or the " +#~ "topic you want help with." +#~ msgstr "" +#~ "Proovi oma probleemi kirjeldamiseks või abiteabe otsimiseks kasutada " +#~ "veidi teistsuguseid sõnu." -msgid "Find _Next" -msgstr "Otsi _järgmist" +#~ msgid "Search results for \"%s\"" +#~ msgstr "Otsingu \"%s\" tulemused" -msgid "Phrase not found" -msgstr "Fraasi ei leitud" +#~ msgid "Repeat the search online at %s" +#~ msgstr "Võrgust otsimise kordamine asukohas %s" -#, c-format -msgid "" -"The file ‘%s’ could not be read. This file might be missing, or you might " -"not have permissions to read it." -msgstr "" -"Faili „%s” pole võimalik lugeda. Seda kas pole olemas või pole sul selle " -"lugemiseks piisavalt õiguseid." +#~ msgid "" +#~ "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:" +#~ "doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:" +#~ "when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:" +#~ "this:to:what:where:who:will:with:won't:wont:why:work:working:works" +#~ msgstr "" +#~ "ja:ning:ega:ehk:või:aga:kuid:ent:vaid:et:kui:kuna:sest:kuni:kuigi:ehkki:" +#~ "nagu:saati:elik:justkui:otsekui:mina:ma:meie:me:sina:sa:teie:te:tema:ta:" +#~ "nemad:nad" -#. Note to translators: put here your name (and address) so it -#. * will show up in the "about" box -msgid "translator-credits" -msgstr "" -"Tõivo Leedjärv <toivo@linux.ee>, 2002-2004.\n" -"Allan Sims <allsi@eau.ee>, 2003.\n" -"Priit Laes <amd@store20.com>, 2005, 2006.\n" -"Ivar Smolin <okul@linux.ee>, 2005-2009." +#~ msgid "re" +#~ msgstr "eba" -msgid "Yelp" -msgstr "Yelp" +#~ msgid "ers:er:ing:es:s:'s" +#~ msgstr "" +#~ "am:ard:e:el:gil:gile:i:ik:is:istu:ja:jas:k:kas:ke:kene:kesi:kil:kile:kond:" +#~ "kuti:la:lane:ldane:ldasa:li:lik:line:lt:m:me:mik:mine:misi:mu:nd:ndik:" +#~ "ndus:ne:ng:nik:nna:nu:r:rd:s:si:sk:sti:stik:stikku:stu:tar:ti:ts:tsi:tu:u:" +#~ "ur:us:v:vel:vele:vil:vile" -msgid "A documentation browser and viewer for the Gnome Desktop." -msgstr "Dokumentatsioonisirvija Gnome töölaua jaoks." +#~ msgid "No Comment" +#~ msgstr "Kommentaarita" -msgid "Get help with GNOME" -msgstr "Abistab GNOME kasutamisel" +#~ msgid "Search could not be processed" +#~ msgstr "Otsingut pole võimalik töödelda" + +#~ msgid "The requested search could not be processed." +#~ msgstr "Nõutud otsingut pole võimalik töödelda." + +#~ msgid "Cannot process the search" +#~ msgstr "Otsingut pole võimalik töödelda" + +#~ msgid "The search processor returned invalid results" +#~ msgstr "Otsingutöötleja tagastas vigase tulemuse" + +#~ msgid "The page %s was not found in the TOC." +#~ msgstr "Lehekülg %s puudub sisukorras." + +#~ msgid "The requested page was not found in the TOC." +#~ msgstr "Küsitud lehekülge sisukorras ei leitud." + +#~ msgid "" +#~ "The TOC file could not be parsed because it is not a well-formed XML " +#~ "document." +#~ msgstr "" +#~ "Sisukorda pole võimalik analüüsida kuna see pole korrektselt vormindatud " +#~ "XML-dokument." + +#~ msgid "Broken Transformation" +#~ msgstr "Katkine teisendus" + +#~ msgid "" +#~ "An unknown error occurred while attempting to transform the document." +#~ msgstr "Dokumendi teisendamisel leidis aset tundmatu viga." + +#~ msgid "_File" +#~ msgstr "_Fail" + +#~ msgid "_Edit" +#~ msgstr "_Redaktor" + +#~ msgid "_Help" +#~ msgstr "A_bi" + +#~ msgid "Print This Document ..." +#~ msgstr "Prindi see dokument..." + +#~ msgid "About This Document" +#~ msgstr "Dokumendist" + +#~ msgid "Open _Location" +#~ msgstr "_Ava asukoht" + +#~ msgid "_Close Window" +#~ msgstr "_Sulge aken" + +#~ msgid "_Select All" +#~ msgstr "_Vali kõik" + +#~ msgid "_Find..." +#~ msgstr "_Otsing..." + +#~ msgid "Find Pre_vious" +#~ msgstr "Otsi _eelmist" + +#~ msgid "Find previous occurrence of the word or phrase" +#~ msgstr "Leia selle sõna või fraasi järgmine esinemine" + +#~ msgid "Find Ne_xt" +#~ msgstr "Otsi _järgmist" + +#~ msgid "Find next occurrence of the word or phrase" +#~ msgstr "Leia selle sõna või fraasi eelmine esinemine" + +#~ msgid "_Preferences" +#~ msgstr "_Eelistused" + +#~ msgid "_Reload" +#~ msgstr "_Lae uuesti" + +#~ msgid "Show previous page in history" +#~ msgstr "Ajaloos eelmise lehe näitamine" + +#~ msgid "Show next page in history" +#~ msgstr "Ajaloos järgmise lehe näitamine" + +#~ msgid "_Help Topics" +#~ msgstr "_Abiteabe teemad" + +#~ msgid "Go to the listing of help topics" +#~ msgstr "Liikumine abiteabe teemade loendisse" + +#~ msgid "_Contents" +#~ msgstr "_Sisukord" + +#~ msgid "_Copy Link Address" +#~ msgstr "_Kopeeri viida aadress" + +#~ msgid "Help On this application" +#~ msgstr "Selle rakenduse abiteave" + +#~ msgid "_About" +#~ msgstr "_Programmist lähemalt" + +#~ msgid "Copy _Email Address" +#~ msgstr "Kopeeri _e-posti aadress" + +#~ msgid "Help Browser" +#~ msgstr "Abiteabe sirvija" + +#~ msgid "Unknown Page" +#~ msgstr "Tundmatu lehekülg" + +#~ msgid "The requested URI \"%s\" is invalid" +#~ msgstr "Küsitud URI \"%s\" on vigane" + +#~ msgid "Unable to load page" +#~ msgstr "Lehekülge pole võimalik laadida" + +#~ msgid "Search for other documentation" +#~ msgstr "Otsi muud dokumentatsiooni" + +#~ msgid "Cannot create search component" +#~ msgstr "Otsingukomponenti pole võimalik luua" + +#~ msgid "Fin_d:" +#~ msgstr "_Otsing:" + +#~ msgid "Find _Previous" +#~ msgstr "Otsi _eelmist" + +#~ msgid "Find _Next" +#~ msgstr "Otsi _järgmist" + +#~ msgid "Phrase not found" +#~ msgstr "Fraasi ei leitud" + +#~ msgid "" +#~ "The file ‘%s’ could not be read. This file might be missing, or you " +#~ "might not have permissions to read it." +#~ msgstr "" +#~ "Faili „%s” pole võimalik lugeda. Seda kas pole olemas või pole sul selle " +#~ "lugemiseks piisavalt õiguseid." + +#~ msgid "translator-credits" +#~ msgstr "" +#~ "Tõivo Leedjärv <toivo@linux.ee>, 2002–2004.\n" +#~ "Allan Sims <allsi@eau.ee>, 2003.\n" +#~ "Priit Laes <amd@store20.com>, 2005, 2006.\n" +#~ "Ivar Smolin <okul@linux.ee>, 2005–2010." + +#~ msgid "A documentation browser and viewer for the Gnome Desktop." +#~ msgstr "Dokumentatsioonisirvija Gnome töölaua jaoks." @@ -20,15 +20,15 @@ msgid "" msgstr "" "Project-Id-Version: yelp.master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-04 22:49+0200\n" -"PO-Revision-Date: 2010-05-04 22:49+0200\n" +"POT-Creation-Date: 2010-06-03 23:50+0200\n" +"PO-Revision-Date: 2010-06-03 23:50+0200\n" "Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n" -"Language-Team: Galician <gnome@g11n.net>\n" +"Language-Team: Galician <gnome@g11.net>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: gl\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\\\n" "X-Generator: KBabel 1.11.4\n" #: ../data/info.xml.in.h:1 @@ -882,12 +882,12 @@ msgid "Word Processors" msgstr "Procesadores de texto" #: ../libyelp/yelp-bz2-decompressor.c:146 -#: ../libyelp/yelp-lzma-decompressor.c:147 +#: ../libyelp/yelp-lzma-decompressor.c:155 msgid "Invalid compressed data" msgstr "Datos comprimidos non válidos" #: ../libyelp/yelp-bz2-decompressor.c:152 -#: ../libyelp/yelp-lzma-decompressor.c:153 +#: ../libyelp/yelp-lzma-decompressor.c:161 msgid "Not enough memory" msgstr "Non hai suficiente memoria" @@ -925,11 +925,11 @@ msgid "" msgstr "" "Non foi posíbel o ficheiro ‘%s’ porque non é un documento XML ben formado." -#: ../libyelp/yelp-docbook-document.c:720 +#: ../libyelp/yelp-docbook-document.c:740 msgid "Unknown" msgstr "Descoñecido" -#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 #, c-format msgid "The requested page was not found in the document ‘%s’." msgstr "Non se encontrou a páxina solicitada no documento «%s»." @@ -947,44 +947,35 @@ msgstr "" "Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de " "información ben elaborada." -#: ../libyelp/yelp-io-channel.c:125 -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." -msgstr "" -"Non foi posíbel ler nin descodificar o ficheiro '%s'. O ficheiro pode estar " -"comprimido nun formato non soportado." - -#: ../libyelp/yelp-location-entry.c:251 +#: ../libyelp/yelp-location-entry.c:279 msgid "Description Column" msgstr "Columna de descrición" -#: ../libyelp/yelp-location-entry.c:252 +#: ../libyelp/yelp-location-entry.c:280 msgid "A column in the model to get descriptions from" msgstr "Unha columna no modelo desde onde obter as descricións" -#: ../libyelp/yelp-location-entry.c:267 +#: ../libyelp/yelp-location-entry.c:295 msgid "Icon Column" msgstr "Columna de icona" -#: ../libyelp/yelp-location-entry.c:268 +#: ../libyelp/yelp-location-entry.c:296 msgid "A column in the model to get icon names from" msgstr "Unha columna no modelo desde onde obter os nomes de icona" -#: ../libyelp/yelp-location-entry.c:283 +#: ../libyelp/yelp-location-entry.c:311 msgid "Flags Column" msgstr "Columna de opcións" -#: ../libyelp/yelp-location-entry.c:284 +#: ../libyelp/yelp-location-entry.c:312 msgid "A column in the model with YelpLocationEntryFlags flags" msgstr "Unha columna no modelo con opcións YelpLocationEntryFlags" -#: ../libyelp/yelp-location-entry.c:300 +#: ../libyelp/yelp-location-entry.c:328 msgid "Enable Search" msgstr "Activar a busca" -#: ../libyelp/yelp-location-entry.c:301 +#: ../libyelp/yelp-location-entry.c:329 msgid "Whether the location entry can be used as a search field" msgstr "" "Indica se a entrada de localización pode ser usada como un campo de busca" @@ -1055,140 +1046,187 @@ msgstr "Non se localizou o atributo href en yelp:document\n" msgid "Out of memory" msgstr "Sen memoria" -#: ../libyelp/yelp-view.c:92 +#: ../libyelp/yelp-view.c:111 +msgid "_Print..." +msgstr "_Imprimir..." + +#: ../libyelp/yelp-view.c:116 msgid "_Back" msgstr "_Atrás" -#: ../libyelp/yelp-view.c:97 +#: ../libyelp/yelp-view.c:121 msgid "_Forward" msgstr "_Adiante" -#: ../libyelp/yelp-view.c:102 +#: ../libyelp/yelp-view.c:126 msgid "_Previous Page" msgstr "Páxina _anterior" -#: ../libyelp/yelp-view.c:107 +#: ../libyelp/yelp-view.c:131 msgid "_Next Page" msgstr "Páxina _seguinte" -#: ../libyelp/yelp-view.c:310 +#: ../libyelp/yelp-view.c:376 msgid "Yelp URI" msgstr "URI do Yelp" -#: ../libyelp/yelp-view.c:311 +#: ../libyelp/yelp-view.c:377 msgid "A YelpUri with the current location" msgstr "Unha YelpURI coa localización actual" -#: ../libyelp/yelp-view.c:319 +#: ../libyelp/yelp-view.c:385 msgid "Loading State" msgstr "Estado da carga" -#: ../libyelp/yelp-view.c:320 +#: ../libyelp/yelp-view.c:386 msgid "The loading state of the view" msgstr "O estado da carga da visualización" -#: ../libyelp/yelp-view.c:329 +#: ../libyelp/yelp-view.c:395 msgid "Page ID" msgstr "ID da páxina" -#: ../libyelp/yelp-view.c:330 -msgid "The ID of the root page of the page being viewew" +#: ../libyelp/yelp-view.c:396 +msgid "The ID of the root page of the page being viewed" msgstr "O ID da páxina raíz da páxina que está vendo" -#: ../libyelp/yelp-view.c:338 +#: ../libyelp/yelp-view.c:404 msgid "Root Title" msgstr "Título raíz" -#: ../libyelp/yelp-view.c:339 -msgid "The title of the root page of the page being viewew" -msgstr "O título da páxina raíz da páxina que está vendo" +#: ../libyelp/yelp-view.c:405 +msgid "The title of the root page of the page being viewed" +msgstr "O título da páxina raíz da páxina que se está vendo" -#: ../libyelp/yelp-view.c:347 +#: ../libyelp/yelp-view.c:413 msgid "Page Title" msgstr "Título de páxina" -#: ../libyelp/yelp-view.c:348 +#: ../libyelp/yelp-view.c:414 msgid "The title of the page being viewed" msgstr "O título da páxina que está vendo" -#: ../libyelp/yelp-view.c:356 +#: ../libyelp/yelp-view.c:422 msgid "Page Description" msgstr "Descrición da páxina" -#: ../libyelp/yelp-view.c:357 +#: ../libyelp/yelp-view.c:423 msgid "The description of the page being viewed" msgstr "A descrición da páxina que está vendo" -#: ../libyelp/yelp-view.c:365 +#: ../libyelp/yelp-view.c:431 msgid "Page Icon" msgstr "Icona da páxina" -#: ../libyelp/yelp-view.c:366 +#: ../libyelp/yelp-view.c:432 msgid "The icon of the page being viewed" msgstr "A icona da páxina que está vendo" -#: ../libyelp/yelp-view.c:683 +#: ../libyelp/yelp-view.c:780 +msgid "Save Image" +msgstr "Gardar a imaxe" + +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. +#: ../libyelp/yelp-view.c:873 +#, c-format +msgid "Send email to %s" +msgstr "Enviar correo electrónico a %s" + +#: ../libyelp/yelp-view.c:883 +msgid "_Open Link" +msgstr "_Abrir a ligazón" + +#: ../libyelp/yelp-view.c:888 +msgid "Open Link in New _Window" +msgstr "Abrir ligazón nunha xanela _nova" + +#: ../libyelp/yelp-view.c:930 +msgid "_Save Image As..." +msgstr "_Gardar imaxe como..." + +#: ../libyelp/yelp-view.c:932 +msgid "_Save Video As..." +msgstr "_Gardar vídeo como..." + +#: ../libyelp/yelp-view.c:939 +msgid "S_end Image To..." +msgstr "G_ardar imaxe en..." + +#: ../libyelp/yelp-view.c:941 +msgid "S_end Video To..." +msgstr "_Enviar vídeo a..." + +#: ../libyelp/yelp-view.c:952 +msgid "_Copy Text" +msgstr "_Copiar texto" + +#: ../libyelp/yelp-view.c:1123 #, c-format msgid "Could not load a document for ‘%s’" msgstr "Non foi posíbel cargar un documento para «%s»" -#: ../libyelp/yelp-view.c:689 +#: ../libyelp/yelp-view.c:1129 #, c-format msgid "Could not load a document" msgstr "Non foi posíbel cargar un documento" -#: ../libyelp/yelp-view.c:756 +#: ../libyelp/yelp-view.c:1196 msgid "Not Found" msgstr "Non se encontrou" -#: ../libyelp/yelp-view.c:759 +#: ../libyelp/yelp-view.c:1199 msgid "Cannot Read" msgstr "Non é posíbel ler" -#: ../libyelp/yelp-view.c:765 +#: ../libyelp/yelp-view.c:1205 msgid "Unknown Error" msgstr "Erro descoñecido" -#: ../libyelp/yelp-view.c:855 +#: ../libyelp/yelp-view.c:1296 #, c-format msgid "The URI ‘%s’ does point to a valid page." msgstr "O URI «%s» non apunta a unha páxina válida." -#: ../libyelp/yelp-view.c:863 +#: ../libyelp/yelp-view.c:1304 #, c-format msgid "The URI ‘%s’ could not be parsed." msgstr "Non foi posíbel analizar o URI «%s»." -#: ../src/yelp-application.c:55 +#: ../src/yelp-application.c:56 msgid "Turn on editor mode" msgstr "Activar o modo editor" -#: ../src/yelp-application.c:106 +#: ../src/yelp-application.c:107 msgid "_Larger Text" msgstr "Texto máis _grande" -#: ../src/yelp-application.c:108 +#: ../src/yelp-application.c:109 msgid "Increase the size of the text" msgstr "Aumentar o tamaño do texto" -#: ../src/yelp-application.c:111 +#: ../src/yelp-application.c:112 msgid "_Smaller Text" msgstr "Texto máis peque_no" -#: ../src/yelp-application.c:113 +#: ../src/yelp-application.c:114 msgid "Descrease the size of the text" msgstr "Reducir o tamaño do texto" -#: ../src/yelp-application.c:221 +#: ../src/yelp-application.c:230 msgid "Show Text _Cursor" msgstr "Mostrar o _cursor de texto" -#: ../src/yelp-application.c:297 ../src/yelp-window.c:1041 +#: ../src/yelp-application.c:306 ../src/yelp-window.c:1841 #: ../yelp.desktop.in.in.h:2 msgid "Help" msgstr "Axuda" -#: ../src/yelp-application.c:547 +#: ../src/yelp-application.c:572 msgid "" "You do not have PackageKit installed. Package installation links require " "PackageKit." @@ -1196,62 +1234,109 @@ msgstr "" "Non ten PackageKit instalado. As ligazóns de instalación do paquete requiren " "PackageKit." -#: ../src/yelp-window.c:207 +#: ../src/yelp-window.c:298 msgid "_Page" msgstr "_Páxina" -#: ../src/yelp-window.c:208 +#: ../src/yelp-window.c:299 msgid "_View" msgstr "_Ver" -#: ../src/yelp-window.c:209 +#: ../src/yelp-window.c:300 msgid "_Go" msgstr "_Ir" -#: ../src/yelp-window.c:210 +#: ../src/yelp-window.c:301 msgid "_Bookmarks" msgstr "_Marcadores" -#: ../src/yelp-window.c:213 +#: ../src/yelp-window.c:304 msgid "_New Window" msgstr "Xanela _nova" -#: ../src/yelp-window.c:218 +#: ../src/yelp-window.c:309 msgid "_Close" msgstr "_Pechar" -#: ../src/yelp-window.c:223 +#: ../src/yelp-window.c:314 msgid "_Add Bookmark" msgstr "_Engadir marcador" -#: ../src/yelp-window.c:228 -msgid "Search" -msgstr "Buscar" +#: ../src/yelp-window.c:319 +msgid "_Edit Bookmarks" +msgstr "_Editar marcadores" + +#: ../src/yelp-window.c:324 +msgid "Find in Page..." +msgstr "Buscar na páxina…" + +#: ../src/yelp-window.c:329 ../src/yelp-window.c:569 +msgid "Search..." +msgstr "Buscar..." -#: ../src/yelp-window.c:233 +#: ../src/yelp-window.c:334 msgid "Open Location" msgstr "Abrir localización" -#: ../src/yelp-window.c:260 +#: ../src/yelp-window.c:363 msgid "Application" msgstr "Aplicativos" -#: ../src/yelp-window.c:261 +#: ../src/yelp-window.c:364 msgid "A YelpApplication instance that controls this window" msgstr "Unha instancia de YelpApplications que controla esta xanela" -#: ../src/yelp-window.c:426 -msgid "Search..." -msgstr "Buscar..." +#: ../src/yelp-window.c:641 +msgid "Read Later" +msgstr "Ler máis tarde" + +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:829 +#, c-format +msgid "Bookmarks for %s" +msgstr "Marcadores para %s" + +#: ../src/yelp-window.c:1457 +#, c-format +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "%i coincidencia" +msgstr[1] "%i coincidencias" -#: ../src/yelp-window.c:985 +#: ../src/yelp-window.c:1482 +msgid "No matches" +msgstr "Sen coincidencias" + +#: ../src/yelp-window.c:1801 msgid "Loading" msgstr "Cargando" +#: ../src/yelp-window.c:2034 +msgid "_Open Bookmark" +msgstr "_Abrir marcador" + +#: ../src/yelp-window.c:2040 +msgid "Open Bookmark in New _Window" +msgstr "Abrir marcador nunha _xanela nova" + +#: ../src/yelp-window.c:2049 +msgid "_Remove Bookmark" +msgstr "_Eliminar marcador" + #: ../yelp.desktop.in.in.h:1 msgid "Get help with GNOME" msgstr "Obter axuda co Gnome" +#~ msgid "" +#~ "The file ‘%s’ could not be read and decoded. The file may be compressed " +#~ "in an unsupported format." +#~ msgstr "" +#~ "Non foi posíbel ler nin descodificar o ficheiro '%s'. O ficheiro pode " +#~ "estar comprimido nun formato non soportado." + +#~ msgid "Search" +#~ msgstr "Buscar" + #~ msgid "File is not a valid .desktop file" #~ msgstr "O ficheiro non é un ficheiro .desktop válido" @@ -1333,9 +1418,6 @@ msgstr "Obter axuda co Gnome" #~ "Non foi posíbel analizar o ficheiro ‘%s’ porque non é unha páxina de " #~ "manual ben formada." -#~ msgid "Print" -#~ msgstr "Imprimir" - #~ msgid "Preparing to print" #~ msgstr "Preparándose para imprimir" @@ -1419,9 +1501,6 @@ msgstr "Obter axuda co Gnome" #~ msgstr "" #~ "Non se puido analizar o TOC porque non é un documento XML ben formado." -#~ msgid "Bookmarks" -#~ msgstr "Marcadores" - #~ msgid "Re_name" #~ msgstr "Re_nomear" @@ -1479,15 +1558,6 @@ msgstr "Obter axuda co Gnome" #~ msgid "Use the default fonts set for the system." #~ msgstr "Usar o conxunto de tipos de letra predeterminado do sistema." -#~ msgid "Open Bookmark in New Window" -#~ msgstr "Abrir marcador nunha xanela nova" - -#~ msgid "Rename Bookmark" -#~ msgstr "Renomear marcador" - -#~ msgid "Remove Bookmark" -#~ msgstr "Eliminar marcador" - #~ msgid "A bookmark titled %s already exists for this page." #~ msgstr "Xa existe un marcador titulado %s para esta páxina." @@ -1522,9 +1592,6 @@ msgstr "Obter axuda co Gnome" #~ msgid "Print This Document ..." #~ msgstr "Imprimir este documento…" -#~ msgid "Print This Page ..." -#~ msgstr "Imprimir esta páxina…" - #~ msgid "About This Document" #~ msgstr "Sobre este documento" @@ -1534,9 +1601,6 @@ msgstr "Obter axuda co Gnome" #~ msgid "_Close Window" #~ msgstr "_Pechar a xanela" -#~ msgid "_Copy" -#~ msgstr "_Copiar" - #~ msgid "_Select All" #~ msgstr "_Seleccionar todo" @@ -1576,15 +1640,6 @@ msgstr "Obter axuda co Gnome" #~ msgid "_Contents" #~ msgstr "_Contidos" -#~ msgid "_Edit Bookmarks..." -#~ msgstr "_Editar marcadores..." - -#~ msgid "_Open Link" -#~ msgstr "_Abrir a ligazón" - -#~ msgid "Open Link in _New Window" -#~ msgstr "Abrir unha ligazón nunha xanela _nova" - #~ msgid "_Copy Link Address" #~ msgstr "_Copiar o enderezo da ligazón" @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: yelp.HEAD.he\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n" -"POT-Creation-Date: 2009-06-16 19:43+0000\n" -"PO-Revision-Date: 2009-07-04 21:01+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-06-10 12:29+0300\n" +"PO-Revision-Date: 2010-06-10 12:32+0200\n" "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Language-Team: Hebrew <he@li.org>\n" "MIME-Version: 1.0\n" @@ -27,7 +27,7 @@ msgstr "דפי מידע של GNU" #: ../data/info.xml.in.h:2 msgid "Traditional command line help (info)" -msgstr "עזרת שורת פקודה מסורתית (info)" +msgstr "עזרה מסורתית משורת פקודה (info)" #: ../data/man.xml.in.h:1 msgid "Applications" @@ -45,8 +45,7 @@ msgstr "קבצי הגדרות" msgid "Curses Functions" msgstr "פונקציות Curses" -#: ../data/man.xml.in.h:5 -#: ../data/toc.xml.in.h:35 +#: ../data/man.xml.in.h:5 ../data/toc.xml.in.h:35 msgid "Development" msgstr "פיתוח" @@ -54,8 +53,7 @@ msgstr "פיתוח" msgid "FORTRAN Functions" msgstr "פונקציות FORTRAN" -#: ../data/man.xml.in.h:7 -#: ../data/toc.xml.in.h:56 +#: ../data/man.xml.in.h:7 ../data/toc.xml.in.h:56 msgid "Games" msgstr "משחקים" @@ -296,7 +294,6 @@ msgid "3D Graphics" msgstr "גרפיקה תלת ממדית" #: ../data/toc.xml.in.h:3 -#: ../data/ui/yelp-preferences.ui.h:1 msgid "Accessibility" msgstr "נגישות" @@ -582,7 +579,9 @@ msgid "Kids Games" msgstr "משחקי ילדים" #: ../data/toc.xml.in.h:77 -msgid "Learn more about making your system more accessible for a range of disabilities" +msgid "" +"Learn more about making your system more accessible for a range of " +"disabilities" msgstr "למד עוד אודות הפיכת המערכת שלך לנגישה יותר עבור שלל לקויות" #: ../data/toc.xml.in.h:78 @@ -687,8 +686,6 @@ msgid "Presentation Tools" msgstr "כלי מצגת" #: ../data/toc.xml.in.h:104 -#: ../src/yelp-print.c:337 -#: ../src/yelp-print.c:364 msgid "Printing" msgstr "מדפיס" @@ -755,7 +752,8 @@ msgstr "הגדרות" #: ../data/toc.xml.in.h:121 msgid "Settings users can manipulate to make their environment more pleasant" -msgstr "הגדרות שמשתמשים יכולים לשנות כדי להפוך את סביבת העבודה שלהם לנעימה יותר" +msgstr "" +"הגדרות שמשתמשים יכולים לשנות כדי להפוך את סביבת העבודה שלהם לנעימה יותר" #: ../data/toc.xml.in.h:122 msgid "Simulation Games" @@ -870,657 +868,564 @@ msgstr "ברוכים הבאים לדפדפן העזרה של GNOME" msgid "Word Processors" msgstr "מעבדי תמלילים" -#: ../data/ui/yelp-bookmarks.ui.h:1 -msgid "Bookmarks" -msgstr "סימניות" +#: ../libyelp/yelp-bz2-decompressor.c:146 +#: ../libyelp/yelp-lzma-decompressor.c:155 +msgid "Invalid compressed data" +msgstr "נתונים דחוסים בלתי תקינים" -#: ../data/ui/yelp-bookmarks.ui.h:2 -msgid "Re_name" -msgstr "_שנה שם" +#: ../libyelp/yelp-bz2-decompressor.c:152 +#: ../libyelp/yelp-lzma-decompressor.c:161 +msgid "Not enough memory" +msgstr "אין מספיק זיכרון" -#: ../data/ui/yelp-bookmarks.ui.h:3 -msgid "_Bookmarks:" -msgstr "_סימניות:" +#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233 +#: ../libyelp/yelp-mallard-document.c:254 +#: ../libyelp/yelp-mallard-document.c:397 ../libyelp/yelp-man-document.c:269 +#, c-format +msgid "The page ‘%s’ was not found in the document ‘%s’." +msgstr "העמוד '%s' לא נמצא במסמך '%s'." -#: ../data/ui/yelp-bookmarks-add.ui.h:1 -msgid "Add Bookmark" -msgstr "הוסף לסימניות" +#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 +#: ../libyelp/yelp-man-document.c:403 +#, c-format +msgid "The file does not exist." +msgstr "הקובץ לא קיים." -#: ../data/ui/yelp-bookmarks-add.ui.h:2 -msgid "_Title:" -msgstr "_כותרת:" +#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 +#: ../libyelp/yelp-man-document.c:413 +#, c-format +msgid "The file ‘%s’ does not exist." +msgstr "הקובץ '%s' לא קיים" -#: ../data/ui/yelp-open-location.ui.h:1 -msgid "Open Location" -msgstr "פתח מיקום" +#: ../libyelp/yelp-docbook-document.c:323 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed XML " +"document." +msgstr "הקובץ '%s' לא ניתן לעיבוד. מכיון שאינו קובץ XML תקני." -#: ../data/ui/yelp-open-location.ui.h:2 -msgid "_Location:" -msgstr "_מיקום:" +#: ../libyelp/yelp-docbook-document.c:336 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because one or more of its included files " +"is not a well-formed XML document." +msgstr "" +"הקובץ '%s' לא ניתן לעיבוד. מכיון שאחד או יותר מהקבצים שהוא מכיל אינם קובצי " +"XML תקניים." -#: ../data/ui/yelp-preferences.ui.h:2 -msgid "Fonts" -msgstr "גופנים" +#: ../libyelp/yelp-docbook-document.c:740 +msgid "Unknown" +msgstr "לא ידוע" -#: ../data/ui/yelp-preferences.ui.h:3 -msgid "Preferences" -msgstr "העדפות" +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-man-document.c:345 +#, c-format +msgid "The requested page was not found in the document ‘%s’." +msgstr "העמוד המבוקש לא נמצא במסמך '%s'." -#: ../data/ui/yelp-preferences.ui.h:4 -msgid "_Browse with caret" -msgstr "_דפדף בעזרת סמן" +#: ../libyelp/yelp-error.c:33 +#, c-format +msgid "An unknown error occurred." +msgstr "ארעה שגיאה בלתי ידועה." -#: ../data/ui/yelp-preferences.ui.h:5 -msgid "_Fixed width:" -msgstr "רוחב _קבוע:" +#: ../libyelp/yelp-info-document.c:391 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed info page." +msgstr "הקובץ ’%s’ לא ניתן לפירוק מכיון שאינו דף מידע תקין." -#: ../data/ui/yelp-preferences.ui.h:6 -msgid "_Use system fonts" -msgstr "_השתמש בגופני מערכת" +#: ../libyelp/yelp-location-entry.c:279 +msgid "Description Column" +msgstr "עמודת תיאור" -#: ../data/ui/yelp-preferences.ui.h:7 -msgid "_Variable width:" -msgstr "רוחב גופן משתנה:" +#: ../libyelp/yelp-location-entry.c:280 +msgid "A column in the model to get descriptions from" +msgstr "עמודה בדגם ממנה ניתן לקבל את התיאורים" -#: ../data/yelp.schemas.in.h:1 -msgid "Font for fixed text" -msgstr "Font for fixed text" +#: ../libyelp/yelp-location-entry.c:295 +msgid "Icon Column" +msgstr "עמודת סמלים" -#: ../data/yelp.schemas.in.h:2 -msgid "Font for text" -msgstr "Font for text" +#: ../libyelp/yelp-location-entry.c:296 +msgid "A column in the model to get icon names from" +msgstr "עמודה בדגם ממנה ניתן לקבל את שמות הסמלים" -#: ../data/yelp.schemas.in.h:3 -msgid "Font for text with fixed width." -msgstr "Font for text with fixed width." +#: ../libyelp/yelp-location-entry.c:311 +msgid "Flags Column" +msgstr "עמודת דגלונים" -#: ../data/yelp.schemas.in.h:4 -msgid "Font for text with variable width." -msgstr "Font for text with variable width." +#: ../libyelp/yelp-location-entry.c:312 +msgid "A column in the model with YelpLocationEntryFlags flags" +msgstr "עמודה בדגם עם דגלוני YelpLocationEntryFlags" -#: ../data/yelp.schemas.in.h:5 -msgid "Use a keyboard-controllable caret when viewing pages." -msgstr "Use a keyboard-controllable caret when viewing pages." +#: ../libyelp/yelp-location-entry.c:328 +msgid "Enable Search" +msgstr "הפעלת חיפוש" -#: ../data/yelp.schemas.in.h:6 -msgid "Use caret" -msgstr "Use caret" +#: ../libyelp/yelp-location-entry.c:329 +msgid "Whether the location entry can be used as a search field" +msgstr "האם רשומת המיקום יכולה לשמש כשדה חיפוש" -#: ../data/yelp.schemas.in.h:7 -msgid "Use system fonts" -msgstr "Use system fonts" +#: ../libyelp/yelp-mallard-document.c:296 +#, c-format +msgid "The directory ‘%s’ does not exist." +msgstr "התיקייה ‘%s’ לא קיימת." -#: ../data/yelp.schemas.in.h:8 -msgid "Use the default fonts set for the system." -msgstr "Use the default fonts set for the system." +#: ../libyelp/yelp-man-document.c:444 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed man page." +msgstr "לא ניתן לנתח את הקובץ '%s' כיוון שזהו קובץ man שלא אורגן כראוי." -#: ../src/yelp-bookmarks.c:149 -msgid "Open Bookmark in New Window" -msgstr "פתח סימניות בחלון חדש" +#: ../libyelp/yelp-settings.c:146 +msgid "GtkSettings" +msgstr "GtkSettings" -#: ../src/yelp-bookmarks.c:153 -msgid "Rename Bookmark" -msgstr "שנה שם לסימנייה" +#: ../libyelp/yelp-settings.c:147 +msgid "A GtkSettings object to get settings from" +msgstr "עצם מסוג GtkSettings ממנו יש לקבל הגדרות" -#: ../src/yelp-bookmarks.c:157 -msgid "Remove Bookmark" -msgstr "הסר סימנייה" +#: ../libyelp/yelp-settings.c:155 +msgid "GtkIconTheme" +msgstr "GtkIconTheme" -#: ../src/yelp-bookmarks.c:315 -#, c-format -msgid "A bookmark titled %s already exists for this page." -msgstr "סימנייה בשם %s כבר קיימת לדף זה." +#: ../libyelp/yelp-settings.c:156 +msgid "A GtkIconTheme object to get icons from" +msgstr "עצם GtkIconTheme לקבל סמלים ממנו" -#: ../src/yelp-bookmarks.c:391 -#, c-format -msgid "A bookmark titled <b>%s</b> already exists for this page." -msgstr "סימנייה בשם <b>%s</b> כבר נמצאת לדף זה." - -#: ../src/yelp-bookmarks.c:404 -msgid "Help Topics" -msgstr "נושאי עזרה" - -#: ../src/yelp-bookmarks.c:419 -msgid "Document Sections" -msgstr "אזורי מסמך" - -#: ../src/yelp-db-print.c:258 -#: ../src/yelp-db-print.c:350 -#: ../src/yelp-docbook.c:275 -#: ../src/yelp-docbook.c:367 -#: ../src/yelp-info.c:243 -#: ../src/yelp-info.c:338 -#: ../src/yelp-mallard.c:280 -#: ../src/yelp-man.c:292 -#: ../src/yelp-man.c:385 -#: ../src/yelp-toc.c:266 -#: ../src/yelp-toc.c:365 -msgid "Page not found" -msgstr "עמוד לא נמצא" - -#: ../src/yelp-db-print.c:259 -#: ../src/yelp-docbook.c:276 -#: ../src/yelp-info.c:244 -#: ../src/yelp-mallard.c:281 -#: ../src/yelp-man.c:293 -#, c-format -msgid "The page %s was not found in the document %s." -msgstr "העמוד %s לא נמצא במסמך %s." +#: ../libyelp/yelp-settings.c:164 +msgid "Font Adjustment" +msgstr "התאמת גופנים" -#: ../src/yelp-db-print.c:351 -#: ../src/yelp-docbook.c:368 -#: ../src/yelp-info.c:339 -#: ../src/yelp-man.c:386 -#, c-format -msgid "The requested page was not found in the document %s." -msgstr "העמוד המבוקש לא נמצא במסמך %s." - -#: ../src/yelp-db-print.c:392 -#: ../src/yelp-docbook.c:410 -#: ../src/yelp-info.c:380 -#: ../src/yelp-man.c:429 -msgid "File not found" -msgstr "קובץ לא נמצא" - -#: ../src/yelp-db-print.c:393 -#: ../src/yelp-docbook.c:411 -#: ../src/yelp-info.c:381 -#: ../src/yelp-man.c:430 -#, c-format -msgid "The file ‘%s’ does not exist." -msgstr "הקובץ '%s' לא קיים" +#: ../libyelp/yelp-settings.c:165 +msgid "A size adjustment to add to font sizes" +msgstr "התאמת גודל טקסט להוספה לגדלי הגופנים" -#: ../src/yelp-db-print.c:406 -#: ../src/yelp-db-print.c:418 -#: ../src/yelp-docbook.c:424 -#: ../src/yelp-docbook.c:436 -#: ../src/yelp-info.c:395 -#: ../src/yelp-man.c:458 -#: ../src/yelp-toc.c:437 -msgid "Could not parse file" -msgstr "לא ניתן לעבד את הקובץ" - -#: ../src/yelp-db-print.c:407 -#: ../src/yelp-docbook.c:425 -#, c-format -msgid "The file ‘%s’ could not be parsed because it is not a well-formed XML document." -msgstr "הקובץ '%s' לא ניתן לעיבוד. מכיון שאינו קובץ XML תקני." +#: ../libyelp/yelp-settings.c:173 +msgid "Show Text Cursor" +msgstr "הצגת סמן טקסט" -#: ../src/yelp-db-print.c:419 -#: ../src/yelp-docbook.c:437 -#, c-format -msgid "The file ‘%s’ could not be parsed because one or more of its included files is not a well-formed XML document." -msgstr "הקובץ '%s' לא ניתן לעיבוד. מכיון שאחד או יותר מהקבצים שהוא מכיל אינם קובצי XML תקניים." +#: ../libyelp/yelp-settings.c:174 +msgid "Show the text cursor or caret for accessibile navigation" +msgstr "הצגת סמן הטקסט או סמן גלילה לניווט נגיש יותר" -#: ../src/yelp-db-print.c:765 -#: ../src/yelp-docbook.c:786 -msgid "Unknown" -msgstr "לא ידוע" +#: ../libyelp/yelp-settings.c:182 +msgid "Editor Mode" +msgstr "מצב עריכה" -#: ../src/yelp-error.c:132 -#: ../src/yelp-error.c:139 -msgid "Unknown Error" -msgstr "שגיאה לא ידועה" +#: ../libyelp/yelp-settings.c:183 +msgid "Enable features useful to editors" +msgstr "הפעלת תכונות השימושיות לעורכים" -#: ../src/yelp-error.c:136 -#: ../src/yelp-window.c:1705 -msgid "Could Not Read File" -msgstr "לא ניתן לקרוא קובץ" +#: ../libyelp/yelp-transform.c:171 +msgid "XSLT Stylesheet" +msgstr "גיליון סגנון XSLT" -#: ../src/yelp-error.c:146 -msgid "No information is available about this error." -msgstr "אין מידע זמין אודות שגיאה זו." +#: ../libyelp/yelp-transform.c:172 +msgid "The location of the XSLT stylesheet" +msgstr "מיקום גיליון הסגנון מסוג XSLT" -#: ../src/yelp-info.c:396 +#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394 #, c-format -msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page." -msgstr "הקובץ ’%s’ לא ניתן לפירוק מכיון שאינו דף מידע תקין." +msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." +msgstr "גיליון סגנון ה־XSLT ’%s’ חסר או שאינו תקין." -#: ../src/yelp-io-channel.c:132 -#, c-format -msgid "The file ‘%s’ could not be read and decoded. The file may be compressed in an unsupported format." -msgstr "הקובץ '%s' לא ניתן לקריאה ופיענוח.הקובץ אולי מכווץ בתצורה לא נתמכת." +#: ../libyelp/yelp-transform.c:528 +msgid "No href attribute found on yelp:document\n" +msgstr "לא נמצא מאפיין href ב yelp:document\n" -#: ../src/yelp-main.c:90 -msgid "Use a private session" -msgstr "Use a private session" +#: ../libyelp/yelp-transform.c:543 +msgid "Out of memory" +msgstr "אין מספיק זיכרון" -#: ../src/yelp-main.c:99 -msgid "Define which cache directory to use" -msgstr "Define which cache directory to use" +#: ../libyelp/yelp-view.c:118 +msgid "_Print..." +msgstr "ה_דפסה..." -#. Commandline parsing is done here -#: ../src/yelp-main.c:356 -msgid " GNOME Help Browser" -msgstr " GNOME Help Browser" +#: ../libyelp/yelp-view.c:123 +msgid "_Back" +msgstr "_אחורה" -#: ../src/yelp-main.c:376 -#: ../yelp.desktop.in.in.h:2 -msgid "Help" -msgstr "עזרה" +#: ../libyelp/yelp-view.c:128 +msgid "_Forward" +msgstr "_קדימה" -#: ../src/yelp-mallard.c:311 -#| msgid "File not found" -msgid "Directory not found" -msgstr "התיקייה לא נמצאה" +#: ../libyelp/yelp-view.c:133 +msgid "_Previous Page" +msgstr "העמוד ה_קודם" -#: ../src/yelp-mallard.c:312 -#, c-format -#| msgid "The file ‘%s’ does not exist." -msgid "The directory ‘%s’ does not exist." -msgstr "התיקייה ‘%s’ לא קיימת." +#: ../libyelp/yelp-view.c:138 +msgid "_Next Page" +msgstr "העמוד ה_בא" -#: ../src/yelp-man.c:459 -#, c-format -msgid "The file ‘%s’ could not be parsed because it is not a well-formed man page." -msgstr "הקובץ ’%s’ לא ניתן לפירוק מכיון שאינו דף תיעוד תקין." +#: ../libyelp/yelp-view.c:387 +msgid "Yelp URI" +msgstr "כתובת של Yelp" -#: ../src/yelp-print.c:97 -msgid "Print" -msgstr "הדפס" +#: ../libyelp/yelp-view.c:388 +msgid "A YelpUri with the current location" +msgstr "YelpUti עם המיקום הנוכחי" -#: ../src/yelp-print.c:167 -msgid "Preparing to print" -msgstr "מתכונן להדפסה" +#: ../libyelp/yelp-view.c:396 +msgid "Loading State" +msgstr "מצב הטעינה" -#: ../src/yelp-print.c:261 -msgid "Printing is not supported on this printer" -msgstr "הדפסה לא נתמכת עבור מדפסת זו" +#: ../libyelp/yelp-view.c:397 +msgid "The loading state of the view" +msgstr "מצב הטעינה של התצוגה" -#: ../src/yelp-print.c:264 -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "מדפסת %s לא תומכת בהדפסת postscript." +#: ../libyelp/yelp-view.c:406 +msgid "Page ID" +msgstr "מזהה העמוד" -#: ../src/yelp-print.c:366 -msgid "Waiting to print" -msgstr "ממתין להדפסה" +#: ../libyelp/yelp-view.c:407 +msgid "The ID of the root page of the page being viewed" +msgstr "מספר זיהוי עמוד ההורה של העמוד הנצפה" -#: ../src/yelp-print.c:578 -msgid "An error occurred while printing" -msgstr "ארעה שגיה בזמן ההדפסה" +#: ../libyelp/yelp-view.c:415 +msgid "Root Title" +msgstr "כותרת ההורה" -#: ../src/yelp-print.c:582 -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "לא תאפשר להדפיס את המסמך שלך: %s" +#: ../libyelp/yelp-view.c:416 +msgid "The title of the root page of the page being viewed" +msgstr "כותרת עמוד ההורה של העמוד הנצפה" -#: ../src/yelp-search-parser.c:67 -msgid "the GNOME Support Forums" -msgstr "פורומי התמיכה של GNOME" +#: ../libyelp/yelp-view.c:424 +msgid "Page Title" +msgstr "כותרת העמוד" -#: ../src/yelp-search-parser.c:285 -#, c-format -msgid "No results for \"%s\"" -msgstr "אין תוצאות עבור \"%s\"" +#: ../libyelp/yelp-view.c:425 +msgid "The title of the page being viewed" +msgstr "כותרת העמוד הנצפה" -#: ../src/yelp-search-parser.c:286 -msgid "Try using different words to describe the problem you're having or the topic you want help with." -msgstr "נסה להשתמש במילים אחרות לתיאור הבעיה או הנושא בהם אתה מחפש עזרה." +#: ../libyelp/yelp-view.c:433 +msgid "Page Description" +msgstr "תיאור העמוד" -#: ../src/yelp-search-parser.c:289 -#, c-format -msgid "Search results for \"%s\"" -msgstr "תוצאות חיפוש עבור \"%s\"" +#: ../libyelp/yelp-view.c:434 +msgid "The description of the page being viewed" +msgstr "תיאור העמוד שנצפה" -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT +#: ../libyelp/yelp-view.c:442 +msgid "Page Icon" +msgstr "סמל העמוד" + +#: ../libyelp/yelp-view.c:443 +msgid "The icon of the page being viewed" +msgstr "סמל העמוד הנצפה" + +#: ../libyelp/yelp-view.c:791 +msgid "Save Image" +msgstr "שמירת תמונה" + +#: ../libyelp/yelp-view.c:873 +msgid "Save Code" +msgstr "שמירת הקוד" + +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. #. -#: ../src/yelp-search-parser.c:303 +#: ../libyelp/yelp-view.c:1034 #, c-format -msgid "Repeat the search online at %s" -msgstr "חזור על החיפוש כמקוון ב־%s" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -#: ../src/yelp-search-parser.c:874 -msgid "a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:where:who:will:with:won't:wont:why:work:working:works" -msgstr "" +msgid "Send email to %s" +msgstr "שליחת דוא\"ל אל %s" -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -#: ../src/yelp-search-parser.c:890 -msgid "re" -msgstr "NULL" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -#: ../src/yelp-search-parser.c:899 -msgid "ers:er:ing:es:s:'s" -msgstr "ים:ות" +#: ../libyelp/yelp-view.c:1044 +msgid "_Open Link" +msgstr "_פתח קישור" + +#: ../libyelp/yelp-view.c:1049 +msgid "Open Link in New _Window" +msgstr "פתיחת קישור בחלון _חדש" + +#: ../libyelp/yelp-view.c:1091 +msgid "_Save Image As..." +msgstr "שמירת ת_מונה בשם..." -#: ../src/yelp-search-parser.c:1095 -msgid "No Comment" -msgstr "אין הערה" +#: ../libyelp/yelp-view.c:1093 +msgid "_Save Video As..." +msgstr "שמירת ו_ידאו בשם..." -#. Much bigger problems -#: ../src/yelp-search.c:238 -msgid "Search could not be processed" -msgstr "לא ניתן לעבד את החיפוש" +#: ../libyelp/yelp-view.c:1100 +msgid "S_end Image To..." +msgstr "שליחת _תמונה אל..." -#: ../src/yelp-search.c:239 -msgid "The requested search could not be processed." -msgstr "לא ניתן לעבד את החיפוש שבוקש." +#: ../libyelp/yelp-view.c:1102 +msgid "S_end Video To..." +msgstr "שליחת _וידאו אל..." -#: ../src/yelp-search.c:366 -msgid "Cannot process the search" -msgstr "לא ניתן לעבד את החיפוש" +#: ../libyelp/yelp-view.c:1113 +msgid "_Copy Text" +msgstr "_העתקת טקסט" -#: ../src/yelp-search.c:367 -msgid "The search processor returned invalid results" -msgstr "מעבד החיפוש החזיר תוצאות לא תקינות" +#: ../libyelp/yelp-view.c:1126 +msgid "C_opy Code Block" +msgstr "ה_עתקת מקטע קוד" -#: ../src/yelp-toc.c:267 +#: ../libyelp/yelp-view.c:1131 +msgid "Save Code _Block As..." +msgstr "שמירת מקטע הקוד _בשם..." + +#: ../libyelp/yelp-view.c:1302 +#, c-format +msgid "Could not load a document for ‘%s’" +msgstr "לא ניתן לטעון את המסמך עבור ‘%s’" + +#: ../libyelp/yelp-view.c:1308 #, c-format -msgid "The page %s was not found in the TOC." -msgstr "העמוד %s לא נמצא בטבלת התכנים." +msgid "Could not load a document" +msgstr "לא ניתן לטעון את המסמך" + +#: ../libyelp/yelp-view.c:1375 +msgid "Not Found" +msgstr "לא נמצא" -#: ../src/yelp-toc.c:366 -msgid "The requested page was not found in the TOC." -msgstr "הדף המבוקש לא נמצא בטבלת התכנים." +#: ../libyelp/yelp-view.c:1378 +msgid "Cannot Read" +msgstr "לא ניתן לקרוא" -#: ../src/yelp-toc.c:438 -msgid "The TOC file could not be parsed because it is not a well-formed XML document." -msgstr "קובץ טבלת התכנים לא ניתן לעיבוד מכיוון שאינו קובץ XML תקני." +#: ../libyelp/yelp-view.c:1384 +msgid "Unknown Error" +msgstr "שגיאה לא ידועה" -#: ../src/yelp-transform.c:86 -msgid "Invalid Stylesheet" -msgstr "גליון סגנון שגוי" +#: ../libyelp/yelp-view.c:1476 +#, c-format +msgid "The URI ‘%s’ does not point to a valid page." +msgstr "הכתובת '%s' אינה מצביע אל דף תקני." -#: ../src/yelp-transform.c:87 +#: ../libyelp/yelp-view.c:1482 #, c-format -msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." -msgstr "גליון סגנון ה־XSLT ’%s’ חסר או שאינו תקין." +msgid "The URI does not point to a valid page." +msgstr "הכתובת אינה מצביעה אל דף תקני." -#: ../src/yelp-transform.c:122 -msgid "Broken Transformation" -msgstr "המרה שבורה" +#: ../libyelp/yelp-view.c:1490 +#, c-format +msgid "The URI ‘%s’ could not be parsed." +msgstr "לא ניתן לנתח את הכתובת '%s'." -#: ../src/yelp-transform.c:123 -msgid "An unknown error occurred while attempting to transform the document." -msgstr "שגיאה לא ידועה התרחשה במהלך המרת המסמך." +#: ../src/yelp-application.c:56 +msgid "Turn on editor mode" +msgstr "הפעלת מצב עורך" -#: ../src/yelp-transform.c:389 -msgid "No href attribute found on yelp:document\n" -msgstr "לא נמצא מאפיין href ב yelp:document\n" +#: ../src/yelp-application.c:107 +msgid "_Larger Text" +msgstr "טקסט _גדול יותר" -#: ../src/yelp-transform.c:404 -msgid "Out of memory" -msgstr "אין מספיק זיכרון" +#: ../src/yelp-application.c:109 +msgid "Increase the size of the text" +msgstr "מגדיל את גודל הטקסט" -#: ../src/yelp-window.c:306 -msgid "_File" -msgstr "_קובץ" +#: ../src/yelp-application.c:112 +msgid "_Smaller Text" +msgstr "טקסט _קטן יותר" -#: ../src/yelp-window.c:307 -msgid "_Edit" -msgstr "_עריכה" +#: ../src/yelp-application.c:114 +msgid "Descrease the size of the text" +msgstr "מקטין את גודל הטקסט" + +#: ../src/yelp-application.c:230 +msgid "Show Text _Cursor" +msgstr "הצגת _סמן טקסט" + +#: ../src/yelp-application.c:306 ../src/yelp-window.c:1841 +#: ../yelp.desktop.in.in.h:2 +msgid "Help" +msgstr "עזרה" + +#: ../src/yelp-application.c:572 +msgid "" +"You do not have PackageKit installed. Package installation links require " +"PackageKit." +msgstr "" +"PackageKit אינו מותקן אצלך. קישורים להתקנת חבילות דורשים את PackageKit." -#: ../src/yelp-window.c:308 +#: ../src/yelp-window.c:298 +msgid "_Page" +msgstr "_עמוד" + +#: ../src/yelp-window.c:299 +msgid "_View" +msgstr "_תצוגה" + +#: ../src/yelp-window.c:300 msgid "_Go" msgstr "_מעבר" -#: ../src/yelp-window.c:309 +#: ../src/yelp-window.c:301 msgid "_Bookmarks" msgstr "_סימניות" -#: ../src/yelp-window.c:310 -msgid "_Help" -msgstr "_עזרה" - -#: ../src/yelp-window.c:313 +#: ../src/yelp-window.c:304 msgid "_New Window" msgstr "_חלון חדש" -#: ../src/yelp-window.c:318 -msgid "Print This Document ..." -msgstr "הדפס מסמך זה..." - -#: ../src/yelp-window.c:323 -msgid "Print This Page ..." -msgstr "הדפס דף זה..." +#: ../src/yelp-window.c:309 +msgid "_Close" +msgstr "_סגירה" -#: ../src/yelp-window.c:328 -msgid "About This Document" -msgstr "אודות מסמך זה" +#: ../src/yelp-window.c:314 +msgid "_Add Bookmark" +msgstr "_הוסף לסימניות" -#: ../src/yelp-window.c:333 -msgid "Open _Location" -msgstr "פתח _מיקום" +#: ../src/yelp-window.c:319 +msgid "_Edit Bookmarks" +msgstr "_עריכת סימניות" -#: ../src/yelp-window.c:338 -msgid "_Close Window" -msgstr "_סגור חלון" +#: ../src/yelp-window.c:324 +msgid "Find in Page..." +msgstr "חיפוש בעמוד..." -#: ../src/yelp-window.c:344 -msgid "_Copy" -msgstr "_העתק" +#: ../src/yelp-window.c:329 ../src/yelp-window.c:569 +msgid "Search..." +msgstr "חיפוש..." -#: ../src/yelp-window.c:350 -msgid "_Select All" -msgstr "_בחר הכל" +#: ../src/yelp-window.c:334 +msgid "Open Location" +msgstr "פתח מיקום" -#: ../src/yelp-window.c:355 -msgid "_Find..." -msgstr "_חפש..." +#: ../src/yelp-window.c:363 +msgid "Application" +msgstr "יישום" -#: ../src/yelp-window.c:360 -msgid "Find Pre_vious" -msgstr "חפש את _הקודם" +#: ../src/yelp-window.c:364 +msgid "A YelpApplication instance that controls this window" +msgstr "מופע של YelpApplication השולט בחלון זה" -#: ../src/yelp-window.c:362 -msgid "Find previous occurrence of the word or phrase" -msgstr "חפש את המופע הקודם של המילה או הביטוי" +#: ../src/yelp-window.c:641 +msgid "Read Later" +msgstr "אקרא אחר כך" -#: ../src/yelp-window.c:365 -msgid "Find Ne_xt" -msgstr "חפש את ה_בא" +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:829 +#, c-format +msgid "Bookmarks for %s" +msgstr "סימנייה עבור %s" -#: ../src/yelp-window.c:367 -msgid "Find next occurrence of the word or phrase" -msgstr "חפש את המופע הבא של המילה או הביטוי" +#: ../src/yelp-window.c:1457 +#, c-format +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "התאמה אחת" +msgstr[1] "%i התאמות" -#: ../src/yelp-window.c:370 -msgid "_Preferences" -msgstr "_העדפות" +#: ../src/yelp-window.c:1482 +msgid "No matches" +msgstr "אין התאמות" -#: ../src/yelp-window.c:375 -msgid "_Reload" -msgstr "_רענן" +#: ../src/yelp-window.c:1801 +msgid "Loading" +msgstr "בטעינה" -#: ../src/yelp-window.c:387 -msgid "_Back" -msgstr "_אחורה" +#: ../src/yelp-window.c:2034 +msgid "_Open Bookmark" +msgstr "_פתיחת סימנייה" -#: ../src/yelp-window.c:389 -msgid "Show previous page in history" -msgstr "מציג עמודים קודמים בהיסטוריה" +#: ../src/yelp-window.c:2040 +msgid "Open Bookmark in New _Window" +msgstr "פתיחת סימניות ב_חלון חדש" -#: ../src/yelp-window.c:392 -msgid "_Forward" -msgstr "_קדימה" +#: ../src/yelp-window.c:2049 +msgid "_Remove Bookmark" +msgstr "ה_סרת סימנייה" -#: ../src/yelp-window.c:394 -msgid "Show next page in history" -msgstr "מציג את העמודים הבאים בהיסטוריה" +#: ../yelp.desktop.in.in.h:1 +msgid "Get help with GNOME" +msgstr "קבל עזרה עם GNOME" -#: ../src/yelp-window.c:397 -msgid "_Help Topics" -msgstr "_נושאי העזרה" +#~ msgid "Re_name" +#~ msgstr "_שנה שם" -#: ../src/yelp-window.c:399 -msgid "Go to the listing of help topics" -msgstr "לך לרשימת נושאי העזרה" +#~ msgid "_Bookmarks:" +#~ msgstr "_סימניות:" -#: ../src/yelp-window.c:402 -msgid "_Previous Section" -msgstr "_חלק _קודם" +#~ msgid "Add Bookmark" +#~ msgstr "הוסף לסימניות" -#: ../src/yelp-window.c:407 -msgid "_Next Section" -msgstr "חלק _הבא" +#~ msgid "_Title:" +#~ msgstr "_כותרת:" -#: ../src/yelp-window.c:412 -#: ../src/yelp-window.c:444 -msgid "_Contents" -msgstr "_תוכן עניינים" +#~ msgid "_Location:" +#~ msgstr "_מיקום:" -#: ../src/yelp-window.c:418 -msgid "_Add Bookmark" -msgstr "_הוסף לסימניות" +#~ msgid "Fonts" +#~ msgstr "גופנים" -#: ../src/yelp-window.c:423 -msgid "_Edit Bookmarks..." -msgstr "_ערוך סימניות..." +#~ msgid "Preferences" +#~ msgstr "העדפות" -#: ../src/yelp-window.c:429 -msgid "_Open Link" -msgstr "_פתח קישור" +#~ msgid "_Browse with caret" +#~ msgstr "_דפדף בעזרת סמן" -#: ../src/yelp-window.c:434 -msgid "Open Link in _New Window" -msgstr "פתח קישור בחלון _חדש" +#~ msgid "_Fixed width:" +#~ msgstr "רוחב _קבוע:" -#: ../src/yelp-window.c:439 -msgid "_Copy Link Address" -msgstr "העתק קישור" +#~ msgid "_Use system fonts" +#~ msgstr "_השתמש בגופני מערכת" -#: ../src/yelp-window.c:446 -msgid "Help On this application" -msgstr "עזרה עבור יישום זה" +#~ msgid "_Variable width:" +#~ msgstr "רוחב גופן משתנה:" -#: ../src/yelp-window.c:449 -msgid "_About" -msgstr "_אודות" +#~ msgid "Font for fixed text" +#~ msgstr "Font for fixed text" -#: ../src/yelp-window.c:454 -msgid "Copy _Email Address" -msgstr "העתק כתובת _דוא\"ל" +#~ msgid "Font for text" +#~ msgstr "Font for text" -#: ../src/yelp-window.c:526 -msgid "Help Browser" -msgstr "דפדפן עזרה" +#~ msgid "Font for text with fixed width." +#~ msgstr "Font for text with fixed width." -#: ../src/yelp-window.c:621 -#: ../src/yelp-window.c:673 -#: ../src/yelp-window.c:1767 -msgid "Loading..." -msgstr "טוען..." +#~ msgid "Font for text with variable width." +#~ msgstr "Font for text with variable width." -#: ../src/yelp-window.c:622 -#: ../src/yelp-window.c:674 -msgid "Unknown Page" -msgstr "דף לא ידוע" +#~ msgid "Use a keyboard-controllable caret when viewing pages." +#~ msgstr "Use a keyboard-controllable caret when viewing pages." -#: ../src/yelp-window.c:1044 -#: ../src/yelp-window.c:1106 -#: ../src/yelp-window.c:1115 -#, c-format -msgid "The requested URI \"%s\" is invalid" -msgstr "הכתובת שבוקשה (%s) לא תקינה" +#~ msgid "Use caret" +#~ msgstr "Use caret" -#: ../src/yelp-window.c:1045 -#: ../src/yelp-window.c:1108 -#: ../src/yelp-window.c:1116 -msgid "Unable to load page" -msgstr "לא ניתן לטעון את העמוד" +#~ msgid "Use system fonts" +#~ msgstr "Use system fonts" -#: ../src/yelp-window.c:1325 -msgid "_Search:" -msgstr "_חיפוש:" +#~ msgid "Use the default fonts set for the system." +#~ msgstr "Use the default fonts set for the system." -#: ../src/yelp-window.c:1326 -msgid "Search for other documentation" -msgstr "חפש תיעוד אחר" +#~ msgid "A bookmark titled %s already exists for this page." +#~ msgstr "סימנייה בשם %s כבר קיימת לדף זה." -#: ../src/yelp-window.c:1346 -msgid "Cannot create window" -msgstr "לא ניתן ליצור חלון" +#~ msgid "A bookmark titled <b>%s</b> already exists for this page." +#~ msgstr "סימנייה בשם <b>%s</b> כבר נמצאת לדף זה." -#: ../src/yelp-window.c:1352 -msgid "Cannot create search component" -msgstr "לא ניתן ליצור רכיב חיפוש." +#~ msgid "Help Topics" +#~ msgstr "נושאי עזרה" -#: ../src/yelp-window.c:1524 -msgid "Fin_d:" -msgstr "ח_פש:" +#~ msgid "Document Sections" +#~ msgstr "אזורי מסמך" -#: ../src/yelp-window.c:1546 -msgid "Find _Previous" -msgstr "מצא הקודם" +#~ msgid "File not found" +#~ msgstr "קובץ לא נמצא" -#: ../src/yelp-window.c:1558 -msgid "Find _Next" -msgstr "מצא _הבא" +#~ msgid "Could not parse file" +#~ msgstr "לא ניתן לעבד את הקובץ" -#: ../src/yelp-window.c:1571 -msgid "Phrase not found" -msgstr "ביטוי לא נמצא" +#~ msgid "Could Not Read File" +#~ msgstr "לא ניתן לקרוא קובץ" -#: ../src/yelp-window.c:1702 -#, c-format -msgid "The file ‘%s’ could not be read. This file might be missing, or you might not have permissions to read it." -msgstr "הקובץ ‘%s’ לא ניתן לקריאה. הקובץ חסר, או שולי אין לך הרשאות מתאימות לקריאתו." - -#. Note to translators: put here your name (and address) so it -#. * will show up in the "about" box -#: ../src/yelp-window.c:2572 -msgid "translator-credits" -msgstr "" -"גיל אשר <dolfin@rpg.org.il>\n" -"יובל טנאי\n" -"יאיר הרשקוביץ <yairhr@gmail.com>\n" -"Yaron Shahrabani <sh.yaron@gmail.com>\n" -"פרוייקט תרגום GNOME לעברית:\n" -"http://gnome-il.berlios.de" - -#: ../src/yelp-window.c:2575 -msgid "Yelp" -msgstr "Yelp" +#~ msgid "No information is available about this error." +#~ msgstr "אין מידע זמין אודות שגיאה זו." -#: ../src/yelp-window.c:2577 -msgid "A documentation browser and viewer for the Gnome Desktop." -msgstr "דפדפן העזרה של שולחן העבודה GNOME" +#~ msgid "" +#~ "The file ‘%s’ could not be read and decoded. The file may be compressed " +#~ "in an unsupported format." +#~ msgstr "הקובץ '%s' לא ניתן לקריאה ופיענוח.הקובץ אולי מכווץ בתצורה לא נתמכת." -#: ../yelp.desktop.in.in.h:1 -msgid "Get help with GNOME" -msgstr "קבל עזרה עם GNOME" +#~ msgid "Use a private session" +#~ msgstr "Use a private session" -#~ msgid "<b>Accessibility</b>" -#~ msgstr "<b>נגישות</b>" -#~ msgid "<b>Fonts</b>" -#~ msgstr "<b>גופנים</b>" -#~ msgid "C_ase sensitive" -#~ msgstr "תלוי _רשיות" -#~ msgid "Find" -#~ msgstr "חפש" -#~ msgid "_Find:" -#~ msgstr "ח_פש: " -#~ msgid "_Next" -#~ msgstr "ה_בא" -#~ msgid "_Previous" -#~ msgstr "ה_קודם" -#~ msgid "_Wrap around" -#~ msgstr "_עטוף סביב" -#~ msgid "Error executing \"gnome-open\"" -#~ msgstr "שגיאה בהפעלת \"gnome-open\"" +#~ msgid "Define which cache directory to use" +#~ msgstr "Define which cache directory to use" +#~ msgid " GNOME Help Browser" +#~ msgstr " GNOME Help Browser" @@ -5,14 +5,15 @@ msgid "" msgstr "" "Project-Id-Version: yelp 2.30.x\n" -"Report-Msgid-Bugs-To:\n" -"POT-Creation-Date: 2010-05-02 11:33+0200\n" -"PO-Revision-Date: 2010-05-02 11:38+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-06-14 01:14+0200\n" +"PO-Revision-Date: 2010-06-14 01:15+0200\n" "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" "Language-Team: Norsk (bokmål) <i18n-nb@lister.ping.uio.no>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/info.xml.in.h:1 msgid "GNU Info Pages" @@ -681,7 +682,7 @@ msgstr "Spillere" msgid "Presentation Tools" msgstr "Presentasjonsverktøy" -#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364 +#: ../data/toc.xml.in.h:104 msgid "Printing" msgstr "Skriver ut" @@ -865,34 +866,35 @@ msgid "Word Processors" msgstr "Tekstbehandlere" #: ../libyelp/yelp-bz2-decompressor.c:146 -#: ../libyelp/yelp-lzma-decompressor.c:147 +#: ../libyelp/yelp-lzma-decompressor.c:155 msgid "Invalid compressed data" msgstr "Ugyldige komprimerte data" #: ../libyelp/yelp-bz2-decompressor.c:152 -#: ../libyelp/yelp-lzma-decompressor.c:153 +#: ../libyelp/yelp-lzma-decompressor.c:161 msgid "Not enough memory" msgstr "Ikke nok minne" #: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233 #: ../libyelp/yelp-mallard-document.c:254 -#: ../libyelp/yelp-mallard-document.c:391 +#: ../libyelp/yelp-mallard-document.c:397 ../libyelp/yelp-man-document.c:269 #, c-format msgid "The page ‘%s’ was not found in the document ‘%s’." msgstr "Siden «%s» ble ikke funnet i dokumentet «%s»." #: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 +#: ../libyelp/yelp-man-document.c:403 #, c-format msgid "The file does not exist." msgstr "Filen eksisterer ikke." #: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 -#: ../src/yelp-db-print.c:393 ../src/yelp-man.c:430 +#: ../libyelp/yelp-man-document.c:413 #, c-format msgid "The file ‘%s’ does not exist." msgstr "Filen «%s» eksisterer ikke." -#: ../libyelp/yelp-docbook-document.c:323 ../src/yelp-db-print.c:407 +#: ../libyelp/yelp-docbook-document.c:323 #, c-format msgid "" "The file ‘%s’ could not be parsed because it is not a well-formed XML " @@ -900,7 +902,7 @@ msgid "" msgstr "" "Filen «%s» kunne ikke leses fordi den ikke er et gyldig utformet XML-dokument." -#: ../libyelp/yelp-docbook-document.c:336 ../src/yelp-db-print.c:419 +#: ../libyelp/yelp-docbook-document.c:336 #, c-format msgid "" "The file ‘%s’ could not be parsed because one or more of its included files " @@ -909,11 +911,12 @@ msgstr "" "Filen «%s» kunne ikke tolkes fordi den eller en inkludert fil ikke er " "velformet XML." -#: ../libyelp/yelp-docbook-document.c:720 ../src/yelp-db-print.c:766 +#: ../libyelp/yelp-docbook-document.c:740 msgid "Unknown" msgstr "Ukjent" -#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 +#: ../libyelp/yelp-man-document.c:345 #, c-format msgid "The requested page was not found in the document ‘%s’." msgstr "Etterspurt side ble ikke funnet i dokument «%s»." @@ -929,59 +932,56 @@ msgid "" "The file ‘%s’ could not be parsed because it is not a well-formed info page." msgstr "Filen «%s» kunne ikke tolkes fordi den ikke er en velformet info-side." -#: ../libyelp/yelp-io-channel.c:125 -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." -msgstr "" -"Filen «%s» kunne ikke leses og dekodes. Filen kan være komprimert i et format " -"som ikke støttes." - -#: ../libyelp/yelp-location-entry.c:246 +#: ../libyelp/yelp-location-entry.c:279 msgid "Description Column" msgstr "Beskrivelseskolonne" -#: ../libyelp/yelp-location-entry.c:247 -msgid "A column in the model to descriptions from" -msgstr "" +#: ../libyelp/yelp-location-entry.c:280 +msgid "A column in the model to get descriptions from" +msgstr "Kolonne i modellen hvor beskrivelser hentes fra" -#: ../libyelp/yelp-location-entry.c:262 +#: ../libyelp/yelp-location-entry.c:295 msgid "Icon Column" msgstr "Ikonkolonne" -#: ../libyelp/yelp-location-entry.c:263 +#: ../libyelp/yelp-location-entry.c:296 msgid "A column in the model to get icon names from" -msgstr "" +msgstr "Kolonne i modellen hvor ikonnavn hentes fra" -#: ../libyelp/yelp-location-entry.c:278 +#: ../libyelp/yelp-location-entry.c:311 msgid "Flags Column" -msgstr "" +msgstr "Flaggkolonne" -#: ../libyelp/yelp-location-entry.c:279 +#: ../libyelp/yelp-location-entry.c:312 msgid "A column in the model with YelpLocationEntryFlags flags" -msgstr "" +msgstr "Kolonne i modellen med flagg av type YelpLocationEntryFlags" -#: ../libyelp/yelp-location-entry.c:295 +#: ../libyelp/yelp-location-entry.c:328 msgid "Enable Search" msgstr "Slå på søk" -#: ../libyelp/yelp-location-entry.c:296 +#: ../libyelp/yelp-location-entry.c:329 msgid "Whether the location entry can be used as a search field" msgstr "Om lokasjonsfeltet kan brukes som et søkefelt" -#: ../libyelp/yelp-mallard-document.c:294 +#: ../libyelp/yelp-mallard-document.c:296 #, c-format msgid "The directory ‘%s’ does not exist." msgstr "Katalogen «%s» eksisterer ikke." +#: ../libyelp/yelp-man-document.c:444 +#, c-format +msgid "" +"The file ‘%s’ could not be parsed because it is not a well-formed man page." +msgstr "Filen «%s» kunne ikke tolkes fordi den ikke er en velformet manualside." + #: ../libyelp/yelp-settings.c:146 msgid "GtkSettings" msgstr "GtkSettings" #: ../libyelp/yelp-settings.c:147 msgid "A GtkSettings object to get settings from" -msgstr "" +msgstr "Et GtkSettings-objekt å hente innstillinger fra" #: ../libyelp/yelp-settings.c:155 msgid "GtkIconTheme" @@ -989,7 +989,7 @@ msgstr "GtkIconTheme" #: ../libyelp/yelp-settings.c:156 msgid "A GtkIconTheme object to get icons from" -msgstr "" +msgstr "Et GtkIconTheme-objekt å hente ikoner fra" #: ../libyelp/yelp-settings.c:164 msgid "Font Adjustment" @@ -997,7 +997,7 @@ msgstr "Justering av skrift" #: ../libyelp/yelp-settings.c:165 msgid "A size adjustment to add to font sizes" -msgstr "" +msgstr "En størrelsesjustering som skal legges til på skriftstørrelser" #: ../libyelp/yelp-settings.c:173 msgid "Show Text Cursor" @@ -1005,7 +1005,7 @@ msgstr "Vis tekstmarkør" #: ../libyelp/yelp-settings.c:174 msgid "Show the text cursor or caret for accessibile navigation" -msgstr "" +msgstr "Vis tekstmarkør for tilgjengelig navigasjon" #: ../libyelp/yelp-settings.c:182 msgid "Editor Mode" @@ -1013,7 +1013,7 @@ msgstr "Redigeringsmodus" #: ../libyelp/yelp-settings.c:183 msgid "Enable features useful to editors" -msgstr "" +msgstr "Slå på funksjoner som er nyttig ved redigering" #: ../libyelp/yelp-transform.c:171 msgid "XSLT Stylesheet" @@ -1021,10 +1021,10 @@ msgstr "XSLT-stilark" #: ../libyelp/yelp-transform.c:172 msgid "The location of the XSLT stylesheet" -msgstr "" +msgstr "Lokasjon for XSLT-stilark" #: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394 -#, fuzzy, c-format +#, c-format msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." msgstr "XSLT-stilark «%s» mangler eller er ugyldig." @@ -1036,449 +1036,300 @@ msgstr "Ingen href-attributt funnet på yelp:document\n" msgid "Out of memory" msgstr "Ikke mer minne" -#: ../libyelp/yelp-view.c:92 +#: ../libyelp/yelp-view.c:118 +msgid "_Print..." +msgstr "S_kriv ut…" + +#: ../libyelp/yelp-view.c:123 msgid "_Back" msgstr "Til_bake" -#: ../libyelp/yelp-view.c:97 +#: ../libyelp/yelp-view.c:128 msgid "_Forward" msgstr "_Fremover" -#: ../libyelp/yelp-view.c:102 +#: ../libyelp/yelp-view.c:133 msgid "_Previous Page" msgstr "_Forrige side" -#: ../libyelp/yelp-view.c:107 +#: ../libyelp/yelp-view.c:138 msgid "_Next Page" msgstr "_Neste side" -#: ../libyelp/yelp-view.c:310 +#: ../libyelp/yelp-view.c:387 msgid "Yelp URI" msgstr "Yelp URI" -#: ../libyelp/yelp-view.c:311 +#: ../libyelp/yelp-view.c:388 msgid "A YelpUri with the current location" -msgstr "" +msgstr "En YelpUri med aktiv lokasjon" -#: ../libyelp/yelp-view.c:319 +#: ../libyelp/yelp-view.c:396 msgid "Loading State" msgstr "Laster tilstand" -#: ../libyelp/yelp-view.c:320 +#: ../libyelp/yelp-view.c:397 msgid "The loading state of the view" -msgstr "" +msgstr "Tilstand for lasting av visningen" -#: ../libyelp/yelp-view.c:329 +#: ../libyelp/yelp-view.c:406 msgid "Page ID" msgstr "Side-ID" -#: ../libyelp/yelp-view.c:330 -msgid "The ID of the root page of the page being viewew" -msgstr "" +#: ../libyelp/yelp-view.c:407 +msgid "The ID of the root page of the page being viewed" +msgstr "ID på rotsiden for siden som vises" -#: ../libyelp/yelp-view.c:338 +#: ../libyelp/yelp-view.c:415 msgid "Root Title" -msgstr "" +msgstr "Rot-tittel" -#: ../libyelp/yelp-view.c:339 -msgid "The title of the root page of the page being viewew" -msgstr "" +#: ../libyelp/yelp-view.c:416 +msgid "The title of the root page of the page being viewed" +msgstr "Tittel på rotsiden for siden som vises" -#: ../libyelp/yelp-view.c:347 +#: ../libyelp/yelp-view.c:424 msgid "Page Title" msgstr "Sidetittel" -#: ../libyelp/yelp-view.c:348 +#: ../libyelp/yelp-view.c:425 msgid "The title of the page being viewed" -msgstr "" +msgstr "Tittel på siden som vises" -#: ../libyelp/yelp-view.c:356 +#: ../libyelp/yelp-view.c:433 msgid "Page Description" msgstr "Beskrivelse av side" -#: ../libyelp/yelp-view.c:357 +#: ../libyelp/yelp-view.c:434 msgid "The description of the page being viewed" -msgstr "" +msgstr "Beskrivelse av siden som vises" -#: ../libyelp/yelp-view.c:365 +#: ../libyelp/yelp-view.c:442 msgid "Page Icon" msgstr "Sideikon" -#: ../libyelp/yelp-view.c:366 +#: ../libyelp/yelp-view.c:443 msgid "The icon of the page being viewed" -msgstr "" +msgstr "Ikon for siden som vises" + +#: ../libyelp/yelp-view.c:791 +msgid "Save Image" +msgstr "Lagre bilde" -#: ../libyelp/yelp-view.c:683 +#: ../libyelp/yelp-view.c:873 +msgid "Save Code" +msgstr "Lagre kode" + +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. +#: ../libyelp/yelp-view.c:1034 +#, c-format +msgid "Send email to %s" +msgstr "Send e-post til %s" + +#: ../libyelp/yelp-view.c:1044 +msgid "_Open Link" +msgstr "_Åpne lenke" + +#: ../libyelp/yelp-view.c:1049 +msgid "Open Link in New _Window" +msgstr "Åpne lenke i nytt _vindu" + +#: ../libyelp/yelp-view.c:1091 +msgid "_Save Image As..." +msgstr "_Lagre bilde som…" + +#: ../libyelp/yelp-view.c:1093 +msgid "_Save Video As..." +msgstr "_Lagre video som…" + +#: ../libyelp/yelp-view.c:1100 +msgid "S_end Image To..." +msgstr "S_end bilde til…" + +#: ../libyelp/yelp-view.c:1102 +msgid "S_end Video To..." +msgstr "S_end video til…" + +#: ../libyelp/yelp-view.c:1113 +msgid "_Copy Text" +msgstr "_Kopier tekst" + +#: ../libyelp/yelp-view.c:1126 +msgid "C_opy Code Block" +msgstr "K_opier kodeblokk" + +#: ../libyelp/yelp-view.c:1131 +msgid "Save Code _Block As..." +msgstr "Lagre kode_blokk som…" + +#: ../libyelp/yelp-view.c:1302 #, c-format msgid "Could not load a document for ‘%s’" msgstr "Kunne ikke laste dokument for «%s»" -#: ../libyelp/yelp-view.c:689 +#: ../libyelp/yelp-view.c:1308 #, c-format msgid "Could not load a document" msgstr "Kunne ikke laste et dokument" -#: ../libyelp/yelp-view.c:756 +#: ../libyelp/yelp-view.c:1375 msgid "Not Found" msgstr "Ikke funnet" -#: ../libyelp/yelp-view.c:759 +#: ../libyelp/yelp-view.c:1378 msgid "Cannot Read" msgstr "Kan ikke lese" -#: ../libyelp/yelp-view.c:765 ../src/yelp-error.c:132 ../src/yelp-error.c:139 +#: ../libyelp/yelp-view.c:1384 msgid "Unknown Error" msgstr "Ukjent feil" -#: ../libyelp/yelp-view.c:855 -#, fuzzy, c-format -msgid "The URI ‘%s’ does point to a valid page." -msgstr "Filen «%s» eksisterer ikke." - -#: ../libyelp/yelp-view.c:863 +#: ../libyelp/yelp-view.c:1476 #, c-format -msgid "The URI ‘%s’ could not be parsed." -msgstr "URI «%s» kunne ikke tolkes." +msgid "The URI ‘%s’ does not point to a valid page." +msgstr "URI «%s» peker ikke til en gyldig side." -#: ../src/eggdesktopfile.c:165 +#: ../libyelp/yelp-view.c:1482 #, c-format -msgid "File is not a valid .desktop file" -msgstr "Filen er ikke en gyldig .desktop-fil" +msgid "The URI does not point to a valid page." +msgstr "URIen peker ikke til en gyldig side." -#: ../src/eggdesktopfile.c:188 +#: ../libyelp/yelp-view.c:1490 #, c-format -msgid "Unrecognized desktop file Version '%s'" -msgstr "" - -#: ../src/eggdesktopfile.c:958 -#, c-format -msgid "Starting %s" -msgstr "Starter %s" - -#: ../src/eggdesktopfile.c:1100 -#, c-format -msgid "Application does not accept documents on command line" -msgstr "Programmet tar ikke dokumenter på kommandolinjen" - -#: ../src/eggdesktopfile.c:1168 -#, c-format -msgid "Unrecognized launch option: %d" -msgstr "" - -#: ../src/eggdesktopfile.c:1373 -#, c-format -msgid "Can't pass document URIs to a 'Type=Link' desktop entry" -msgstr "" - -#: ../src/eggdesktopfile.c:1392 -#, c-format -msgid "Not a launchable item" -msgstr "Ikke en oppstartbar oppføring" - -#: ../src/eggsmclient.c:225 -msgid "Disable connection to session manager" -msgstr "Slå av tilkobling til sesjonshåndterer" - -#: ../src/eggsmclient.c:228 -msgid "Specify file containing saved configuration" -msgstr "" - -#: ../src/eggsmclient.c:228 -msgid "FILE" -msgstr "FIL" - -#: ../src/eggsmclient.c:231 -msgid "Specify session management ID" -msgstr "" - -#: ../src/eggsmclient.c:231 -msgid "ID" -msgstr "ID" - -#: ../src/eggsmclient.c:252 -msgid "Session management options:" -msgstr "Alternativer for sesjonshåndtering:" - -#: ../src/eggsmclient.c:253 -msgid "Show session management options" -msgstr "Vis alternativer for sesjonshåndtering" +msgid "The URI ‘%s’ could not be parsed." +msgstr "URI «%s» kunne ikke tolkes." -#: ../src/yelp-application.c:55 +#: ../src/yelp-application.c:56 msgid "Turn on editor mode" -msgstr "" +msgstr "Slå på redigeringsmodus" -#: ../src/yelp-application.c:106 +#: ../src/yelp-application.c:107 msgid "_Larger Text" msgstr "_Større tekst" -#: ../src/yelp-application.c:108 +#: ../src/yelp-application.c:109 msgid "Increase the size of the text" msgstr "Øk størrelsen på teksten" -#: ../src/yelp-application.c:111 +#: ../src/yelp-application.c:112 msgid "_Smaller Text" msgstr "_Mindre tekst" -#: ../src/yelp-application.c:113 +#: ../src/yelp-application.c:114 msgid "Descrease the size of the text" -msgstr "" +msgstr "Gjør tekststørrelsen mindre" -#: ../src/yelp-application.c:221 +#: ../src/yelp-application.c:230 msgid "Show Text _Cursor" -msgstr "" +msgstr "Vis tekstmar_kør" -#: ../src/yelp-application.c:297 ../src/yelp-main.c:386 -#: ../src/yelp-window.c:1000 ../yelp.desktop.in.in.h:2 +#: ../src/yelp-application.c:306 ../src/yelp-window.c:1871 +#: ../yelp.desktop.in.in.h:2 msgid "Help" msgstr "Hjelp" -#: ../src/yelp-application.c:547 +#: ../src/yelp-application.c:572 msgid "" "You do not have PackageKit installed. Package installation links require " "PackageKit." msgstr "" +"Du har ikke installert PackageKit. Lenker for pakkeinstallasjon krever " +"PackageKit." -#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 ../src/yelp-man.c:292 -#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365 -msgid "Page not found" -msgstr "Side ikke funnet" - -#: ../src/yelp-db-print.c:259 ../src/yelp-man.c:293 -#, c-format -msgid "The page %s was not found in the document %s." -msgstr "Siden %s ble ikke funnet i dokument %s." - -#: ../src/yelp-db-print.c:351 ../src/yelp-man.c:386 -#, c-format -msgid "The requested page was not found in the document %s." -msgstr "Etterspurt side ble ikke funnet i dokument %s." - -#: ../src/yelp-db-print.c:392 ../src/yelp-man.c:429 -msgid "File not found" -msgstr "Fil ikke funnet" - -#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 ../src/yelp-man.c:458 -#: ../src/yelp-toc.c:437 -msgid "Could not parse file" -msgstr "Kunne ikke lese fil" - -#: ../src/yelp-error.c:136 -msgid "Could Not Read File" -msgstr "Kunne ikke lese filen" - -#: ../src/yelp-error.c:146 -msgid "No information is available about this error." -msgstr "Ingen informasjon er tilgjengelig om denne feilen." - -#: ../src/yelp-main.c:89 -msgid "Use a private session" -msgstr "Bruk en privat sesjon" - -#: ../src/yelp-main.c:98 -msgid "Define which cache directory to use" -msgstr "Definer hvilken bufferkatalog som skal brukes" - -#. Commandline parsing is done here -#: ../src/yelp-main.c:357 -msgid " GNOME Help Browser" -msgstr "GNOME hjelpleser" - -#: ../src/yelp-man.c:459 -#, c-format -msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed man page." -msgstr "Filen «%s» kunne ikke tolkes fordi den ikke er en velformet manualside." - -#: ../src/yelp-print.c:97 -msgid "Print" -msgstr "Skriv ut" - -#: ../src/yelp-print.c:167 -msgid "Preparing to print" -msgstr "Forbereder utskrift" - -#: ../src/yelp-print.c:261 -msgid "Printing is not supported on this printer" -msgstr "Utskrift er ikke støttet med denne skriveren" - -#: ../src/yelp-print.c:264 -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "Skriver %s støtter ikke postscript utskrift." - -#: ../src/yelp-print.c:366 -msgid "Waiting to print" -msgstr "Venter på å skrive ut" - -#: ../src/yelp-print.c:578 -msgid "An error occurred while printing" -msgstr "Det oppsto en feil under utskrift" - -#: ../src/yelp-print.c:582 -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "Det er ikke mulig å skrive ut dokumentet: %s" - -#: ../src/yelp-search-parser.c:67 -msgid "the GNOME Support Forums" -msgstr "GNOME brukerforum" - -#: ../src/yelp-search-parser.c:285 -#, c-format -msgid "No results for \"%s\"" -msgstr "Ingen resultater for «%s»" - -#: ../src/yelp-search-parser.c:286 -msgid "" -"Try using different words to describe the problem you're having or the topic " -"you want help with." -msgstr "" -"Prøv å bruke forskjellige ord til å beskrive problemet du har eller emnet du " -"ønsker hjelp om." - -#: ../src/yelp-search-parser.c:289 -#, c-format -msgid "Search results for \"%s\"" -msgstr "Søkeresultater for «%s»" - -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT -#. -#: ../src/yelp-search-parser.c:303 -#, c-format -msgid "Repeat the search online at %s" -msgstr "Gjenta søket på på nettet: %s" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -#: ../src/yelp-search-parser.c:874 -msgid "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" -msgstr "" -"en:om:er:som:ved:av:kan:kan ikke:dialog:gjør:gjør ikke:forklar:for:fra:få:" -"fra:fikk:når:har:ha:hjelp:hvordan:jeg:i:det:meg:min:på:eller:fortell:det:" -"ting:dette:til:hva:hvor:vil:med:wil ikke:hvorfor:fungere:fungerer" - -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -#: ../src/yelp-search-parser.c:890 -msgid "re" -msgstr "re:" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -#: ../src/yelp-search-parser.c:899 -msgid "ers:er:ing:es:s:'s" -msgstr "ere:er:ing:es:s" - -#: ../src/yelp-search-parser.c:1095 -msgid "No Comment" -msgstr "Ingen kommentar" - -#. Much bigger problems -#: ../src/yelp-search.c:238 -msgid "Search could not be processed" -msgstr "Kunne ikke prosessere søket" - -#: ../src/yelp-search.c:239 -msgid "The requested search could not be processed." -msgstr "Forespurt søk kunne ikke prosesseres." - -#: ../src/yelp-search.c:366 -msgid "Cannot process the search" -msgstr "Kunne ikke prosessere søket" - -#: ../src/yelp-search.c:367 -msgid "The search processor returned invalid results" -msgstr "Søkeprosessoren returnerte ugyldige resultater" - -#: ../src/yelp-toc.c:267 -#, c-format -msgid "The page %s was not found in the TOC." -msgstr "%s-siden ble ikke funnet i innholdsfortegnelsen." - -#: ../src/yelp-toc.c:366 -msgid "The requested page was not found in the TOC." -msgstr "Etterspurt side ble ikke funnet i innholdsfortegnelsen." - -#: ../src/yelp-toc.c:438 -msgid "" -"The TOC file could not be parsed because it is not a well-formed XML " -"document." -msgstr "" -"Innholdsfortegnelsen kunne ikke tolkes fordi den ikke er et velformet XML-" -"dokument." - -#: ../src/yelp-window.c:203 +#: ../src/yelp-window.c:303 msgid "_Page" msgstr "Si_de" -#: ../src/yelp-window.c:204 +#: ../src/yelp-window.c:304 msgid "_View" msgstr "_Visning" -#: ../src/yelp-window.c:205 +#: ../src/yelp-window.c:305 msgid "_Go" msgstr "_Naviger" -#: ../src/yelp-window.c:206 +#: ../src/yelp-window.c:306 msgid "_Bookmarks" msgstr "_Bokmerker" -#: ../src/yelp-window.c:209 +#: ../src/yelp-window.c:309 msgid "_New Window" msgstr "_Nytt vindu" -#: ../src/yelp-window.c:214 +#: ../src/yelp-window.c:314 msgid "_Close" msgstr "_Lukk" -#: ../src/yelp-window.c:219 +#: ../src/yelp-window.c:319 msgid "_Add Bookmark" msgstr "_Legg til bokmerke" -#: ../src/yelp-window.c:224 +#: ../src/yelp-window.c:324 +msgid "_Edit Bookmarks" +msgstr "R_ediger bokmerker" + +#: ../src/yelp-window.c:329 +msgid "Find in Page..." +msgstr "Finn på siden…" + +#: ../src/yelp-window.c:334 ../src/yelp-window.c:575 +msgid "Search..." +msgstr "Søk…" + +#: ../src/yelp-window.c:339 msgid "Open Location" msgstr "Åpne lokasjon" -#: ../src/yelp-window.c:249 +#: ../src/yelp-window.c:369 msgid "Application" msgstr "Program" -#: ../src/yelp-window.c:250 +#: ../src/yelp-window.c:370 msgid "A YelpApplication instance that controls this window" -msgstr "" +msgstr "En YelpApplication-instans som kontrollerer dette vinduet" -#: ../src/yelp-window.c:416 -msgid "Search..." -msgstr "Søk..." +#: ../src/yelp-window.c:647 +msgid "Read Later" +msgstr "Les senere" + +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:859 +#, c-format +msgid "Bookmarks for %s" +msgstr "Bokmerker for %s" + +#: ../src/yelp-window.c:1487 +#, c-format +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "%i treff" +msgstr[1] "%i treff" -#: ../src/yelp-window.c:945 +#: ../src/yelp-window.c:1512 +msgid "No matches" +msgstr "Ingen treff" + +#: ../src/yelp-window.c:1831 msgid "Loading" msgstr "Laster" +#: ../src/yelp-window.c:2064 +msgid "_Open Bookmark" +msgstr "_Åpne bokmerke" + +#: ../src/yelp-window.c:2070 +msgid "Open Bookmark in New _Window" +msgstr "Åpne bokmerke i nytt _vindu" + +#: ../src/yelp-window.c:2079 +msgid "_Remove Bookmark" +msgstr "Fje_rn bokmerke" + #: ../yelp.desktop.in.in.h:1 msgid "Get help with GNOME" msgstr "Få hjelp med GNOME" @@ -1,4 +1,4 @@ -# translation of or.po to Oriya +# translation of yelp.master.or.po to Oriya # Oriya translation of yelp.HEAD.pot. # This file is distributed under the same license as the yelp package. # Copyright (C) 2005 Free Software Foundation,Inc. @@ -11,10 +11,10 @@ # Manoj Kumar Giri <mgiri@redhat.com>, 2008, 2010. msgid "" msgstr "" -"Project-Id-Version: or\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-20 04:08+0000\n" -"PO-Revision-Date: 2010-04-23 18:31+0530\n" +"Project-Id-Version: yelp.master.or\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n" +"POT-Creation-Date: 2010-05-07 16:33+0000\n" +"PO-Revision-Date: 2010-05-11 19:28+0530\n" "Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n" "Language-Team: Oriya <Translation-team-or@lists.sourceforge.net>\n" "MIME-Version: 1.0\n" @@ -77,7 +77,7 @@ msgstr "ସହାୟକ ପୁସ୍ତକ ପୃଷ୍ଠା" #: ../data/man.xml.in.h:11 msgid "Network Audio Sound Functions" -msgstr "ନେଟଓ୍ବାର୍କ ଧ୍ବନୀ ଶବ୍ଦ ଫଳନ" +msgstr "ନେଟୱର୍କ ଧ୍ବନୀ ଶବ୍ଦ ଫଳନ" #: ../data/man.xml.in.h:12 msgid "OpenSSL Applications" @@ -369,7 +369,7 @@ msgstr "କାଲକୁଲେଟର" #: ../data/toc.xml.in.h:20 msgid "Calendar" -msgstr "କାଲେଣ୍ଡର" +msgstr "କ୍ଯାଲେଣ୍ଡର" #: ../data/toc.xml.in.h:21 msgid "Card Games" @@ -421,7 +421,7 @@ msgstr "ତ୍ରୁଟି ନିବାରଣକାରୀ" #: ../data/toc.xml.in.h:33 msgid "Desktop" -msgstr "ଡେସ୍କଟପ୍" +msgstr "ଡେସ୍କଟପ" #: ../data/toc.xml.in.h:34 msgid "Desktop Settings" @@ -526,7 +526,7 @@ msgstr "ଭୂବିଜ୍ଞାନ" #: ../data/toc.xml.in.h:62 msgid "Graphics" -msgstr "ଆଲେଖୀ" +msgstr "ଆଲେଖୀକ" #: ../data/toc.xml.in.h:63 msgid "Guides and manuals for applications that connect to the outside world" @@ -550,7 +550,7 @@ msgstr "କିଛି ମଜା କରନ୍ତୁ" #: ../data/toc.xml.in.h:68 msgid "History" -msgstr "ଇତିହାସ" +msgstr "ପୁରୁଣା ତଥ୍ଯ" #: ../data/toc.xml.in.h:69 msgid "IDEs" @@ -574,7 +574,7 @@ msgstr "ଇଣ୍ଟରନେଟ" #: ../data/toc.xml.in.h:74 msgid "Java" -msgstr "Java" +msgstr "ଜାଭା" #: ../data/toc.xml.in.h:75 msgid "KDE Applications" @@ -691,7 +691,7 @@ msgstr "ଖେଳାଳୀମାନେ" msgid "Presentation Tools" msgstr "ଉପସ୍ଥାପନ ଉପକରଣଗୁଡ଼ିକ" -#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364 +#: ../data/toc.xml.in.h:104 msgid "Printing" msgstr "ମୁଦ୍ରଣ କରୁଅଛି" @@ -754,7 +754,7 @@ msgstr "ଅନୁକ୍ରମିକା" #: ../data/toc.xml.in.h:120 msgid "Settings" -msgstr "ବିନ୍ୟାସ" +msgstr "ବିନ୍ଯାସ" #: ../data/toc.xml.in.h:121 msgid "Settings users can manipulate to make their environment more pleasant" @@ -873,192 +873,45 @@ msgstr "ନୋମ ସହାୟତା ବ୍ରାଉଜରକୁ ସ୍ବାଗ msgid "Word Processors" msgstr "ଶବ୍ଦ ସଂସାଧକ" -#: ../data/ui/yelp.glade.h:1 -msgid "<b>Accessibility</b>" -msgstr "<b>ଅଭିଗମ୍ଯତା</b>" - -#: ../data/ui/yelp.glade.h:2 -msgid "<b>Fonts</b>" -msgstr "<b>ଅକ୍ଷରରୂପ</b>" - -#: ../data/ui/yelp.glade.h:3 -msgid "Add Bookmark" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ଯୋଗ କରନ୍ତୁ" - -#: ../data/ui/yelp.glade.h:4 -msgid "Bookmarks" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ" - -#: ../data/ui/yelp.glade.h:5 -msgid "C_ase sensitive" -msgstr "ଅକ୍ଷର ନିର୍ଦ୍ଦିଷ୍ଟ (_a)" - -#: ../data/ui/yelp.glade.h:6 -msgid "Find" -msgstr "ଖୋଜନ୍ତୁ" - -#: ../data/ui/yelp.glade.h:7 -msgid "Open Location" -msgstr "ଅବସ୍ଥାନ ଖୋଲନ୍ତୁ" - -#: ../data/ui/yelp.glade.h:8 -msgid "Preferences" -msgstr "ପସନ୍ଦ" - -#: ../data/ui/yelp.glade.h:9 -msgid "Re_name" -msgstr "ନାମ ବଦଳାନ୍ତୁ (_n)" - -#: ../data/ui/yelp.glade.h:10 -msgid "_Bookmarks:" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)" - -#: ../data/ui/yelp.glade.h:11 -msgid "_Browse with caret" -msgstr "କାରେଟ ସହିତ ଖୋଜନ୍ତୁ (_B)" - -#: ../data/ui/yelp.glade.h:12 -msgid "_Find:" -msgstr "ଖୋଜନ୍ତୁ: (_F)" - -#: ../data/ui/yelp.glade.h:13 -msgid "_Fixed width:" -msgstr "ସ୍ଥିର ଓସାର: (_F)" - -#: ../data/ui/yelp.glade.h:14 -msgid "_Location:" -msgstr "ଅବସ୍ଥାନ: (_L)" - -#: ../data/ui/yelp.glade.h:15 -msgid "_Next" -msgstr "ପରବର୍ତ୍ତୀ (_N)" - -#: ../data/ui/yelp.glade.h:16 -msgid "_Previous" -msgstr "ପୂର୍ବବର୍ତ୍ତୀ (_P)" - -#: ../data/ui/yelp.glade.h:17 -msgid "_Title:" -msgstr "ଶୀର୍ଷକ (_T)" - -#: ../data/ui/yelp.glade.h:18 -msgid "_Use system fonts" -msgstr "ତନ୍ତ୍ର ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ (_U)" - -#: ../data/ui/yelp.glade.h:19 -msgid "_Variable width:" -msgstr "ଅସ୍ଥିର ଓସାର: (_V)" - -#: ../data/ui/yelp.glade.h:20 -msgid "_Wrap around" -msgstr "ପରିବେଷ୍ଟନ (_W)" - -#: ../data/yelp.schemas.in.h:1 -msgid "Font for fixed text" -msgstr "ସ୍ଥିର ପାଠ୍ଯ ପାଇଁ ଅକ୍ଷରରୂପ" - -#: ../data/yelp.schemas.in.h:2 -msgid "Font for text" -msgstr "ପାଠ୍ଯ ପାଇଁ ଅକ୍ଷରରୂପ" - -#: ../data/yelp.schemas.in.h:3 -msgid "Font for text with fixed width." -msgstr "ପାଠ୍ଯ ପାଇଁ ସ୍ଥିର ଓସାରର ଅକ୍ଷରରୂପ" - -#: ../data/yelp.schemas.in.h:4 -msgid "Font for text with variable width." -msgstr "ପାଠ୍ଯ ପାଇଁ ଅସ୍ଥିର ଓସାରର ଅକ୍ଷରରୂପ" - -#: ../data/yelp.schemas.in.h:5 -msgid "Use a keyboard-controllable caret when viewing pages." -msgstr "ପୃଷ୍ଠା ଦେଖିଲାବେଳେ ଚାବି ପଟି ଦ୍ବାରା ନିୟନ୍ତ୍ରଣଯୋଗ୍ଯ କାରେଟ ବ୍ଯବହାର କରନ୍ତୁ" - -#: ../data/yelp.schemas.in.h:6 -msgid "Use caret" -msgstr "କାରେଟ ବ୍ଯବହାର କରନ୍ତୁ" - -#: ../data/yelp.schemas.in.h:7 -msgid "Use system fonts" -msgstr "ତନ୍ତ୍ର ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ" - -#: ../data/yelp.schemas.in.h:8 -msgid "Use the default fonts set for the system." -msgstr "ତନ୍ତ୍ର ପାଇଁ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଅକ୍ଷରରୂପ ବ୍ଯବହାର କରନ୍ତୁ." - -#: ../src/yelp-bookmarks.c:150 -msgid "Open Bookmark in New Window" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ନୂଆ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ" - -#: ../src/yelp-bookmarks.c:154 -msgid "Rename Bookmark" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନର ନାମ ବଦଳାନ୍ତୁ" - -#: ../src/yelp-bookmarks.c:158 -msgid "Remove Bookmark" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ କାଢ଼ନ୍ତୁ" - -#: ../src/yelp-bookmarks.c:315 -#, c-format -msgid "A bookmark titled %s already exists for this page." -msgstr "ଏହି ପୃଷ୍ଠା ପାଇଁ %s ନାମକ ଚିହ୍ନିତ ସ୍ଥାନ ପୂର୍ବରୁ ଅଛି." +#: ../libyelp/yelp-bz2-decompressor.c:146 +#: ../libyelp/yelp-lzma-decompressor.c:155 +msgid "Invalid compressed data" +msgstr "" -#: ../src/yelp-bookmarks.c:392 -#, c-format -msgid "A bookmark titled <b>%s</b> already exists for this page." -msgstr "ଏହି ପୃଷ୍ଠା ପାଇଁ <b>%s</b> ନାମକ ଚିହ୍ନିତ ସ୍ଥାନ ପୂର୍ବରୁ ଅଛି." - -#: ../src/yelp-bookmarks.c:405 -msgid "Help Topics" -msgstr "ସାହାଯ୍ଯ ବିଷୟ" - -#: ../src/yelp-bookmarks.c:420 -msgid "Document Sections" -msgstr "ଦଲିଲ ଅଂଶ" - -#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 -#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243 -#: ../src/yelp-info.c:338 ../src/yelp-man.c:292 ../src/yelp-man.c:385 -#: ../src/yelp-toc.c:266 ../src/yelp-toc.c:365 -msgid "Page not found" -msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ" +#: ../libyelp/yelp-bz2-decompressor.c:152 +#: ../libyelp/yelp-lzma-decompressor.c:161 +#, fuzzy +#| msgid "Out of memory" +msgid "Not enough memory" +msgstr "ଯଥେଷ୍ଟ ସ୍ମ୍ରୁତି ନାହିଁ" -#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244 -#: ../src/yelp-man.c:293 -#, c-format -msgid "The page %s was not found in the document %s." +#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233 +#: ../libyelp/yelp-mallard-document.c:254 +#: ../libyelp/yelp-mallard-document.c:391 +#, fuzzy, c-format +#| msgid "The page %s was not found in the document %s." +msgid "The page ‘%s’ was not found in the document ‘%s’." msgstr "ଦଲିଲ %s ରେ ପୃଷ୍ଠା %s ମିଳୁନାହିଁ." -#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339 -#: ../src/yelp-man.c:386 -#, c-format -msgid "The requested page was not found in the document %s." -msgstr "ଦଲିଲ %s ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ." - -#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380 -#: ../src/yelp-man.c:429 -msgid "File not found" -msgstr "ଫାଇଲ ମିଳୁନାହିଁ" +#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 +#, fuzzy, c-format +#| msgid "The file ‘%s’ does not exist." +msgid "The file does not exist." +msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ." -#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381 -#: ../src/yelp-man.c:430 +#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 #, c-format msgid "The file ‘%s’ does not exist." msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ." -#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 -#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395 -#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437 -msgid "Could not parse file" -msgstr "ଫାଇଲ ବିଶ୍ଲେଷଣ କରିପାରୁ ନାହିଁଲା ନାହିଁ" - -#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425 +#: ../libyelp/yelp-docbook-document.c:323 #, c-format msgid "" "The file ‘%s’ could not be parsed because it is not a well-formed XML " "document." msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ XML ଦଲିଲ ନୁହଁ." -#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437 +#: ../libyelp/yelp-docbook-document.c:336 #, c-format msgid "" "The file ‘%s’ could not be parsed because one or more of its included files " @@ -1067,449 +920,365 @@ msgstr "" "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏଥିରେ ଅନ୍ତର୍ଭୁକ୍ତ ଥିବା ଏକ ଅଧିକ ଫାଇଲ ସୁନିର୍ମିତ XML ଦଲିଲ " "ନୁହଁ." -#: ../src/yelp-db-print.c:765 ../src/yelp-docbook.c:786 +#: ../libyelp/yelp-docbook-document.c:720 msgid "Unknown" msgstr "ଅଜଣା" -#: ../src/yelp-error.c:132 ../src/yelp-error.c:139 -msgid "Unknown Error" -msgstr "ଅଜଣା ତ୍ରୁଟି" - -#: ../src/yelp-error.c:136 ../src/yelp-window.c:1643 -msgid "Could Not Read File" -msgstr "ଫାଇଲ ପଢ଼ିହେଲା ନାହିଁ" +#: ../libyelp/yelp-docbook-document.c:781 ../libyelp/yelp-info-document.c:309 +#, fuzzy, c-format +#| msgid "The requested page was not found in the document %s." +msgid "The requested page was not found in the document ‘%s’." +msgstr "ଦଲିଲ %s ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ." -#: ../src/yelp-error.c:146 -msgid "No information is available about this error." -msgstr "ଏହି ତ୍ରୁଟି ବିଷୟରେ କୌଣସି ସୂଚନା ଉପଲବ୍ଧ ନାହିଁ।" +#: ../libyelp/yelp-error.c:33 +#, c-format +msgid "An unknown error occurred." +msgstr "" -#: ../src/yelp-info.c:396 +#: ../libyelp/yelp-info-document.c:391 #, c-format msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page." msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ ସୂଚନା ପୃଷ୍ଠା ନୁହଁ." -#: ../src/yelp-io-channel.c:132 -#, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." -msgstr "‘%s’ ଫାଇଲ ପଢ଼ି ଅବସଙ୍କେତିତ କରିହେଲା ନାହିଁ। ସମ୍ଭବ କି ଫାଇଲ ଗୋଟିଏ ଅସହାୟକ ଶୈଲୀରେ ସଂକୁଚିତ।" +#: ../libyelp/yelp-location-entry.c:251 +msgid "Description Column" +msgstr "" -#: ../src/yelp-main.c:91 -msgid "Use a private session" -msgstr "ଗୋଟିଏ ବ୍ଯକ୍ତିଗତ ଅଧିବେଶନକୁ ବ୍ଯବହାର କରନ୍ତୁ" +#: ../libyelp/yelp-location-entry.c:252 +msgid "A column in the model to get descriptions from" +msgstr "" -#: ../src/yelp-main.c:100 -msgid "Define which cache directory to use" -msgstr "କ୍ଯାଶ ଡିରେକ୍ଟୋରିକୁ ବ୍ଯାଖ୍ଯା କରନ୍ତୁ" +#: ../libyelp/yelp-location-entry.c:267 +msgid "Icon Column" +msgstr "" -#. Commandline parsing is done here -#: ../src/yelp-main.c:357 -msgid " GNOME Help Browser" -msgstr " ନୋମ ସାହାଯ୍ଯ ଖୋଜାଳୀ" +#: ../libyelp/yelp-location-entry.c:268 +msgid "A column in the model to get icon names from" +msgstr "" -#: ../src/yelp-main.c:377 ../yelp.desktop.in.in.h:2 -msgid "Help" -msgstr "ସହାୟତା" +#: ../libyelp/yelp-location-entry.c:283 +msgid "Flags Column" +msgstr "" -#: ../src/yelp-man.c:459 -#, c-format -msgid "The file ‘%s’ could not be parsed because it is not a well-formed man page." -msgstr "‘%s’ ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ସୁନିର୍ମିତ ମୂଖ୍ୟ ପୃଷ୍ଠା ନୁହଁ." +#: ../libyelp/yelp-location-entry.c:284 +msgid "A column in the model with YelpLocationEntryFlags flags" +msgstr "" -#: ../src/yelp-print.c:97 -msgid "Print" -msgstr "ମୁଦ୍ରଣ କରନ୍ତୁ" +#: ../libyelp/yelp-location-entry.c:300 +msgid "Enable Search" +msgstr "" -#: ../src/yelp-print.c:167 -msgid "Preparing to print" -msgstr "ମୁଦ୍ରଣ ପାଇଁ ବ୍ଯବସ୍ଥା କରାଯାଉଛି" +#: ../libyelp/yelp-location-entry.c:301 +msgid "Whether the location entry can be used as a search field" +msgstr "" -#: ../src/yelp-print.c:261 -msgid "Printing is not supported on this printer" -msgstr "ଏହି ମୁଦ୍ରଣୀରେ ମୁଦ୍ରଣ ଅସହାୟକ" +#: ../libyelp/yelp-mallard-document.c:294 +#, fuzzy, c-format +#| msgid "The file ‘%s’ does not exist." +msgid "The directory ‘%s’ does not exist." +msgstr "ଡିରେକ୍ଟୋରୀ '%s' ଅବସ୍ଥିତ ନାହିଁ।" -#: ../src/yelp-print.c:264 -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "%s ମୁଦ୍ରଣୀରେ ପୋଷ୍ଟସ୍କ୍ରିପ୍ଟ ମୁଦ୍ରଣକୁ ସମର୍ଥ କରେନାହିଁ।" +#: ../libyelp/yelp-settings.c:146 +#, fuzzy +#| msgid "Settings" +msgid "GtkSettings" +msgstr "ବିନ୍ୟାସ" -#: ../src/yelp-print.c:366 -msgid "Waiting to print" -msgstr "ମୁଦ୍ରଣ ପାଇଁ ଅପେକ୍ଷାରେ" +#: ../libyelp/yelp-settings.c:147 +msgid "A GtkSettings object to get settings from" +msgstr "" -#: ../src/yelp-print.c:578 -msgid "An error occurred while printing" -msgstr "ମୁଦ୍ରଣରେ ତ୍ରୁଟି" +#: ../libyelp/yelp-settings.c:155 +msgid "GtkIconTheme" +msgstr "" -#: ../src/yelp-print.c:582 -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "ଆପଣଙ୍କ ଦଲିଲ ମୁଦ୍ରଣ କରିହେଲା ନାହିଁ: %s" +#: ../libyelp/yelp-settings.c:156 +msgid "A GtkIconTheme object to get icons from" +msgstr "" -#: ../src/yelp-search-parser.c:67 -msgid "the GNOME Support Forums" -msgstr "ନୋମ ସହାୟତା ବିଚାରସ୍ଥଳ" +#: ../libyelp/yelp-settings.c:164 +msgid "Font Adjustment" +msgstr "" -#: ../src/yelp-search-parser.c:285 -#, c-format -msgid "No results for \"%s\"" -msgstr "\"%s\" ପାଇଁ କୌଣସି ଫଳାଫଳ ମିଳିଲା ନାହିଁ" +#: ../libyelp/yelp-settings.c:165 +msgid "A size adjustment to add to font sizes" +msgstr "" -#: ../src/yelp-search-parser.c:286 -msgid "" -"Try using different words to describe the problem you're having or the topic " -"you want help with." +#: ../libyelp/yelp-settings.c:173 +msgid "Show Text Cursor" msgstr "" -"ଆପଣ ସମ୍ମୁଖୀନ ହେଉଥିବା ସମସ୍ଯାକୁ କିମ୍ବା ଆପଣ ଯେଉଁ ବିଷୟ ବସ୍ତୁ ସହିତ ସାହାର୍ଯ୍ଯ କରିବା ପାଇଁ ଚାହୁଁଛନ୍ତି " -"ତାହାକୁ ବର୍ଣ୍ଣନା କରିବା ପାଇଁ ବିଭିନ୍ନ ଶବ୍ଦ ମାନଙ୍କୁ ପ୍ରୟୋଗ କରିବା ପାଇଁ ପ୍ରଚେଷ୍ଟା କରନ୍ତୁ।" -#: ../src/yelp-search-parser.c:289 -#, c-format -msgid "Search results for \"%s\"" -msgstr "\"%s\" ପାଇଁ ଗୋଟିଏ ଫଳାଫଳ ସନ୍ଧାନ କରନ୍ତୁ" - -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT -#. -#: ../src/yelp-search-parser.c:303 -#, c-format -msgid "Repeat the search online at %s" -msgstr "%s ରେ ଅନ-ଲାଇନ ଭାବରେ ପୁଣିଥରେ ସନ୍ଧାନ କରନ୍ତୁ" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -#: ../src/yelp-search-parser.c:874 -msgid "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" +#: ../libyelp/yelp-settings.c:174 +msgid "Show the text cursor or caret for accessibile navigation" msgstr "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" - -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -#: ../src/yelp-search-parser.c:890 -msgid "re" -msgstr "NULL" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -#: ../src/yelp-search-parser.c:899 -msgid "ers:er:ing:es:s:'s" -msgstr "NULL" - -#: ../src/yelp-search-parser.c:1095 -msgid "No Comment" -msgstr "କିଛି ଟିପ୍ପଣୀ ନାହିଁ" - -#. Much bigger problems -#: ../src/yelp-search.c:238 -msgid "Search could not be processed" -msgstr "ସନ୍ଧାନକୁ ସଂସାଧନ କରିହେଲା ନାହିଁ" - -#: ../src/yelp-search.c:239 -msgid "The requested search could not be processed." -msgstr "ଅନୁରୋଧିତ ସନ୍ଧାନଟି ସଂସାଧନ କରିହେଲା ନାହିଁ." - -#: ../src/yelp-search.c:366 -msgid "Cannot process the search" -msgstr "ସନ୍ଧାନକୁ ସଂସାଧନ କରିପାରିଲେ ନାହିଁ" - -#: ../src/yelp-search.c:367 -msgid "The search processor returned invalid results" -msgstr "ସନ୍ଧାନ ସଂସାଧକ ଅବୈଧ ଫଳାଫଳ ଫେରାଇଲା" - -#: ../src/yelp-toc.c:267 -#, c-format -msgid "The page %s was not found in the TOC." -msgstr "TOC ରେ ପୃଷ୍ଠା %s ମିଳିନଥିଲା।" -#: ../src/yelp-toc.c:366 -msgid "The requested page was not found in the TOC." -msgstr "TOC ରେ ଅନୁରୋଧିତ ପୃଷ୍ଠା ମିଳିନଥିଲା।" +#: ../libyelp/yelp-settings.c:182 +msgid "Editor Mode" +msgstr "" -#: ../src/yelp-toc.c:438 -msgid "" -"The TOC file could not be parsed because it is not a well-formed XML " -"document." -msgstr "TOC ଫାଇଲକୁ ବିଶ୍ଳେଷଣ କରିହେଲା ନାହିଁ କାରଣ ଏହା ଏକ ସୁନିର୍ମିତ XML ଦଲିଲ ନୁହଁ." +#: ../libyelp/yelp-settings.c:183 +msgid "Enable features useful to editors" +msgstr "" -#: ../src/yelp-transform.c:80 -msgid "Invalid Stylesheet" +#: ../libyelp/yelp-transform.c:171 +#, fuzzy +#| msgid "Invalid Stylesheet" +msgid "XSLT Stylesheet" msgstr "ଅବୈଧ ଶୈଳୀ ପୃଷ୍ଠା" -#: ../src/yelp-transform.c:81 -#, c-format -msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." -msgstr "XSLT ଶୈଳୀପୃଷ୍ଠା '%s'ଟି ହଜିଯାଇଥାଇପାରେ, ଅଥବା ଏହା ବୈଧ ନୁହଁ." - -#: ../src/yelp-transform.c:112 -msgid "Broken Transformation" -msgstr "ଭଙ୍ଗା ରୂପାନ୍ତରଣ" +#: ../libyelp/yelp-transform.c:172 +msgid "The location of the XSLT stylesheet" +msgstr "" -#: ../src/yelp-transform.c:113 -msgid "An unknown error occurred while attempting to transform the document." -msgstr "ଦଲିଲକୁ ରୂପାନ୍ତରଣ କରିବାକୁ ପ୍ରୟାସ କରିବା ସମୟରେ ଗୋଟିଏ ଅଜଣା ତ୍ରୁଟି ଘଟିଲା." +#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394 +#, fuzzy, c-format +#| msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." +msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." +msgstr "XSLT ଶୈଳୀପୃଷ୍ଠା '%s'ଟି ହଜିଯାଇଥାଇପାରେ, ଅଥବା ଏହା ବୈଧ ନୁହଁ." -#: ../src/yelp-transform.c:373 +#: ../libyelp/yelp-transform.c:528 msgid "No href attribute found on yelp:document\n" msgstr "yelp:ଦଲିଲରେ କୌଣସି href ଗୁଣ ମିଳିଲା ନାହିଁ\n" -#: ../src/yelp-transform.c:388 +#: ../libyelp/yelp-transform.c:543 msgid "Out of memory" msgstr "ଯଥେଷ୍ଟ ସ୍ମ୍ରୁତି ନାହିଁ" -#: ../src/yelp-window.c:304 -msgid "_File" -msgstr "ଫାଇଲ (_F)" +#: ../libyelp/yelp-view.c:94 +#, fuzzy +#| msgid "Print" +msgid "_Print..." +msgstr "ମୂଦ୍ରଣ କରନ୍ତୁ ... (_P)" -#: ../src/yelp-window.c:305 -msgid "_Edit" -msgstr "ସମ୍ପାଦନ (_E)" - -#: ../src/yelp-window.c:306 -msgid "_Go" -msgstr "ଯାଆନ୍ତୁ (_G)" +#: ../libyelp/yelp-view.c:99 +msgid "_Back" +msgstr "ପଛକୁ (_B)" -#: ../src/yelp-window.c:307 -msgid "_Bookmarks" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)" +#: ../libyelp/yelp-view.c:104 +msgid "_Forward" +msgstr "ପରବର୍ତ୍ତୀ (_F)" -#: ../src/yelp-window.c:308 -msgid "_Help" -msgstr "ସାହାଯ୍ଯ (_H)" +#: ../libyelp/yelp-view.c:109 +#, fuzzy +#| msgid "_Previous" +msgid "_Previous Page" +msgstr "ପୂର୍ବବର୍ତ୍ତୀ (_P)" -#: ../src/yelp-window.c:311 -msgid "_New Window" -msgstr "ନୂଆ ୱିଣ୍ଡୋ (_N)" +#: ../libyelp/yelp-view.c:114 +#, fuzzy +#| msgid "_Next" +msgid "_Next Page" +msgstr "ପରବର୍ତ୍ତୀ (_N)" -#: ../src/yelp-window.c:316 -msgid "Print This Document ..." -msgstr "ଏହି ଦଲିଲକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..." +#: ../libyelp/yelp-view.c:317 +#, fuzzy +#| msgid "Yelp" +msgid "Yelp URI" +msgstr "ୟେଲ୍ପ" -#: ../src/yelp-window.c:321 -msgid "Print This Page ..." -msgstr "ଏହି ପୃଷ୍ଠାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..." +#: ../libyelp/yelp-view.c:318 +msgid "A YelpUri with the current location" +msgstr "" -#: ../src/yelp-window.c:326 -msgid "About This Document" -msgstr "ଏହି ଦଲିଲ ବିଷୟରେ" +#: ../libyelp/yelp-view.c:326 +#, fuzzy +#| msgid "Loading..." +msgid "Loading State" +msgstr "ଧାରଣ..." -#: ../src/yelp-window.c:331 -msgid "Open _Location" -msgstr "ଅବସ୍ଥାନ ଖୋଲନ୍ତୁ (_L)" +#: ../libyelp/yelp-view.c:327 +msgid "The loading state of the view" +msgstr "" -#: ../src/yelp-window.c:336 -msgid "_Close Window" -msgstr "ୱିଣ୍ଡୋ ବନ୍ଦ କରନ୍ତୁ (_C)" +#: ../libyelp/yelp-view.c:336 +msgid "Page ID" +msgstr "" -#: ../src/yelp-window.c:342 -msgid "_Copy" -msgstr "ନକଲ (_C)" +#: ../libyelp/yelp-view.c:337 +msgid "The ID of the root page of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:348 -msgid "_Select All" -msgstr "ସବୁ ବାଛନ୍ତୁ (_S)" +#: ../libyelp/yelp-view.c:345 +msgid "Root Title" +msgstr "" -#: ../src/yelp-window.c:353 -msgid "_Find..." -msgstr "ଖୋଜନ୍ତୁ... (_F)" +#: ../libyelp/yelp-view.c:346 +msgid "The title of the root page of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:358 -msgid "Find Pre_vious" -msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_v)" +#: ../libyelp/yelp-view.c:354 +msgid "Page Title" +msgstr "" -#: ../src/yelp-window.c:360 -msgid "Find previous occurrence of the word or phrase" -msgstr "ଶବ୍ଦ ବା ବାକ୍ଯଖଣ୍ଡର ପୂର୍ବବର୍ତ୍ତୀ ଘଟଣା ଖୋଜନ୍ତୁ" +#: ../libyelp/yelp-view.c:355 +msgid "The title of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:363 -msgid "Find Ne_xt" -msgstr "ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_x)" +#: ../libyelp/yelp-view.c:363 +msgid "Page Description" +msgstr "" -#: ../src/yelp-window.c:365 -msgid "Find next occurrence of the word or phrase" -msgstr "ଶବ୍ଦ ବା ବାକ୍ଯଖଣ୍ଡର ପରବର୍ତ୍ତୀ ଘଟଣା ଖୋଜନ୍ତୁ" +#: ../libyelp/yelp-view.c:364 +msgid "The description of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:368 -msgid "_Preferences" -msgstr "ପସନ୍ଦ (_P)" +#: ../libyelp/yelp-view.c:372 +#, fuzzy +#| msgid "Page not found" +msgid "Page Icon" +msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ" -#: ../src/yelp-window.c:373 -msgid "_Reload" -msgstr "ପୁନର୍ଧାରଣ (_R)" +#: ../libyelp/yelp-view.c:373 +msgid "The icon of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:385 -msgid "_Back" -msgstr "ପଛକୁ ଯାଆନ୍ତୁ (_B)" +#: ../libyelp/yelp-view.c:696 +#, c-format +msgid "Could not load a document for ‘%s’" +msgstr "" -#: ../src/yelp-window.c:387 -msgid "Show previous page in history" -msgstr "ଇତିହାସର ପୂର୍ବବର୍ତ୍ତୀ ପୃଷ୍ଠା ଦେଖାନ୍ତୁ" +#: ../libyelp/yelp-view.c:702 +#, c-format +msgid "Could not load a document" +msgstr "" -#: ../src/yelp-window.c:390 -msgid "_Forward" -msgstr "ଆଗକୁ (_F)" +#: ../libyelp/yelp-view.c:769 +#, fuzzy +#| msgid "Page not found" +msgid "Not Found" +msgstr "ପୃଷ୍ଠା ମିଳୁନାହିଁ" -#: ../src/yelp-window.c:392 -msgid "Show next page in history" -msgstr "ଇତିହାସର ପରବର୍ତ୍ତୀ ପୃଷ୍ଠା ଦେଖାନ୍ତୁ" +#: ../libyelp/yelp-view.c:772 +#, fuzzy +#| msgid "Cannot create window" +msgid "Cannot Read" +msgstr "ୱିଣ୍ଡୋ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ" -#: ../src/yelp-window.c:395 -msgid "_Help Topics" -msgstr "ସାହାଯ୍ଯ ବିଷୟ (_H)" +#: ../libyelp/yelp-view.c:778 +msgid "Unknown Error" +msgstr "ଅଜଣା ତ୍ରୁଟି" -#: ../src/yelp-window.c:397 -msgid "Go to the listing of help topics" -msgstr "ସାହାଯ୍ଯ ବିଷୟ ତାଲିକାକୁ ଯାଆନ୍ତୁ" +#: ../libyelp/yelp-view.c:868 +#, fuzzy, c-format +#| msgid "The file ‘%s’ does not exist." +msgid "The URI ‘%s’ does point to a valid page." +msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ." -#: ../src/yelp-window.c:400 -msgid "_Previous Section" -msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଅଂଶ (_P)" +#: ../libyelp/yelp-view.c:876 +#, fuzzy, c-format +#| msgid "The file ‘%s’ does not exist." +msgid "The URI ‘%s’ could not be parsed." +msgstr "ଫାଇଲ '%s' ଅବସ୍ଥିତ ନାହିଁ." -#: ../src/yelp-window.c:405 -msgid "_Next Section" -msgstr "ପରବର୍ତ୍ତୀ ଅଂଶ (_N)" +#: ../src/yelp-application.c:55 +msgid "Turn on editor mode" +msgstr "" -#: ../src/yelp-window.c:410 ../src/yelp-window.c:442 -msgid "_Contents" -msgstr "ସୂଚୀପତ୍ର (_C)" +#: ../src/yelp-application.c:106 +msgid "_Larger Text" +msgstr "" -#: ../src/yelp-window.c:416 -msgid "_Add Bookmark" -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ଯୋଗ କରନ୍ତୁ (_A)" +#: ../src/yelp-application.c:108 +msgid "Increase the size of the text" +msgstr "" -#: ../src/yelp-window.c:421 -msgid "_Edit Bookmarks..." -msgstr "ଚିହ୍ନିତ ସ୍ଥାନ ସମ୍ପାଦନ କରନ୍ତୁ... (_E)" +#: ../src/yelp-application.c:111 +msgid "_Smaller Text" +msgstr "" -#: ../src/yelp-window.c:427 -msgid "_Open Link" -msgstr "ସଂଯୋଗ ଖୋଲନ୍ତୁ (_O)" +#: ../src/yelp-application.c:113 +msgid "Descrease the size of the text" +msgstr "" -#: ../src/yelp-window.c:432 -msgid "Open Link in _New Window" -msgstr "ନୂଆ ୱିଣ୍ଡୋରେ ସଂଯୋଗ ଖୋଲନ୍ତୁ (_N)" +#: ../src/yelp-application.c:221 +msgid "Show Text _Cursor" +msgstr "" -#: ../src/yelp-window.c:437 -msgid "_Copy Link Address" -msgstr "ସଂଯୋଗ ଠିକଣା ନକଲ କରନ୍ତୁ (_C)" +#: ../src/yelp-application.c:297 ../src/yelp-window.c:1353 +#: ../yelp.desktop.in.in.h:2 +msgid "Help" +msgstr "ସହାୟତା" -#: ../src/yelp-window.c:444 -msgid "Help On this application" -msgstr "ଏହି ପ୍ରୟୋଗ ପାଇଁ ସହାୟତା" +#: ../src/yelp-application.c:547 +msgid "" +"You do not have PackageKit installed. Package installation links require " +"PackageKit." +msgstr "" -#: ../src/yelp-window.c:447 -msgid "_About" -msgstr "ବିବରଣୀ (_A)" +#: ../src/yelp-window.c:241 +msgid "_Page" +msgstr "" -#: ../src/yelp-window.c:452 -msgid "Copy _Email Address" -msgstr "ଇ-ଡାକ ଠିକଣା ନକଲ କରନ୍ତୁ (_E)" +#: ../src/yelp-window.c:242 +#, fuzzy +#| msgid "Viewer" +msgid "_View" +msgstr "ଦ୍ରୁଶ୍ଯ (_V)" -#: ../src/yelp-window.c:501 -msgid "Help Browser" -msgstr "ସାହାଯ୍ଯ ଖୋଜାଳୀ" +#: ../src/yelp-window.c:243 +msgid "_Go" +msgstr "ଯାଆନ୍ତୁ (_G)" -#: ../src/yelp-window.c:592 ../src/yelp-window.c:644 ../src/yelp-window.c:1700 -msgid "Loading..." -msgstr "ଧାରଣ..." +#: ../src/yelp-window.c:244 +msgid "_Bookmarks" +msgstr "ଚିହ୍ନିତ ସ୍ଥାନ (_B)" -#: ../src/yelp-window.c:593 ../src/yelp-window.c:645 -msgid "Unknown Page" -msgstr "ଅଜଣା ପୃଷ୍ଠା" +#: ../src/yelp-window.c:247 +msgid "_New Window" +msgstr "ନୂଆ ୱିଣ୍ଡୋ (_N)" -#: ../src/yelp-window.c:1008 ../src/yelp-window.c:1064 -#: ../src/yelp-window.c:1084 -#, c-format -msgid "The requested URI \"%s\" is invalid" -msgstr "ଅନୁରୋଧିତ URI \"%s\"ଟି ଅବୈଧ ଅଟେ" +#: ../src/yelp-window.c:252 +#, fuzzy +#| msgid "Clocks" +msgid "_Close" +msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)" -#: ../src/yelp-window.c:1009 ../src/yelp-window.c:1066 -#: ../src/yelp-window.c:1085 -msgid "Unable to load page" -msgstr "ପୃଷ୍ଠା ଧାରଣ କରିବାରେ ଅସମର୍ଥ" +#: ../src/yelp-window.c:257 +msgid "_Add Bookmark" +msgstr "ବୁକମାର୍କକୁ ଯୋଗ କରନ୍ତୁ (_A)" -#: ../src/yelp-window.c:1079 -msgid "Error executing \"gnome-open\"" -msgstr "\"gnome-ଖୋଲନ୍ତୁ\"କୁ ନିଷ୍ପାଦନ କରିବା ସମୟରେ ତ୍ରୁଟି" +#: ../src/yelp-window.c:262 +#, fuzzy +#| msgid "Print This Page ..." +msgid "Find in Page..." +msgstr "ଏହି ପୃଷ୍ଠାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ ..." -#: ../src/yelp-window.c:1265 -msgid "_Search:" +#: ../src/yelp-window.c:267 ../src/yelp-window.c:482 +#, fuzzy +#| msgid "_Search:" +msgid "Search..." msgstr "ଖୋଜନ୍ତୁ: (_S)" -#: ../src/yelp-window.c:1266 -msgid "Search for other documentation" -msgstr "ଅନ୍ଯ ଦଲିଲିକରଣ ଖୋଜନ୍ତୁ" - -#: ../src/yelp-window.c:1286 -msgid "Cannot create window" -msgstr "ୱିଣ୍ଡୋ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ" - -#: ../src/yelp-window.c:1292 -msgid "Cannot create search component" -msgstr "ଖୋଜା ଯନ୍ତ୍ରାଂଶ ସୃଷ୍ଟି କରିପାରିଲା ନାହିଁ" - -#: ../src/yelp-window.c:1464 -msgid "Fin_d:" -msgstr "ଖୋଜନ୍ତୁ: (_d)" - -#: ../src/yelp-window.c:1486 -msgid "Find _Previous" -msgstr "ପୂର୍ବବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_P)" +#: ../src/yelp-window.c:272 +msgid "Open Location" +msgstr "ଅବସ୍ଥାନକୁ ଖୋଲନ୍ତୁ" -#: ../src/yelp-window.c:1498 -msgid "Find _Next" -msgstr "ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ (_N)" +#: ../src/yelp-window.c:299 +#, fuzzy +#| msgid "Applications" +msgid "Application" +msgstr "ପ୍ରୟୋଗ" -#: ../src/yelp-window.c:1511 -msgid "Phrase not found" -msgstr "ବାକ୍ୟାଂଶ ମିଳିଲା ନାହିଁ" +#: ../src/yelp-window.c:300 +msgid "A YelpApplication instance that controls this window" +msgstr "" -#: ../src/yelp-window.c:1640 +#: ../src/yelp-window.c:995 #, c-format -msgid "" -"The file ‘%s’ could not be read. This file might be missing, or you might " -"not have permissions to read it." -msgstr "‘%s’ ଫାଇଲ ପଢ଼ିହେଲା ନାହିଁ. ଏହି ଫାଇଲ ମିଳୁ ନାହିଁ, ବା ଆପଣଙ୍କର ଏହାକୁ ପଢ଼ିବାର ଅନୁମତି ନାହିଁ." - -#. Note to translators: put here your name (and address) so it -#. * will show up in the "about" box -#: ../src/yelp-window.c:2480 -msgid "translator-credits" -msgstr "Sudhansu <srujanika@yahoo.com>" - -#: ../src/yelp-window.c:2483 -msgid "Yelp" -msgstr "ୟେଲ୍ପ" +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "" +msgstr[1] "" + +#: ../src/yelp-window.c:1020 +msgid "No matches" +msgstr "" -#: ../src/yelp-window.c:2485 -msgid "A documentation browser and viewer for the Gnome Desktop." -msgstr "ନୋମ ଡେକ୍ସଟପ ପାଇଁ ଗୋଟିଏ ଦଲିଲିକରଣ ଖୋଜାଳି ଓ ପ୍ରଦର୍ଶକ." +#: ../src/yelp-window.c:1297 +#, fuzzy +#| msgid "Loading..." +msgid "Loading" +msgstr "ଧାରଣ କରୁଅଛି" #: ../yelp.desktop.in.in.h:1 msgid "Get help with GNOME" @@ -9,8 +9,8 @@ msgid "" msgstr ""
"Project-Id-Version: yelp master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=yelp&component=general\n"
-"POT-Creation-Date: 2010-05-07 04:21+0000\n"
-"PO-Revision-Date: 2010-05-07 13:42+0100\n"
+"POT-Creation-Date: 2010-06-07 15:53+0000\n"
+"PO-Revision-Date: 2010-06-07 19:28+0100\n"
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -907,11 +907,11 @@ msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni pravilnem XML zapisu." msgid "The file ‘%s’ could not be parsed because one or more of its included files is not a well-formed XML document."
msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilnem XML zapisu."
-#: ../libyelp/yelp-docbook-document.c:720
+#: ../libyelp/yelp-docbook-document.c:740
msgid "Unknown"
msgstr "Neznano"
-#: ../libyelp/yelp-docbook-document.c:781
+#: ../libyelp/yelp-docbook-document.c:801
#: ../libyelp/yelp-info-document.c:309
#, c-format
msgid "The requested page was not found in the document ‘%s’."
@@ -927,35 +927,35 @@ msgstr "Prišlo je do neznane napake." msgid "The file ‘%s’ could not be parsed because it is not a well-formed info page."
msgstr "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu info."
-#: ../libyelp/yelp-location-entry.c:251
+#: ../libyelp/yelp-location-entry.c:279
msgid "Description Column"
msgstr "Stolpec opisa"
-#: ../libyelp/yelp-location-entry.c:252
+#: ../libyelp/yelp-location-entry.c:280
msgid "A column in the model to get descriptions from"
msgstr "Stolpec modela, iz katerega naj bodo pridobljeni nizi"
-#: ../libyelp/yelp-location-entry.c:267
+#: ../libyelp/yelp-location-entry.c:295
msgid "Icon Column"
msgstr "Stolpec ikone"
-#: ../libyelp/yelp-location-entry.c:268
+#: ../libyelp/yelp-location-entry.c:296
msgid "A column in the model to get icon names from"
msgstr "Stolpec iz katerega naj se pridobijo imena ikon"
-#: ../libyelp/yelp-location-entry.c:283
+#: ../libyelp/yelp-location-entry.c:311
msgid "Flags Column"
msgstr "Stolpec zastavic"
-#: ../libyelp/yelp-location-entry.c:284
+#: ../libyelp/yelp-location-entry.c:312
msgid "A column in the model with YelpLocationEntryFlags flags"
msgstr "Stolpec z zastavicami YelpLocationEntryFlags"
-#: ../libyelp/yelp-location-entry.c:300
+#: ../libyelp/yelp-location-entry.c:328
msgid "Enable Search"
msgstr "Omogoči iskanje"
-#: ../libyelp/yelp-location-entry.c:301
+#: ../libyelp/yelp-location-entry.c:329
msgid "Whether the location entry can be used as a search field"
msgstr "Ali je vnos mesta mogoče uporabiti v polju iskanja"
@@ -1026,194 +1026,255 @@ msgstr "Ni mogoče najti atributa href v yelp:dokument\n" msgid "Out of memory"
msgstr "Primanjkuje pomnilnika"
-#: ../libyelp/yelp-view.c:92
+#: ../libyelp/yelp-view.c:111
+msgid "_Print..."
+msgstr "Na_tisni ..."
+
+#: ../libyelp/yelp-view.c:116
msgid "_Back"
msgstr "Naza_j"
-#: ../libyelp/yelp-view.c:97
+#: ../libyelp/yelp-view.c:121
msgid "_Forward"
msgstr "_Naprej"
-#: ../libyelp/yelp-view.c:102
+#: ../libyelp/yelp-view.c:126
msgid "_Previous Page"
msgstr "_Predhodna stran"
-#: ../libyelp/yelp-view.c:107
+#: ../libyelp/yelp-view.c:131
msgid "_Next Page"
msgstr "_Naslednja stran"
-#: ../libyelp/yelp-view.c:310
+#: ../libyelp/yelp-view.c:376
msgid "Yelp URI"
msgstr "Naslov URI Yelp"
-#: ../libyelp/yelp-view.c:311
+#: ../libyelp/yelp-view.c:377
msgid "A YelpUri with the current location"
msgstr "Yelp naslov URI s trenutnim mestom"
-#: ../libyelp/yelp-view.c:319
+#: ../libyelp/yelp-view.c:385
msgid "Loading State"
msgstr "Stanje nalaganja"
-#: ../libyelp/yelp-view.c:320
+#: ../libyelp/yelp-view.c:386
msgid "The loading state of the view"
msgstr "Stanje nalaganja pogleda"
-#: ../libyelp/yelp-view.c:329
+#: ../libyelp/yelp-view.c:395
msgid "Page ID"
msgstr "ID strani"
-#: ../libyelp/yelp-view.c:330
-msgid "The ID of the root page of the page being viewew"
-msgstr "ID prikazane korenske strani"
+#: ../libyelp/yelp-view.c:396
+msgid "The ID of the root page of the page being viewed"
+msgstr "ID korenske strani prikazane strani"
-#: ../libyelp/yelp-view.c:338
+#: ../libyelp/yelp-view.c:404
msgid "Root Title"
msgstr "Naslov korena"
-#: ../libyelp/yelp-view.c:339
-msgid "The title of the root page of the page being viewew"
+#: ../libyelp/yelp-view.c:405
+msgid "The title of the root page of the page being viewed"
msgstr "Naslov korenske strani prikazane strani"
-#: ../libyelp/yelp-view.c:347
+#: ../libyelp/yelp-view.c:413
msgid "Page Title"
msgstr "Naslov strani"
-#: ../libyelp/yelp-view.c:348
+#: ../libyelp/yelp-view.c:414
msgid "The title of the page being viewed"
msgstr "Naslov prikazane strani"
-#: ../libyelp/yelp-view.c:356
+#: ../libyelp/yelp-view.c:422
msgid "Page Description"
msgstr "Opis strani"
-#: ../libyelp/yelp-view.c:357
+#: ../libyelp/yelp-view.c:423
msgid "The description of the page being viewed"
msgstr "Opis prikazane strani"
-#: ../libyelp/yelp-view.c:365
+#: ../libyelp/yelp-view.c:431
msgid "Page Icon"
msgstr "Ikona strani"
-#: ../libyelp/yelp-view.c:366
+#: ../libyelp/yelp-view.c:432
msgid "The icon of the page being viewed"
msgstr "Ikona trenutne strani"
-#: ../libyelp/yelp-view.c:683
+#: ../libyelp/yelp-view.c:780
+msgid "Save Image"
+msgstr "Shrani sliko"
+
+#. Not using a mnemonic because underscores are common in email
+#. * addresses, and we'd have to escape them. There doesn't seem
+#. * to be a quick GTK+ function for this. In practice, there will
+#. * probably only be one menu item for mailto link popups anyway,
+#. * so the mnemonic's not that big of a deal.
+#.
+#: ../libyelp/yelp-view.c:873
+#, c-format
+msgid "Send email to %s"
+msgstr "Pošlji elektronsko pošto za %s"
+
+#: ../libyelp/yelp-view.c:883
+msgid "_Open Link"
+msgstr "_Odpri povezavo"
+
+#: ../libyelp/yelp-view.c:888
+msgid "Open Link in New _Window"
+msgstr "Odpri povezavo v _novem oknu"
+
+#: ../libyelp/yelp-view.c:930
+msgid "_Save Image As..."
+msgstr "_Shrani sliko kot ..."
+
+#: ../libyelp/yelp-view.c:932
+msgid "_Save Video As..."
+msgstr "_Shrani video kot ..."
+
+#: ../libyelp/yelp-view.c:939
+msgid "S_end Image To..."
+msgstr "Poš_lji sliko na ..."
+
+#: ../libyelp/yelp-view.c:941
+msgid "S_end Video To..."
+msgstr "Poš_lji video na ..."
+
+#: ../libyelp/yelp-view.c:952
+msgid "_Copy Text"
+msgstr "_Kopiraj besedilo"
+
+#: ../libyelp/yelp-view.c:1123
#, c-format
msgid "Could not load a document for ‘%s’"
msgstr "Ni mogoče naložiti dokumenta za ‘%s’"
-#: ../libyelp/yelp-view.c:689
+#: ../libyelp/yelp-view.c:1129
#, c-format
msgid "Could not load a document"
msgstr "Ni mogoče naložiti dokumenta"
-#: ../libyelp/yelp-view.c:756
+#: ../libyelp/yelp-view.c:1196
msgid "Not Found"
msgstr "Ni mogoče najti"
-#: ../libyelp/yelp-view.c:759
+#: ../libyelp/yelp-view.c:1199
msgid "Cannot Read"
msgstr "Ni mogoče brati"
-#: ../libyelp/yelp-view.c:765
+#: ../libyelp/yelp-view.c:1205
msgid "Unknown Error"
msgstr "Neznana napaka"
-#: ../libyelp/yelp-view.c:855
+#: ../libyelp/yelp-view.c:1296
#, c-format
msgid "The URI ‘%s’ does point to a valid page."
msgstr "Naslov URI ‘%s’ ni povezan z veljavno stranjo."
-#: ../libyelp/yelp-view.c:863
+#: ../libyelp/yelp-view.c:1304
#, c-format
msgid "The URI ‘%s’ could not be parsed."
msgstr "Naslova URI ‘%s’ ni mogoče razčleniti"
-#: ../src/yelp-application.c:55
+#: ../src/yelp-application.c:56
msgid "Turn on editor mode"
msgstr "Omogoči urejevalni način"
-#: ../src/yelp-application.c:106
+#: ../src/yelp-application.c:107
msgid "_Larger Text"
msgstr "_Večje besedilo"
-#: ../src/yelp-application.c:108
+#: ../src/yelp-application.c:109
msgid "Increase the size of the text"
msgstr "Povečaj velikost besedila"
-#: ../src/yelp-application.c:111
+#: ../src/yelp-application.c:112
msgid "_Smaller Text"
msgstr "_Manjše besedilo"
-#: ../src/yelp-application.c:113
+#: ../src/yelp-application.c:114
msgid "Descrease the size of the text"
msgstr "Pomanjšaj velikost besedila"
-#: ../src/yelp-application.c:221
+#: ../src/yelp-application.c:230
msgid "Show Text _Cursor"
msgstr "Pokaži _kazalnik besedila"
-#: ../src/yelp-application.c:297
-#: ../src/yelp-window.c:1351
+#: ../src/yelp-application.c:306
+#: ../src/yelp-window.c:1841
#: ../yelp.desktop.in.in.h:2
msgid "Help"
msgstr "Pomoč"
-#: ../src/yelp-application.c:547
+#: ../src/yelp-application.c:572
msgid "You do not have PackageKit installed. Package installation links require PackageKit."
msgstr "PackageKit ni nameščen. Povezave za nameščanje zahtevajo paket PackageKit."
-#: ../src/yelp-window.c:239
+#: ../src/yelp-window.c:298
msgid "_Page"
msgstr "_Stran"
-#: ../src/yelp-window.c:240
+#: ../src/yelp-window.c:299
msgid "_View"
msgstr "_Pogled"
-#: ../src/yelp-window.c:241
+#: ../src/yelp-window.c:300
msgid "_Go"
msgstr "Po_jdi"
-#: ../src/yelp-window.c:242
+#: ../src/yelp-window.c:301
msgid "_Bookmarks"
msgstr "_Zaznamki"
-#: ../src/yelp-window.c:245
+#: ../src/yelp-window.c:304
msgid "_New Window"
msgstr "_Novo okno"
-#: ../src/yelp-window.c:250
+#: ../src/yelp-window.c:309
msgid "_Close"
msgstr "_Zapri"
-#: ../src/yelp-window.c:255
+#: ../src/yelp-window.c:314
msgid "_Add Bookmark"
msgstr "_Dodaj zaznamek"
-#: ../src/yelp-window.c:260
+#: ../src/yelp-window.c:319
+msgid "_Edit Bookmarks"
+msgstr "_Uredi zaznamke"
+
+#: ../src/yelp-window.c:324
msgid "Find in Page..."
msgstr "Najdi na strani ..."
-#: ../src/yelp-window.c:265
-#: ../src/yelp-window.c:480
+#: ../src/yelp-window.c:329
+#: ../src/yelp-window.c:569
msgid "Search..."
msgstr "Poišči ..."
-#: ../src/yelp-window.c:270
+#: ../src/yelp-window.c:334
msgid "Open Location"
msgstr "Odpri mesto"
-#: ../src/yelp-window.c:297
+#: ../src/yelp-window.c:363
msgid "Application"
msgstr "Program"
-#: ../src/yelp-window.c:298
+#: ../src/yelp-window.c:364
msgid "A YelpApplication instance that controls this window"
msgstr "Primerek YelpApplication, ki nadzira to okno"
-#: ../src/yelp-window.c:993
+#: ../src/yelp-window.c:641
+msgid "Read Later"
+msgstr "Preberi kasneje"
+
+#. %s will be replaced with the name of a document
+#: ../src/yelp-window.c:829
+#, c-format
+msgid "Bookmarks for %s"
+msgstr "Zaznamki za %s"
+
+#: ../src/yelp-window.c:1457
#, c-format
msgid "%i match"
msgid_plural "%i matches"
@@ -1222,14 +1283,26 @@ msgstr[1] "%i zadetek" msgstr[2] "%i zadetka"
msgstr[3] "%i zadetki"
-#: ../src/yelp-window.c:1018
+#: ../src/yelp-window.c:1482
msgid "No matches"
msgstr "Ni zadetkov"
-#: ../src/yelp-window.c:1295
+#: ../src/yelp-window.c:1801
msgid "Loading"
msgstr "Nalaganje"
+#: ../src/yelp-window.c:2034
+msgid "_Open Bookmark"
+msgstr "_Odpri zaznamek"
+
+#: ../src/yelp-window.c:2040
+msgid "Open Bookmark in New _Window"
+msgstr "Odpri zaznamek v novem _oknu"
+
+#: ../src/yelp-window.c:2049
+msgid "_Remove Bookmark"
+msgstr "_Odstrani zaznamek"
+
#: ../yelp.desktop.in.in.h:1
msgid "Get help with GNOME"
msgstr "Iskanje pomoči namizja GNOME"
@@ -1296,8 +1369,6 @@ msgstr "Iskanje pomoči namizja GNOME" #~ msgstr ""
#~ "Datoteke ‘%s’ ni mogoče razčleniti, ker ni v pravilno oblikovanem zapisu "
#~ "man strani."
-#~ msgid "Print"
-#~ msgstr "Natisni"
#~ msgid "Preparing to print"
#~ msgstr "Priprava na tiskanje"
#~ msgid "Printing is not supported on this printer"
@@ -1354,8 +1425,6 @@ msgstr "Iskanje pomoči namizja GNOME" #~ msgstr ""
#~ "Datoteke kazala ni mogoče razčleniti, ker ni pravilno oblikovana v zapisu "
#~ "XML."
-#~ msgid "Bookmarks"
-#~ msgstr "Zaznamki"
#~ msgid "Re_name"
#~ msgstr "Preime_nuj"
#~ msgid "_Bookmarks:"
@@ -1394,12 +1463,6 @@ msgstr "Iskanje pomoči namizja GNOME" #~ msgstr "Uporabi sistemske pisave"
#~ msgid "Use the default fonts set for the system."
#~ msgstr "Uporabi privzete pisave za sistem."
-#~ msgid "Open Bookmark in New Window"
-#~ msgstr "Odpri zaznamek v novem oknu"
-#~ msgid "Rename Bookmark"
-#~ msgstr "Preimenuj zaznamek"
-#~ msgid "Remove Bookmark"
-#~ msgstr "Odstrani zaznamek"
#~ msgid "A bookmark titled %s already exists for this page."
#~ msgstr "Zaznamek z imenom %s za to stran že obstaja."
#~ msgid "A bookmark titled <b>%s</b> already exists for this page."
@@ -1429,8 +1492,6 @@ msgstr "Iskanje pomoči namizja GNOME" #~ msgstr "Odpri _mesto"
#~ msgid "_Close Window"
#~ msgstr "_Zapri okno"
-#~ msgid "_Copy"
-#~ msgstr "_Kopiraj"
#~ msgid "_Select All"
#~ msgstr "_Izberi vse"
#~ msgid "_Find..."
@@ -1461,12 +1522,6 @@ msgstr "Iskanje pomoči namizja GNOME" #~ msgstr "_Naslednji odsek"
#~ msgid "_Contents"
#~ msgstr "_Vsebina"
-#~ msgid "_Edit Bookmarks..."
-#~ msgstr "_Uredi zaznamke ..."
-#~ msgid "_Open Link"
-#~ msgstr "_Odpri povezavo"
-#~ msgid "Open Link in _New Window"
-#~ msgstr "Odpri povezavo v _novem oknu"
#~ msgid "_Copy Link Address"
#~ msgstr "_Kopiraj naslov povezave"
#~ msgid "Help On this application"
diff --git a/po/zh_CN.po b/po/zh_CN.po index 888a13b6..c77ada2a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,14 +7,16 @@ # Jan2xue <75jan@163.com>, 2003-2004. # Shaodong Di <gnuyhlfh@gmail.com>, 2008. # Aron Xu <happyaron.xu@gmail.com>, 2009. +# Fan Qijiang <fqj1994@linux.com>, 2010. # msgid "" msgstr "" "Project-Id-Version: yelp.HEAD\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-25 18:24+0800\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=yelp&component=general\n" +"POT-Creation-Date: 2010-05-30 15:51+0000\n" "PO-Revision-Date: 2008-02-23 19:51+0800\n" -"Last-Translator: Shaodong Di <gnuyhlfh@gmail.com>\n" +"Last-Translator: Fan Qijiang <fqj1994@linux.com>\n" "Language-Team: Chinese i18n <i18n-zh@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -292,7 +294,7 @@ msgstr "2D 图形" msgid "3D Graphics" msgstr "3D 图形" -#: ../data/toc.xml.in.h:3 ../data/ui/yelp-preferences.ui.h:1 +#: ../data/toc.xml.in.h:3 msgid "Accessibility" msgstr "辅助功能" @@ -684,7 +686,7 @@ msgstr "播放器" msgid "Presentation Tools" msgstr "演示文稿工具" -#: ../data/toc.xml.in.h:104 ../src/yelp-print.c:337 ../src/yelp-print.c:364 +#: ../data/toc.xml.in.h:104 msgid "Printing" msgstr "打印" @@ -866,709 +868,436 @@ msgstr "欢迎使用 GNOME 帮助浏览器" msgid "Word Processors" msgstr "文字处理器" -#: ../data/ui/yelp-bookmarks.ui.h:1 -msgid "Bookmarks" -msgstr "书签" +#: ../libyelp/yelp-bz2-decompressor.c:146 +#: ../libyelp/yelp-lzma-decompressor.c:155 +msgid "Invalid compressed data" +msgstr "无效的压缩数据" -#: ../data/ui/yelp-bookmarks.ui.h:2 -msgid "Re_name" -msgstr "重命名(_N)" - -#: ../data/ui/yelp-bookmarks.ui.h:3 -msgid "_Bookmarks:" -msgstr "书签(_B):" - -#: ../data/ui/yelp-bookmarks-add.ui.h:1 -msgid "Add Bookmark" -msgstr "添加书签" - -#: ../data/ui/yelp-bookmarks-add.ui.h:2 -msgid "_Title:" -msgstr "标题(_T):" - -#: ../data/ui/yelp-open-location.ui.h:1 -msgid "Open Location" -msgstr "打开位置" - -#: ../data/ui/yelp-open-location.ui.h:2 -msgid "_Location:" -msgstr "位置(_L):" - -#: ../data/ui/yelp-preferences.ui.h:2 -msgid "Fonts" -msgstr "字体" - -#: ../data/ui/yelp-preferences.ui.h:3 -msgid "Preferences" -msgstr "首选项" - -#: ../data/ui/yelp-preferences.ui.h:4 -msgid "_Browse with caret" -msgstr "带光标浏览(_B)" - -#: ../data/ui/yelp-preferences.ui.h:5 -msgid "_Fixed width:" -msgstr "等宽(_F):" - -#: ../data/ui/yelp-preferences.ui.h:6 -msgid "_Use system fonts" -msgstr "使用系统字体(_U)" - -#: ../data/ui/yelp-preferences.ui.h:7 -msgid "_Variable width:" -msgstr "非等宽字体(_V):" - -#: ../data/yelp.schemas.in.h:1 -msgid "Font for fixed text" -msgstr "等宽文本字体" - -#: ../data/yelp.schemas.in.h:2 -msgid "Font for text" -msgstr "文本字体" - -#: ../data/yelp.schemas.in.h:3 -msgid "Font for text with fixed width." -msgstr "等宽文本字体。" - -#: ../data/yelp.schemas.in.h:4 -msgid "Font for text with variable width." -msgstr "非等宽文本字体。" - -#: ../data/yelp.schemas.in.h:5 -msgid "Use a keyboard-controllable caret when viewing pages." -msgstr "查看页面时使用键盘控制的光标。" - -#: ../data/yelp.schemas.in.h:6 -msgid "Use caret" -msgstr "使用光标" - -#: ../data/yelp.schemas.in.h:7 -msgid "Use system fonts" -msgstr "使用系统字体" - -#: ../data/yelp.schemas.in.h:8 -msgid "Use the default fonts set for the system." -msgstr "使用系统默认字体设置。" - -#: ../src/eggdesktopfile.c:165 -#, c-format -msgid "File is not a valid .desktop file" -msgstr "该文件不是有效的 .desktop 文件" - -#: ../src/eggdesktopfile.c:188 -#, c-format -msgid "Unrecognized desktop file Version '%s'" -msgstr "无法识别的 desktop 文件版本“%s”" - -#: ../src/eggdesktopfile.c:958 -#, c-format -msgid "Starting %s" -msgstr "正在打开 %s" - -#: ../src/eggdesktopfile.c:1100 -#, c-format -msgid "Application does not accept documents on command line" -msgstr "应用程序不在命令行接受文档" - -#: ../src/eggdesktopfile.c:1168 -#, c-format -msgid "Unrecognized launch option: %d" -msgstr "无法识别的启动选项:%d" - -#: ../src/eggdesktopfile.c:1373 -#, c-format -msgid "Can't pass document URIs to a 'Type=Link' desktop entry" -msgstr "无法向“Type=Link“的桌面项目传递文档 URI" - -#: ../src/eggdesktopfile.c:1392 -#, c-format -msgid "Not a launchable item" -msgstr "不可启动项目" - -#: ../src/eggsmclient.c:225 -msgid "Disable connection to session manager" -msgstr "禁用与会话管理器连接" - -#: ../src/eggsmclient.c:228 -msgid "Specify file containing saved configuration" -msgstr "指定保存配置的文件" - -#: ../src/eggsmclient.c:228 -msgid "FILE" -msgstr "文件" - -#: ../src/eggsmclient.c:231 -msgid "Specify session management ID" -msgstr "指定会话管理 ID" - -#: ../src/eggsmclient.c:231 -msgid "ID" -msgstr "ID" - -#: ../src/eggsmclient.c:252 -msgid "Session management options:" -msgstr "指定会话管理选项:" - -#: ../src/eggsmclient.c:253 -msgid "Show session management options" -msgstr "显示会话管理选项" - -#: ../src/yelp-bookmarks.c:148 -msgid "Open Bookmark in New Window" -msgstr "在新窗口打开书签" - -#: ../src/yelp-bookmarks.c:152 -msgid "Rename Bookmark" -msgstr "重命名书签" - -#: ../src/yelp-bookmarks.c:156 -msgid "Remove Bookmark" -msgstr "删除书签" - -#: ../src/yelp-bookmarks.c:314 -#, c-format -msgid "A bookmark titled %s already exists for this page." -msgstr "此页面已经存在标题为 %s 的书签。" +#: ../libyelp/yelp-bz2-decompressor.c:152 +#: ../libyelp/yelp-lzma-decompressor.c:161 +msgid "Not enough memory" +msgstr "内存不足" -#: ../src/yelp-bookmarks.c:390 -#, c-format -msgid "A bookmark titled <b>%s</b> already exists for this page." -msgstr "此页面已经存在标题为 <b>%s</b> 的书签。" - -#: ../src/yelp-bookmarks.c:403 -msgid "Help Topics" -msgstr "帮助主题" - -#: ../src/yelp-bookmarks.c:418 -msgid "Document Sections" -msgstr "文档章节" - -#: ../src/yelp-db-print.c:258 ../src/yelp-db-print.c:350 -#: ../src/yelp-docbook.c:275 ../src/yelp-docbook.c:367 ../src/yelp-info.c:243 -#: ../src/yelp-info.c:338 ../src/yelp-mallard.c:280 ../src/yelp-man.c:292 -#: ../src/yelp-man.c:385 ../src/yelp-toc.c:266 ../src/yelp-toc.c:365 -msgid "Page not found" -msgstr "页面未找到" - -#: ../src/yelp-db-print.c:259 ../src/yelp-docbook.c:276 ../src/yelp-info.c:244 -#: ../src/yelp-mallard.c:281 ../src/yelp-man.c:293 +#: ../libyelp/yelp-docbook-document.c:264 ../libyelp/yelp-info-document.c:233 +#: ../libyelp/yelp-mallard-document.c:254 +#: ../libyelp/yelp-mallard-document.c:391 #, c-format -msgid "The page %s was not found in the document %s." +msgid "The page ‘%s’ was not found in the document ‘%s’." msgstr "文档 %2$s 中没有找到页面 %1$s。" -#: ../src/yelp-db-print.c:351 ../src/yelp-docbook.c:368 ../src/yelp-info.c:339 -#: ../src/yelp-man.c:386 +#: ../libyelp/yelp-docbook-document.c:298 ../libyelp/yelp-info-document.c:366 #, c-format -msgid "The requested page was not found in the document %s." -msgstr "文档 %s 中没有找到请求的页面。" +msgid "The file does not exist." +msgstr "文件不存在。" -#: ../src/yelp-db-print.c:392 ../src/yelp-docbook.c:410 ../src/yelp-info.c:380 -#: ../src/yelp-man.c:429 -msgid "File not found" -msgstr "文件未找到" - -#: ../src/yelp-db-print.c:393 ../src/yelp-docbook.c:411 ../src/yelp-info.c:381 -#: ../src/yelp-man.c:430 +#: ../libyelp/yelp-docbook-document.c:308 ../libyelp/yelp-info-document.c:376 #, c-format msgid "The file ‘%s’ does not exist." msgstr "文件“%s”不存在。" -#: ../src/yelp-db-print.c:406 ../src/yelp-db-print.c:418 -#: ../src/yelp-docbook.c:424 ../src/yelp-docbook.c:436 ../src/yelp-info.c:395 -#: ../src/yelp-man.c:458 ../src/yelp-toc.c:437 -msgid "Could not parse file" -msgstr "无法解析文件" - -#: ../src/yelp-db-print.c:407 ../src/yelp-docbook.c:425 +#: ../libyelp/yelp-docbook-document.c:323 #, c-format msgid "" "The file ‘%s’ could not be parsed because it is not a well-formed XML " "document." msgstr "无法解析文件“%s”,因为它不是有效的 XML 文档。" -#: ../src/yelp-db-print.c:419 ../src/yelp-docbook.c:437 +#: ../libyelp/yelp-docbook-document.c:336 #, c-format msgid "" "The file ‘%s’ could not be parsed because one or more of its included files " "is not a well-formed XML document." msgstr "无法解析文件“%s”,因为它的一个或多个包含文件不是有效的 XML 文档。" -#: ../src/yelp-db-print.c:766 ../src/yelp-docbook.c:787 +#: ../libyelp/yelp-docbook-document.c:740 msgid "Unknown" msgstr "未知" -#: ../src/yelp-error.c:132 ../src/yelp-error.c:139 -msgid "Unknown Error" -msgstr "未知错误" - -#: ../src/yelp-error.c:136 ../src/yelp-window.c:1710 -msgid "Could Not Read File" -msgstr "无法读取文档" - -#: ../src/yelp-error.c:146 -msgid "No information is available about this error." -msgstr "没有关于此错误的信息。" - -#: ../src/yelp-info.c:396 +#: ../libyelp/yelp-docbook-document.c:801 ../libyelp/yelp-info-document.c:309 #, c-format -msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed info page." -msgstr "无法解析文件“%s”,因为它不是有效的信息页。" +msgid "The requested page was not found in the document ‘%s’." +msgstr "文档“%s”中没有找到请求的页面。" -#: ../src/yelp-io-channel.c:132 +#: ../libyelp/yelp-error.c:33 #, c-format -msgid "" -"The file ‘%s’ could not be read and decoded. The file may be compressed in " -"an unsupported format." -msgstr "无法读取并解码文件“%s”。文件可能以不支持的格式压缩。" +msgid "An unknown error occurred." +msgstr "发生了未知错误。" -#: ../src/yelp-main.c:88 -msgid "Use a private session" -msgstr "使用私有会话" - -#: ../src/yelp-main.c:97 -msgid "Define which cache directory to use" -msgstr "定义要使用哪个缓存目录" - -#. Commandline parsing is done here -#: ../src/yelp-main.c:355 -msgid " GNOME Help Browser" -msgstr " GNOME 帮助浏览器" - -#: ../src/yelp-main.c:384 ../yelp.desktop.in.in.h:2 -msgid "Help" -msgstr "帮助" - -#: ../src/yelp-mallard.c:311 -msgid "Directory not found" -msgstr "目录未找到" - -#: ../src/yelp-mallard.c:312 -#, c-format -msgid "The directory ‘%s’ does not exist." -msgstr "目录“%s”不存在。" - -#: ../src/yelp-man.c:459 +#: ../libyelp/yelp-info-document.c:391 #, c-format msgid "" -"The file ‘%s’ could not be parsed because it is not a well-formed man page." -msgstr "无法解析文件“%s”,因为它不是有效的手册页。" +"The file ‘%s’ could not be parsed because it is not a well-formed info page." +msgstr "无法解析文件“%s”,因为它不是有效的信息页。" -#: ../src/yelp-print.c:97 -msgid "Print" -msgstr "打印" +#: ../libyelp/yelp-location-entry.c:279 +msgid "Description Column" +msgstr "" -#: ../src/yelp-print.c:167 -msgid "Preparing to print" -msgstr "准备打印" +#: ../libyelp/yelp-location-entry.c:280 +msgid "A column in the model to get descriptions from" +msgstr "" -#: ../src/yelp-print.c:261 -msgid "Printing is not supported on this printer" -msgstr "此打印机上目前不支持打印" +#: ../libyelp/yelp-location-entry.c:295 +msgid "Icon Column" +msgstr "" -#: ../src/yelp-print.c:264 -#, c-format -msgid "Printer %s does not support postscript printing." -msgstr "打印机 %s 不支持 PostScript 打印。" +#: ../libyelp/yelp-location-entry.c:296 +msgid "A column in the model to get icon names from" +msgstr "" -#: ../src/yelp-print.c:366 -msgid "Waiting to print" -msgstr "等候打印" +#: ../libyelp/yelp-location-entry.c:311 +msgid "Flags Column" +msgstr "" -#: ../src/yelp-print.c:578 -msgid "An error occurred while printing" -msgstr "打印时发生了错误" +#: ../libyelp/yelp-location-entry.c:312 +msgid "A column in the model with YelpLocationEntryFlags flags" +msgstr "" -#: ../src/yelp-print.c:582 -#, c-format -msgid "It was not possible to print your document: %s" -msgstr "无法打印您的文档:%s" +#: ../libyelp/yelp-location-entry.c:328 +msgid "Enable Search" +msgstr "启用搜索" -#: ../src/yelp-search-parser.c:67 -msgid "the GNOME Support Forums" -msgstr "GNOME 支持论坛" +#: ../libyelp/yelp-location-entry.c:329 +msgid "Whether the location entry can be used as a search field" +msgstr "" -#: ../src/yelp-search-parser.c:285 +#: ../libyelp/yelp-mallard-document.c:294 #, c-format -msgid "No results for \"%s\"" -msgstr "“%s”没有结果" +msgid "The directory ‘%s’ does not exist." +msgstr "目录“%s”不存在。" -#: ../src/yelp-search-parser.c:286 -msgid "" -"Try using different words to describe the problem you're having or the topic " -"you want help with." -msgstr "请试着使用不同的内容来描述您所遇到的问题,或者您想要获得帮助的主题。" +#: ../libyelp/yelp-settings.c:146 +msgid "GtkSettings" +msgstr "GtkSettings" -#: ../src/yelp-search-parser.c:289 -#, c-format -msgid "Search results for \"%s\"" -msgstr "“%s”的搜索结果" +#: ../libyelp/yelp-settings.c:147 +msgid "A GtkSettings object to get settings from" +msgstr "" -#. TRANSLATORS: Please don't do anything funny with the -#. * format arguement. It isn't really going through a printf -#. * The %s is used to indicate where the name of the site (linked) -#. * should be. This is done in the XSLT -#. -#: ../src/yelp-search-parser.c:303 -#, c-format -msgid "Repeat the search online at %s" -msgstr "在 %s 再搜索一次" - -#. Translators: Do not translate this list exactly. These are -#. * colon-separated words that aren't useful for choosing search -#. * results; they will be different for each language. Include -#. * pronouns, articles, very common verbs and prepositions, -#. * words from question structures like "tell me about" and -#. * "how do I", and words for functional states like "not", -#. * "work", and "broken". -#. -#: ../src/yelp-search-parser.c:874 -msgid "" -"a:about:an:are:as:at:be:broke:broken:by:can:can't:dialog:dialogue:do:doesn't:" -"doesnt:don't:dont:explain:for:from:get:gets:got:make:makes:not:when:has:have:" -"help:how:i:in:is:it:item:me:my:of:on:or:tell:that:the:thing:this:to:what:" -"where:who:will:with:won't:wont:why:work:working:works" -msgstr "的:地:得:怎么:跪:求:大人:达人:帮忙:怎样:个:顶:为什么" - -#. Translators: This is a list of common prefixes for words. -#. * Do not translate this directly. Instead, use a colon -#. * seperated list of word-starts. In English, an example -#. * is re-. If there is none, please use the term NULL -#. * If there is only one, please put a colon after. -#. * E.g. if the common prefix is re then the string would be -#. * "re:" -#. -#: ../src/yelp-search-parser.c:890 -msgid "re" -msgstr "答复:回:回复" - -#. Translators: This is a list of (guess what?) common suffixes -#. * to words. Things that may be put at ends of words to slightly -#. * alter their meaning (like -ing and -s in English). This is a -#. * colon seperated list (I like colons). If there are none, -#. * please use the string NULL. If there is only 1, please -#. * add a colon at the end of the list -#. -#: ../src/yelp-search-parser.c:899 -msgid "ers:er:ing:es:s:'s" -msgstr "啊:阿:哪:吧:呢:么:撒" +#: ../libyelp/yelp-settings.c:155 +msgid "GtkIconTheme" +msgstr "" -#: ../src/yelp-search-parser.c:1095 -msgid "No Comment" -msgstr "没有评论" +#: ../libyelp/yelp-settings.c:156 +msgid "A GtkIconTheme object to get icons from" +msgstr "" -#. Much bigger problems -#: ../src/yelp-search.c:238 -msgid "Search could not be processed" -msgstr "无法进行搜索" +#: ../libyelp/yelp-settings.c:164 +msgid "Font Adjustment" +msgstr "" -#: ../src/yelp-search.c:239 -msgid "The requested search could not be processed." -msgstr "无法处理请求的搜索" +#: ../libyelp/yelp-settings.c:165 +msgid "A size adjustment to add to font sizes" +msgstr "" -#: ../src/yelp-search.c:366 -msgid "Cannot process the search" -msgstr "无法处理搜索" +#: ../libyelp/yelp-settings.c:173 +msgid "Show Text Cursor" +msgstr "显示文本光标" -#: ../src/yelp-search.c:367 -msgid "The search processor returned invalid results" -msgstr "搜索处理器返回无效的搜索结果" +#: ../libyelp/yelp-settings.c:174 +msgid "Show the text cursor or caret for accessibile navigation" +msgstr "" -#: ../src/yelp-toc.c:267 -#, c-format -msgid "The page %s was not found in the TOC." -msgstr "TOC 中未找到页面 %s 。" +#: ../libyelp/yelp-settings.c:182 +msgid "Editor Mode" +msgstr "编辑器模式" -#: ../src/yelp-toc.c:366 -msgid "The requested page was not found in the TOC." -msgstr "TOC 中未找到请求的页面。" +#: ../libyelp/yelp-settings.c:183 +msgid "Enable features useful to editors" +msgstr "" -#: ../src/yelp-toc.c:438 -msgid "" -"The TOC file could not be parsed because it is not a well-formed XML " -"document." -msgstr "无法解析 TOC 文件,因为它不是有效的 XML 文档。" +#: ../libyelp/yelp-transform.c:171 +msgid "XSLT Stylesheet" +msgstr "XSLT 样式表" -#: ../src/yelp-transform.c:86 -msgid "Invalid Stylesheet" -msgstr "无效样式表" +#: ../libyelp/yelp-transform.c:172 +msgid "The location of the XSLT stylesheet" +msgstr "XSLT 样式表的位置" -#: ../src/yelp-transform.c:87 +#: ../libyelp/yelp-transform.c:379 ../libyelp/yelp-transform.c:394 #, c-format -msgid "The XSLT stylesheet ‘%s’ is either missing, or it is not valid." +msgid "The XSLT stylesheet ‘%s’ is either missing or not valid." msgstr "XSLT 样式表“%s”可能不存在,或无效。" -#: ../src/yelp-transform.c:122 -msgid "Broken Transformation" -msgstr "无效转换" - -#: ../src/yelp-transform.c:123 -msgid "An unknown error occurred while attempting to transform the document." -msgstr "尝试转换文档格式时发生了未知错误" - -#: ../src/yelp-transform.c:389 +#: ../libyelp/yelp-transform.c:528 msgid "No href attribute found on yelp:document\n" msgstr "在 yelp:document 中未发现 href 属性\n" -#: ../src/yelp-transform.c:404 +#: ../libyelp/yelp-transform.c:543 msgid "Out of memory" msgstr "内存不足" -#: ../src/yelp-window.c:304 -msgid "_File" -msgstr "文件(_F)" +#: ../libyelp/yelp-view.c:111 +msgid "_Print..." +msgstr "打印(_P)..." -#: ../src/yelp-window.c:305 -msgid "_Edit" -msgstr "编辑(_E)" +#: ../libyelp/yelp-view.c:116 +msgid "_Back" +msgstr "后退(_B)" -#: ../src/yelp-window.c:306 -msgid "_Go" -msgstr "转到(_G)" +#: ../libyelp/yelp-view.c:121 +msgid "_Forward" +msgstr "前进(_F)" -#: ../src/yelp-window.c:307 -msgid "_Bookmarks" -msgstr "书签(_B)" +#: ../libyelp/yelp-view.c:126 +msgid "_Previous Page" +msgstr "上一页(_P)" -#: ../src/yelp-window.c:308 -msgid "_Help" -msgstr "帮助(_H)" +#: ../libyelp/yelp-view.c:131 +msgid "_Next Page" +msgstr "下一页(_N)" -#: ../src/yelp-window.c:311 -msgid "_New Window" -msgstr "新建窗口(_N)" +#: ../libyelp/yelp-view.c:367 +msgid "Yelp URI" +msgstr "" -#: ../src/yelp-window.c:316 -msgid "Print This Document ..." -msgstr "打印此文档..." +#: ../libyelp/yelp-view.c:368 +msgid "A YelpUri with the current location" +msgstr "" -#: ../src/yelp-window.c:321 -msgid "Print This Page ..." -msgstr "打印此页..." +#: ../libyelp/yelp-view.c:376 +msgid "Loading State" +msgstr "正在装入状态" -#: ../src/yelp-window.c:326 -msgid "About This Document" -msgstr "关于此文档" +#: ../libyelp/yelp-view.c:377 +msgid "The loading state of the view" +msgstr "" -#: ../src/yelp-window.c:331 -msgid "Open _Location" -msgstr "打开位置(_L)" +#: ../libyelp/yelp-view.c:386 +msgid "Page ID" +msgstr "页面编号" -#: ../src/yelp-window.c:336 -msgid "_Close Window" -msgstr "关闭窗口(_C)" +#: ../libyelp/yelp-view.c:387 +msgid "The ID of the root page of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:342 -msgid "_Copy" -msgstr "复制(_C)" +#: ../libyelp/yelp-view.c:395 +msgid "Root Title" +msgstr "" -#: ../src/yelp-window.c:348 -msgid "_Select All" -msgstr "全选(_S)" +#: ../libyelp/yelp-view.c:396 +msgid "The title of the root page of the page being viewed" +msgstr "" -#: ../src/yelp-window.c:353 -msgid "_Find..." -msgstr "查找(_F)..." +#: ../libyelp/yelp-view.c:404 +msgid "Page Title" +msgstr "页面标题" -#: ../src/yelp-window.c:358 -msgid "Find Pre_vious" -msgstr "查找上一个(_V)" +#: ../libyelp/yelp-view.c:405 +msgid "The title of the page being viewed" +msgstr "正在被阅览的页面的标题" -#: ../src/yelp-window.c:360 -msgid "Find previous occurrence of the word or phrase" -msgstr "查找单词或短语的上次出现" +#: ../libyelp/yelp-view.c:413 +msgid "Page Description" +msgstr "页面描述" -#: ../src/yelp-window.c:363 -msgid "Find Ne_xt" -msgstr "查找下一个(_X)" +#: ../libyelp/yelp-view.c:414 +msgid "The description of the page being viewed" +msgstr "正在被阅览的页面的描述" -#: ../src/yelp-window.c:365 -msgid "Find next occurrence of the word or phrase" -msgstr "查找单词或短语的下次出现" +#: ../libyelp/yelp-view.c:422 +msgid "Page Icon" +msgstr "页面图标" -#: ../src/yelp-window.c:368 -msgid "_Preferences" -msgstr "首选项(_P)" +#: ../libyelp/yelp-view.c:423 +msgid "The icon of the page being viewed" +msgstr "正在被阅览的页面的图标" -#: ../src/yelp-window.c:373 -msgid "_Reload" -msgstr "重新装入(_R)" +#: ../libyelp/yelp-view.c:733 +msgid "Save Image" +msgstr "保存图像" -#: ../src/yelp-window.c:385 -msgid "_Back" -msgstr "后退(_B)" +#. Not using a mnemonic because underscores are common in email +#. * addresses, and we'd have to escape them. There doesn't seem +#. * to be a quick GTK+ function for this. In practice, there will +#. * probably only be one menu item for mailto link popups anyway, +#. * so the mnemonic's not that big of a deal. +#. +#: ../libyelp/yelp-view.c:822 +#, c-format +msgid "Send email to %s" +msgstr "给 %s 发送电子邮件" -#: ../src/yelp-window.c:387 -msgid "Show previous page in history" -msgstr "显示历史中的上一页" +#: ../libyelp/yelp-view.c:830 +msgid "_Open Link" +msgstr "打开链接(_O)" -#: ../src/yelp-window.c:390 -msgid "_Forward" -msgstr "前进(_F)" +#: ../libyelp/yelp-view.c:835 +msgid "Open Link in New _Window" +msgstr "在新窗口打开链接(_W)" -#: ../src/yelp-window.c:392 -msgid "Show next page in history" -msgstr "显示历史中的下一页" +#: ../libyelp/yelp-view.c:871 +msgid "_Save Image As..." +msgstr "图像另存为(_S)..." -#: ../src/yelp-window.c:395 -msgid "_Help Topics" -msgstr "帮助主题(_H)" +#: ../libyelp/yelp-view.c:873 +msgid "_Save Video As..." +msgstr "视频另存为(_S)..." -#: ../src/yelp-window.c:397 -msgid "Go to the listing of help topics" -msgstr "转到帮助主题列表" +#: ../libyelp/yelp-view.c:880 +msgid "S_end Image To..." +msgstr "图像发送到(_E)..." -#: ../src/yelp-window.c:400 -msgid "_Previous Section" -msgstr "上一节(_P)" +#: ../libyelp/yelp-view.c:882 +msgid "S_end Video To..." +msgstr "视频发送到(_E)..." -#: ../src/yelp-window.c:405 -msgid "_Next Section" -msgstr "下一节(_N)" +#: ../libyelp/yelp-view.c:893 +msgid "_Copy Text" +msgstr "复制文本(_C)" -#: ../src/yelp-window.c:410 ../src/yelp-window.c:442 -msgid "_Contents" -msgstr "目录(_C)" +#: ../libyelp/yelp-view.c:1064 +#, c-format +msgid "Could not load a document for ‘%s’" +msgstr "无法加载“%s”的文档" -#: ../src/yelp-window.c:416 -msgid "_Add Bookmark" -msgstr "添加书签(_A)" +#: ../libyelp/yelp-view.c:1070 +#, c-format +msgid "Could not load a document" +msgstr "无法加载文档" -#: ../src/yelp-window.c:421 -msgid "_Edit Bookmarks..." -msgstr "编辑书签(_E)..." +#: ../libyelp/yelp-view.c:1137 +msgid "Not Found" +msgstr "未找到" -#: ../src/yelp-window.c:427 -msgid "_Open Link" -msgstr "打开链接(_O)" +#: ../libyelp/yelp-view.c:1140 +msgid "Cannot Read" +msgstr "不可读" -#: ../src/yelp-window.c:432 -msgid "Open Link in _New Window" -msgstr "在新窗口打开链接(_N)" +#: ../libyelp/yelp-view.c:1146 +msgid "Unknown Error" +msgstr "未知错误" -#: ../src/yelp-window.c:437 -msgid "_Copy Link Address" -msgstr "复制链接地址(_C)" +#: ../libyelp/yelp-view.c:1237 +#, c-format +msgid "The URI ‘%s’ does point to a valid page." +msgstr "URI“%s”指向一个有效的页面。" -#: ../src/yelp-window.c:444 -msgid "Help On this application" -msgstr "关于此应用程序的帮助" +#: ../libyelp/yelp-view.c:1245 +#, c-format +msgid "The URI ‘%s’ could not be parsed." +msgstr "URI“%s”无法解析。" -#: ../src/yelp-window.c:447 -msgid "_About" -msgstr "关于(_A)" +#: ../src/yelp-application.c:55 +msgid "Turn on editor mode" +msgstr "打开编辑器模式" -#: ../src/yelp-window.c:452 -msgid "Copy _Email Address" -msgstr "复制电子邮件地址(_E)" +#: ../src/yelp-application.c:106 +msgid "_Larger Text" +msgstr "更大字体(_L)" -#: ../src/yelp-window.c:524 -msgid "Help Browser" -msgstr "帮助浏览器" +#: ../src/yelp-application.c:108 +msgid "Increase the size of the text" +msgstr "增大文本大小" -#: ../src/yelp-window.c:619 ../src/yelp-window.c:671 ../src/yelp-window.c:1772 -msgid "Loading..." -msgstr "正在装入..." +#: ../src/yelp-application.c:111 +msgid "_Smaller Text" +msgstr "更小字体(_S)" -#: ../src/yelp-window.c:620 ../src/yelp-window.c:672 -msgid "Unknown Page" -msgstr "未知页面" +#: ../src/yelp-application.c:113 +msgid "Descrease the size of the text" +msgstr "减小文本大小" -#: ../src/yelp-window.c:1042 ../src/yelp-window.c:1104 -#: ../src/yelp-window.c:1113 -#, c-format -msgid "The requested URI \"%s\" is invalid" -msgstr "请求的URI “%s”无效" +#: ../src/yelp-application.c:221 +msgid "Show Text _Cursor" +msgstr "显示文本光标(_C)" + +#: ../src/yelp-application.c:297 ../src/yelp-window.c:1665 +#: ../yelp.desktop.in.in.h:2 +msgid "Help" +msgstr "帮助" -#: ../src/yelp-window.c:1043 ../src/yelp-window.c:1106 -#: ../src/yelp-window.c:1114 -msgid "Unable to load page" -msgstr "无法加载页面" +#: ../src/yelp-application.c:563 +msgid "" +"You do not have PackageKit installed. Package installation links require " +"PackageKit." +msgstr "您没有安装 PackageKit。包安装链接需要 PackageKit。" -#: ../src/yelp-window.c:1330 -msgid "_Search:" -msgstr "搜索(_S):" +#: ../src/yelp-window.c:289 +msgid "_Page" +msgstr "页面(_P)" -#: ../src/yelp-window.c:1331 -msgid "Search for other documentation" -msgstr "搜索其它文档" +#: ../src/yelp-window.c:290 +msgid "_View" +msgstr "查看(_V)" -#: ../src/yelp-window.c:1351 -msgid "Cannot create window" -msgstr "无法创建窗口" +#: ../src/yelp-window.c:291 +msgid "_Go" +msgstr "转到(_G)" -#: ../src/yelp-window.c:1357 -msgid "Cannot create search component" -msgstr "无法创建搜索组件" +#: ../src/yelp-window.c:292 +msgid "_Bookmarks" +msgstr "书签(_B)" -#: ../src/yelp-window.c:1529 -msgid "Fin_d:" -msgstr "查找(_D):" +#: ../src/yelp-window.c:295 +msgid "_New Window" +msgstr "新建窗口(_N)" -#: ../src/yelp-window.c:1551 -msgid "Find _Previous" -msgstr "查找上一个(_P)" +#: ../src/yelp-window.c:300 +msgid "_Close" +msgstr "关闭(_C)" -#: ../src/yelp-window.c:1563 -msgid "Find _Next" -msgstr "查找下一个(_N)" +#: ../src/yelp-window.c:305 +msgid "_Add Bookmark" +msgstr "添加书签(_A)" -#: ../src/yelp-window.c:1576 -msgid "Phrase not found" -msgstr "未找到词组" +#: ../src/yelp-window.c:310 +msgid "_Edit Bookmarks" +msgstr "编辑书签(_E)" -#: ../src/yelp-window.c:1707 -#, c-format -msgid "" -"The file ‘%s’ could not be read. This file might be missing, or you might " -"not have permissions to read it." -msgstr "无法读取文件“%s”。文件可能已经损坏,或者您没有权限读取该文件。" - -#. Note to translators: put here your name (and address) so it -#. * will show up in the "about" box -#: ../src/yelp-window.c:2577 -msgid "translator-credits" -msgstr "" -"Zipeco <Zipeco@btamail.net.cn>, 2002\n" -"Funda Wang <fundawang@linux.net.cn>, 2003, 2005\n" -"Jan2xue <75jan@163.com>, 2003-2004\n" -"Aron Xu <happyaron.xu@gmail.com>" +#: ../src/yelp-window.c:315 +msgid "Find in Page..." +msgstr "在页面中查找..." -#: ../src/yelp-window.c:2580 -msgid "Yelp" -msgstr "Yelp" +#: ../src/yelp-window.c:320 ../src/yelp-window.c:542 +msgid "Search..." +msgstr "搜索..." -#: ../src/yelp-window.c:2582 -msgid "A documentation browser and viewer for the Gnome Desktop." -msgstr "Gnome 桌面的文档浏览器和阅读器。" +#: ../src/yelp-window.c:325 +msgid "Open Location" +msgstr "打开位置" -#: ../yelp.desktop.in.in.h:1 -msgid "Get help with GNOME" -msgstr "获得 GNOME 的帮助" +#: ../src/yelp-window.c:352 +msgid "Application" +msgstr "应用程序" -#~ msgid "<b>Accessibility</b>" -#~ msgstr "<b>辅助功能</b>" +#: ../src/yelp-window.c:353 +msgid "A YelpApplication instance that controls this window" +msgstr "" -#~ msgid "<b>Fonts</b>" -#~ msgstr "<b>字体</b>" +#. %s will be replaced with the name of a document +#: ../src/yelp-window.c:785 +#, c-format +msgid "Bookmarks for %s" +msgstr "%s 的书签" -#~ msgid "C_ase sensitive" -#~ msgstr "大小写敏感(_A)" +#: ../src/yelp-window.c:1283 +#, c-format +msgid "%i match" +msgid_plural "%i matches" +msgstr[0] "" +msgstr[1] "" -#~ msgid "Find" -#~ msgstr "查找" +#: ../src/yelp-window.c:1308 +msgid "No matches" +msgstr "找不到匹配" -#~ msgid "_Find:" -#~ msgstr "查找(_F):" +#: ../src/yelp-window.c:1625 +msgid "Loading" +msgstr "正在装入" -#~ msgid "_Next" -#~ msgstr "下一页(_N)" +#: ../src/yelp-window.c:1858 +msgid "_Open Bookmark" +msgstr "打开书签(_O)" -#~ msgid "_Previous" -#~ msgstr "上一页(_P)" +#: ../src/yelp-window.c:1864 +msgid "Open Bookmark in New _Window" +msgstr "在新窗口打开书签(_W)" -#~ msgid "_Wrap around" -#~ msgstr "自动换行(_W)" +#: ../src/yelp-window.c:1873 +msgid "_Remove Bookmark" +msgstr "删除书签(_R)" -#~ msgid "Error executing \"gnome-open\"" -#~ msgstr "执行 “gnome-open” 时出错" +#: ../yelp.desktop.in.in.h:1 +msgid "Get help with GNOME" +msgstr "获得 GNOME 的帮助" diff --git a/src/yelp-application.c b/src/yelp-application.c index 3a6679c1..6339f374 100644 --- a/src/yelp-application.c +++ b/src/yelp-application.c @@ -47,6 +47,7 @@ static gboolean editor_mode = FALSE; enum { BOOKMARKS_CHANGED, + READ_LATER_CHANGED, LAST_SIGNAL }; static gint signals[LAST_SIGNAL] = { 0 }; @@ -59,7 +60,7 @@ static const GOptionEntry entries[] = { typedef struct _YelpApplicationLoad YelpApplicationLoad; struct _YelpApplicationLoad { YelpApplication *app; - guint timestamp; + guint32 timestamp; gboolean new; }; @@ -164,6 +165,14 @@ yelp_application_class_init (YelpApplicationClass *klass) g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + signals[READ_LATER_CHANGED] = + g_signal_new ("read-later-changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + dbus_g_object_type_install_info (YELP_TYPE_APPLICATION, &dbus_glib_yelp_object_info); @@ -448,7 +457,7 @@ yelp_application_method (GDBusConnection *connection, gboolean yelp_application_load_uri (YelpApplication *app, const gchar *uri, - guint timestamp, + guint32 timestamp, GError **error) { YelpApplicationLoad *data; @@ -457,6 +466,7 @@ yelp_application_load_uri (YelpApplication *app, data = g_new (YelpApplicationLoad, 1); data->app = app; data->timestamp = timestamp; + data->new = FALSE; yuri = yelp_uri_new (uri); @@ -472,19 +482,26 @@ void yelp_application_new_window (YelpApplication *app, const gchar *uri) { - YelpApplicationLoad *data; YelpUri *yuri; + yuri = yelp_uri_new (uri ? uri : DEFAULT_URI); + + yelp_application_new_window_uri (app, yuri); +} + +void +yelp_application_new_window_uri (YelpApplication *app, + YelpUri *uri) +{ + YelpApplicationLoad *data; data = g_new (YelpApplicationLoad, 1); data->app = app; + data->timestamp = gtk_get_current_event_time (); data->new = TRUE; - - yuri = yelp_uri_new (uri ? uri : DEFAULT_URI); - - g_signal_connect (yuri, "resolved", + g_signal_connect (uri, "resolved", G_CALLBACK (application_uri_resolved), data); - yelp_uri_resolve (yuri); + yelp_uri_resolve (uri); } static void @@ -498,7 +515,7 @@ application_uri_resolved (YelpUri *uri, doc_uri = yelp_uri_get_document_uri (uri); - if (data->new) + if (data->new || !doc_uri) window = NULL; else window = g_hash_table_lookup (priv->windows_by_document, doc_uri); @@ -536,7 +553,15 @@ application_uri_resolved (YelpUri *uri, if (gdk_window) gdk_x11_window_move_to_current_desktop (gdk_window); - gtk_window_present_with_time (GTK_WINDOW (window), GDK_CURRENT_TIME); + /* Ensure we actually present the window when invoked from the command + * line. This is somewhat evil, but the minor evil of Yelp stealing + * focus (after you requested it) is outweighed for me by the major + * evil of no help window appearing when you click Help. + */ + if (data->timestamp == 0) + data->timestamp = gdk_x11_get_server_time (gtk_widget_get_window (GTK_WIDGET (window))); + + gtk_window_present_with_time (GTK_WINDOW (window), data->timestamp); g_free (data); } @@ -630,7 +655,76 @@ yelp_application_add_bookmark (YelpApplication *app, g_variant_builder_add (&builder, "(sss)", page_id, icon, title); value = g_variant_builder_end (&builder); g_settings_set_value (settings, "bookmarks", value); - g_variant_unref (value); + g_signal_emit (app, signals[BOOKMARKS_CHANGED], 0, doc_uri); + } + } +} + +void +yelp_application_remove_bookmark (YelpApplication *app, + const gchar *doc_uri, + const gchar *page_id) +{ + GSettings *settings; + + settings = application_get_doc_settings (app, doc_uri); + + if (settings) { + GVariantBuilder builder; + GVariantIter *iter; + gchar *this_id, *this_icon, *this_title; + g_settings_get (settings, "bookmarks", "a(sss)", &iter); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sss)")); + while (g_variant_iter_loop (iter, "(&s&s&s)", &this_id, &this_icon, &this_title)) { + if (!g_str_equal (page_id, this_id)) + g_variant_builder_add (&builder, "(sss)", this_id, this_icon, this_title); + } + g_variant_iter_free (iter); + + g_settings_set_value (settings, "bookmarks", g_variant_builder_end (&builder)); + g_signal_emit (app, signals[BOOKMARKS_CHANGED], 0, doc_uri); + } +} + +void +yelp_application_update_bookmarks (YelpApplication *app, + const gchar *doc_uri, + const gchar *page_id, + const gchar *icon, + const gchar *title) +{ + GSettings *settings; + + settings = application_get_doc_settings (app, doc_uri); + + if (settings) { + GVariantBuilder builder; + GVariantIter *iter; + gchar *this_id, *this_icon, *this_title; + gboolean updated = FALSE; + g_settings_get (settings, "bookmarks", "a(sss)", &iter); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sss)")); + while (g_variant_iter_loop (iter, "(&s&s&s)", &this_id, &this_icon, &this_title)) { + if (g_str_equal (page_id, this_id)) { + if (icon && !g_str_equal (icon, this_icon)) { + this_icon = (gchar *) icon; + updated = TRUE; + } + if (title && !g_str_equal (title, this_title)) { + this_title = (gchar *) title; + updated = TRUE; + } + if (!updated) + break; + } + g_variant_builder_add (&builder, "(sss)", this_id, this_icon, this_title); + } + g_variant_iter_free (iter); + + if (updated) { + GVariant *value; + value = g_variant_builder_end (&builder); + g_settings_set_value (settings, "bookmarks", value); g_signal_emit (app, signals[BOOKMARKS_CHANGED], 0, doc_uri); } } @@ -673,6 +767,78 @@ packages_installed (GDBusConnection *connection, } void +yelp_application_add_read_later (YelpApplication *app, + const gchar *doc_uri, + const gchar *full_uri, + const gchar *title) +{ + GSettings *settings; + + settings = application_get_doc_settings (app, doc_uri); + + if (settings) { + GVariantBuilder builder; + GVariantIter *iter; + gchar *this_uri, *this_title; + gboolean broken = FALSE; + g_settings_get (settings, "readlater", "a(ss)", &iter); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)")); + while (g_variant_iter_loop (iter, "(&s&s)", &this_uri, &this_title)) { + if (g_str_equal (full_uri, this_uri)) { + /* Already have this link */ + broken = TRUE; + break; + } + g_variant_builder_add (&builder, "(ss)", this_uri, this_title); + } + g_variant_iter_free (iter); + + if (!broken) { + GVariant *value; + g_variant_builder_add (&builder, "(ss)", full_uri, title); + value = g_variant_builder_end (&builder); + g_settings_set_value (settings, "readlater", value); + g_signal_emit (app, signals[READ_LATER_CHANGED], 0, doc_uri); + } + } +} + +void +yelp_application_remove_read_later (YelpApplication *app, + const gchar *doc_uri, + const gchar *full_uri) +{ + GSettings *settings; + + settings = application_get_doc_settings (app, doc_uri); + + if (settings) { + GVariantBuilder builder; + GVariantIter *iter; + gchar *this_uri, *this_title; + g_settings_get (settings, "readlater", "a(ss)", &iter); + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)")); + while (g_variant_iter_loop (iter, "(&s&s)", &this_uri, &this_title)) { + if (!g_str_equal (this_uri, full_uri)) + g_variant_builder_add (&builder, "(ss)", this_uri, this_title); + } + g_variant_iter_free (iter); + + g_settings_set_value (settings, "readlater", g_variant_builder_end (&builder)); + g_signal_emit (app, signals[READ_LATER_CHANGED], 0, doc_uri); + } +} + +GVariant * +yelp_application_get_read_later (YelpApplication *app, + const gchar *doc_uri) +{ + GSettings *settings = application_get_doc_settings (app, doc_uri); + + return g_settings_get_value (settings, "readlater"); +} + +void yelp_application_install_package (YelpApplication *app, const gchar *pkg, const gchar *alt) diff --git a/src/yelp-application.h b/src/yelp-application.h index cda99697..1060683f 100644 --- a/src/yelp-application.h +++ b/src/yelp-application.h @@ -46,25 +46,44 @@ struct _YelpApplicationClass GObjectClass parent_class; }; -GType yelp_application_get_type (void); -YelpApplication* yelp_application_new (void); -gint yelp_application_run (YelpApplication *app, - gint argc, - gchar **argv); -gboolean yelp_application_load_uri (YelpApplication *app, - const gchar *uri, - guint timestamp, - GError **error); -void yelp_application_new_window (YelpApplication *app, - const gchar *uri); +GType yelp_application_get_type (void); +YelpApplication* yelp_application_new (void); +gint yelp_application_run (YelpApplication *app, + gint argc, + gchar **argv); +gboolean yelp_application_load_uri (YelpApplication *app, + const gchar *uri, + guint timestamp, + GError **error); +void yelp_application_new_window (YelpApplication *app, + const gchar *uri); +void yelp_application_new_window_uri (YelpApplication *app, + YelpUri *uri); GtkActionGroup * yelp_application_get_action_group (YelpApplication *app); void yelp_application_add_bookmark (YelpApplication *app, const gchar *doc_uri, const gchar *page_id, const gchar *icon, const gchar *title); +void yelp_application_remove_bookmark (YelpApplication *app, + const gchar *doc_uri, + const gchar *page_id); +void yelp_application_update_bookmarks (YelpApplication *app, + const gchar *doc_uri, + const gchar *page_id, + const gchar *icon, + const gchar *title); GVariant * yelp_application_get_bookmarks (YelpApplication *app, const gchar *doc_uri); +void yelp_application_add_read_later (YelpApplication *app, + const gchar *doc_uri, + const gchar *full_uri, + const gchar *title); +void yelp_application_remove_read_later (YelpApplication *app, + const gchar *doc_uri, + const gchar *full_uri); +GVariant * yelp_application_get_read_later (YelpApplication *app, + const gchar *doc_uri); void yelp_application_install_package (YelpApplication *app, const gchar *pkg, const gchar *alt); diff --git a/src/yelp-man.c b/src/yelp-man.c deleted file mode 100644 index 1e6fc562..00000000 --- a/src/yelp-man.c +++ /dev/null @@ -1,490 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * Copyright (C) 2007 Shaun McCance <shaunm@gnome.org> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Shaun McCance <shaunm@gnome.org> - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <glib.h> -#include <glib/gi18n.h> -#include <gtk/gtk.h> -#include <libxml/tree.h> - -#include "yelp-error.h" -#include "yelp-man.h" -#include "yelp-man-parser.h" -#include "yelp-transform.h" -#include "yelp-debug.h" -#include "yelp-settings.h" - -#define STYLESHEET DATADIR"/yelp/xslt/man2html.xsl" - -#define YELP_MAN_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), YELP_TYPE_MAN, YelpManPriv)) - -typedef enum { - MAN_STATE_BLANK, /* Brand new, run transform as needed */ - MAN_STATE_PARSING, /* Parsing/transforming document, please wait */ - MAN_STATE_PARSED, /* All done, if we ain't got it, it ain't here */ - MAN_STATE_STOP /* Stop everything now, object to be disposed */ -} ManState; - -struct _YelpManPriv { - gchar *filename; - ManState state; - - GMutex *mutex; - GThread *thread; - - xmlDocPtr xmldoc; - - gboolean process_running; - gboolean transform_running; - - YelpTransform *transform; -}; - -typedef struct _YelpLangEncodings YelpLangEncodings; -struct _YelpLangEncodings { - gchar *language; - gchar *encoding; -}; -/* http://www.w3.org/International/O-charset-lang.html */ -static const YelpLangEncodings langmap[] = { - { "C", "ISO-8859-1" }, - { "af", "ISO-8859-1" }, - { "ar", "ISO-8859-6" }, - { "bg", "ISO-8859-5" }, - { "be", "ISO-8859-5" }, - { "ca", "ISO-8859-1" }, - { "cs", "ISO-8859-2" }, - { "da", "ISO-8859-1" }, - { "de", "ISO-8859-1" }, - { "el", "ISO-8859-7" }, - { "en", "ISO-8859-1" }, - { "eo", "ISO-8859-3" }, - { "es", "ISO-8859-1" }, - { "et", "ISO-8859-15" }, - { "eu", "ISO-8859-1" }, - { "fi", "ISO-8859-1" }, - { "fo", "ISO-8859-1" }, - { "fr", "ISO-8859-1" }, - { "ga", "ISO-8859-1" }, - { "gd", "ISO-8859-1" }, - { "gl", "ISO-8859-1" }, - { "hu", "ISO-8859-2" }, - { "id", "ISO-8859-1" }, /* is this right */ - { "mt", "ISO-8859-3" }, - { "is", "ISO-8859-1" }, - { "it", "ISO-8859-1" }, - { "iw", "ISO-8859-8" }, - { "ja", "EUC-JP" }, - { "ko", "EUC-KR" }, - { "lt", "ISO-8859-13" }, - { "lv", "ISO-8859-13" }, - { "mk", "ISO-8859-5" }, - { "mt", "ISO-8859-3" }, - { "no", "ISO-8859-1" }, - { "pl", "ISO-8859-2" }, - { "pt_BR", "ISO-8859-1" }, - { "ro", "ISO-8859-2" }, - { "ru", "KOI8-R" }, - { "sl", "ISO-8859-2" }, - { "sr", "ISO-8859-2" }, /* Latin, not cyrillic */ - { "sk", "ISO-8859-2" }, - { "sv", "ISO-8859-1" }, - { "tr", "ISO-8859-9" }, - { "uk", "ISO-8859-5" }, - { "zh_CN", "BIG5" }, - { "zh_TW", "BIG5" }, - { NULL, NULL }, -}; - -static void man_class_init (YelpManClass *klass); -static void man_init (YelpMan *man); -static void man_try_dispose (GObject *object); -static void man_dispose (GObject *object); - -/* YelpDocument */ -static void man_request (YelpDocument *document, - gint req_id, - gboolean handled, - gchar *page_id, - YelpDocumentFunc func, - gpointer user_data); - -/* YelpTransform */ -static void transform_func (YelpTransform *transform, - YelpTransformSignal signal, - gpointer func_data, - YelpMan *man); -static void transform_page_func (YelpTransform *transform, - gchar *page_id, - YelpMan *man); -static void transform_final_func (YelpTransform *transform, - YelpMan *man); - -/* Threaded */ -static void man_process (YelpMan *man); - -static YelpDocumentClass *parent_class; - -GType -yelp_man_get_type (void) -{ - static GType type = 0; - if (!type) { - static const GTypeInfo info = { - sizeof (YelpManClass), - NULL, NULL, - (GClassInitFunc) man_class_init, - NULL, NULL, - sizeof (YelpMan), - 0, - (GInstanceInitFunc) man_init, - }; - type = g_type_register_static (YELP_TYPE_DOCUMENT, - "YelpMan", - &info, 0); - } - return type; -} - -static void -man_class_init (YelpManClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - YelpDocumentClass *document_class = YELP_DOCUMENT_CLASS (klass); - - parent_class = g_type_class_peek_parent (klass); - - object_class->dispose = man_try_dispose; - - document_class->request = man_request; - document_class->cancel = NULL; - - g_type_class_add_private (klass, sizeof (YelpManPriv)); -} - -static void -man_init (YelpMan *man) -{ - YelpManPriv *priv; - - priv = man->priv = YELP_MAN_GET_PRIVATE (man); - - priv->state = MAN_STATE_BLANK; - - priv->mutex = g_mutex_new (); -} - -static void -man_try_dispose (GObject *object) -{ - YelpManPriv *priv; - - g_assert (object != NULL && YELP_IS_MAN (object)); - priv = YELP_MAN (object)->priv; - g_mutex_lock (priv->mutex); - if (priv->process_running || priv->transform_running) { - priv->state = MAN_STATE_STOP; - g_idle_add ((GSourceFunc) man_try_dispose, object); - g_mutex_unlock (priv->mutex); - } else { - g_mutex_unlock (priv->mutex); - man_dispose (object); - } -} - -static void -man_dispose (GObject *object) -{ - YelpMan *man = YELP_MAN (object); - - g_free (man->priv->filename); - - if (man->priv->xmldoc) - xmlFreeDoc (man->priv->xmldoc); - - g_mutex_free (man->priv->mutex); - - G_OBJECT_CLASS (parent_class)->dispose (object); -} - -/******************************************************************************/ - -YelpDocument * -yelp_man_new (gchar *filename) -{ - YelpMan *man; - - g_return_val_if_fail (filename != NULL, NULL); - - man = (YelpMan *) g_object_new (YELP_TYPE_MAN, NULL); - man->priv->filename = g_strdup (filename); - - debug_print (DB_FUNCTION, "entering\n"); - debug_print (DB_ARG, " filename = \"%s\"\n", filename); - - yelp_document_add_page_id (YELP_DOCUMENT (man), "x-yelp-index", "index"); - - return (YelpDocument *) man; -} - - -/******************************************************************************/ -/** YelpDocument **************************************************************/ - -static void -man_request (YelpDocument *document, - gint req_id, - gboolean handled, - gchar *page_id, - YelpDocumentFunc func, - gpointer user_data) -{ - YelpMan *man; - YelpManPriv *priv; - YelpError *error; - - debug_print (DB_FUNCTION, "entering\n"); - debug_print (DB_ARG, " req_id = %i\n", req_id); - debug_print (DB_ARG, " page_id = \"%s\"\n", page_id); - - g_assert (document != NULL && YELP_IS_MAN (document)); - - if (handled) - return; - - man = YELP_MAN (document); - priv = man->priv; - - g_mutex_lock (priv->mutex); - - switch (priv->state) { - case MAN_STATE_BLANK: - priv->state = MAN_STATE_PARSING; - priv->process_running = TRUE; - priv->thread = g_thread_create ((GThreadFunc) man_process, man, FALSE, NULL); - break; - case MAN_STATE_PARSING: - break; - case MAN_STATE_PARSED: - case MAN_STATE_STOP: - error = yelp_error_new (_("Page not found"), - _("The page %s was not found in the document %s."), - page_id, priv->filename); - yelp_document_error_request (document, req_id, error); - break; - } - - g_mutex_unlock (priv->mutex); -} - - -/******************************************************************************/ -/** YelpTransform *************************************************************/ - -static void -transform_func (YelpTransform *transform, - YelpTransformSignal signal, - gpointer func_data, - YelpMan *man) -{ - YelpManPriv *priv; - - debug_print (DB_FUNCTION, "entering\n"); - - g_assert (man != NULL && YELP_IS_MAN (man)); - - priv = man->priv; - - g_assert (transform == priv->transform); - - if (priv->state == MAN_STATE_STOP) { - switch (signal) { - case YELP_TRANSFORM_CHUNK: - g_free (func_data); - break; - case YELP_TRANSFORM_ERROR: - yelp_error_free ((YelpError *) func_data); - break; - case YELP_TRANSFORM_FINAL: - break; - } - yelp_transform_release (transform); - priv->transform = NULL; - priv->transform_running = FALSE; - return; - } - - switch (signal) { - case YELP_TRANSFORM_CHUNK: - transform_page_func (transform, (gchar *) func_data, man); - break; - case YELP_TRANSFORM_ERROR: - yelp_document_error_pending (YELP_DOCUMENT (man), (YelpError *) func_data); - yelp_transform_release (transform); - priv->transform = NULL; - priv->transform_running = FALSE; - break; - case YELP_TRANSFORM_FINAL: - transform_final_func (transform, man); - break; - } -} - -static void -transform_page_func (YelpTransform *transform, - gchar *page_id, - YelpMan *man) -{ - YelpManPriv *priv; - gchar *content; - - debug_print (DB_FUNCTION, "entering\n"); - - priv = man->priv; - g_mutex_lock (priv->mutex); - - content = yelp_transform_eat_chunk (transform, page_id); - - yelp_document_add_page (YELP_DOCUMENT (man), page_id, content); - - g_free (page_id); - - g_mutex_unlock (priv->mutex); -} - -static void -transform_final_func (YelpTransform *transform, YelpMan *man) -{ - YelpError *error; - YelpManPriv *priv = man->priv; - - debug_print (DB_FUNCTION, "entering\n"); - g_mutex_lock (priv->mutex); - error = yelp_error_new (_("Page not found"), - _("The requested page was not found in the document %s."), - priv->filename); - yelp_document_final_pending (YELP_DOCUMENT (man), error); - - yelp_transform_release (transform); - priv->transform = NULL; - priv->transform_running = FALSE; - priv->state = MAN_STATE_PARSED; - - if (priv->xmldoc) - xmlFreeDoc (priv->xmldoc); - priv->xmldoc = NULL; - - g_mutex_unlock (priv->mutex); -} - - -/******************************************************************************/ -/** Threaded ******************************************************************/ - -static void -man_process (YelpMan *man) -{ - YelpManPriv *priv; - const gchar *language; - const gchar *encoding; - YelpManParser *parser; - YelpError *error = NULL; - YelpDocument *document; - gint i; - - gint params_i = 0; - gint params_max = 10; - gchar **params = NULL; - - debug_print (DB_FUNCTION, "entering\n"); - - g_assert (man != NULL && YELP_IS_MAN (man)); - g_object_ref (man); - priv = man->priv; - document = YELP_DOCUMENT (man); - - if (!g_file_test (priv->filename, G_FILE_TEST_IS_REGULAR)) { - error = yelp_error_new (_("File not found"), - _("The file ‘%s’ does not exist."), - priv->filename); - yelp_document_error_pending (document, error); - goto done; - } - - /* FIXME: get the language */ - language = "C"; - - /* default encoding if the language doesn't match below */ - encoding = g_getenv("MAN_ENCODING"); - if (encoding == NULL) - encoding = "ISO-8859-1"; - - if (language != NULL) { - for (i = 0; langmap[i].language != NULL; i++) { - if (g_str_equal (language, langmap[i].language)) { - encoding = langmap[i].encoding; - break; - } - } - } - - parser = yelp_man_parser_new (); - priv->xmldoc = yelp_man_parser_parse_file (parser, priv->filename, encoding); - yelp_man_parser_free (parser); - - if (priv->xmldoc == NULL) { - error = yelp_error_new (_("Could not parse file"), - _("The file ‘%s’ could not be parsed because it is" - " not a well-formed man page."), - priv->filename); - yelp_document_error_pending (document, error); - } - - g_mutex_lock (priv->mutex); - if (priv->state == MAN_STATE_STOP) { - g_mutex_unlock (priv->mutex); - goto done; - } - - priv->transform = yelp_transform_new (STYLESHEET, - (YelpTransformFunc) transform_func, - man); - priv->transform_running = TRUE; - - params = g_new0 (gchar *, params_max); - yelp_settings_params (¶ms, ¶ms_i, ¶ms_max); - - params[params_i] = NULL; - - yelp_transform_start (priv->transform, - priv->xmldoc, - params); - g_strfreev (params); - g_mutex_unlock (priv->mutex); - - done: - priv->process_running = FALSE; - g_object_unref (man); -} diff --git a/src/yelp-man.h b/src/yelp-man.h deleted file mode 100644 index 844c44ab..00000000 --- a/src/yelp-man.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* - * Copyright (C) 2007 Shaun McCance <shaunm@gnome.org> - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - * - * Author: Shaun McCance <shaunm@gnome.org> - */ - -#ifndef __YELP_MAN_H__ -#define __YELP_MAN_H__ - -#include <glib-object.h> - -#include "yelp-document.h" - -#define YELP_TYPE_MAN (yelp_man_get_type ()) -#define YELP_MAN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), YELP_TYPE_MAN, YelpMan)) -#define YELP_MAN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), YELP_TYPE_MAN, YelpManClass)) -#define YELP_IS_MAN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), YELP_TYPE_MAN)) -#define YELP_IS_MAN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), YELP_TYPE_MAN)) -#define YELP_MAN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), YELP_TYPE_MAN, YelpManClass)) - -typedef struct _YelpMan YelpMan; -typedef struct _YelpManClass YelpManClass; -typedef struct _YelpManPriv YelpManPriv; - -struct _YelpMan { - YelpDocument parent; - YelpManPriv *priv; -}; - -struct _YelpManClass { - YelpDocumentClass parent_class; -}; - -GType yelp_man_get_type (void); -YelpDocument * yelp_man_new (gchar *uri); - -#endif /* __YELP_MAN_H__ */ diff --git a/src/yelp-toc.c b/src/yelp-toc.c index 201cabb4..085c47c7 100644 --- a/src/yelp-toc.c +++ b/src/yelp-toc.c @@ -553,7 +553,7 @@ xml_trim_titles (xmlNodePtr node, xmlChar * nodetype) if (!xmlStrcmp (cur->name, nodetype)) { xmlChar *cur_lang = NULL; int cur_pri = INT_MAX; - cur_lang = xmlNodeGetLang (cur); + cur_lang = xmlGetNsProp(cur, BAD_CAST "lang", XML_XML_NAMESPACE); if (cur_lang) { for (j = 0; langs[j]; j++) { if (g_str_equal (cur_lang, langs[j])) { diff --git a/src/yelp-window.c b/src/yelp-window.c index b0eb5b69..2a167431 100644 --- a/src/yelp-window.c +++ b/src/yelp-window.c @@ -54,14 +54,27 @@ static void yelp_window_set_property (GObject *object, static void window_construct (YelpWindow *window); static void window_new (GtkAction *action, YelpWindow *window); +static gboolean window_map_event (YelpWindow *window, + GdkEvent *event, + gpointer user_data); static gboolean window_configure_event (YelpWindow *window, GdkEventConfigure *event, gpointer user_data); +static void window_drag_received (YelpWindow *window, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *data, + guint info, + guint time, + gpointer userdata); static gboolean window_resize_signal (YelpWindow *window); static void window_close (GtkAction *action, YelpWindow *window); static void window_add_bookmark (GtkAction *action, YelpWindow *window); +static void window_edit_bookmarks (GtkAction *action, + YelpWindow *window); static void window_load_bookmark (GtkAction *action, YelpWindow *window); static void window_find_in_page (GtkAction *action, @@ -70,12 +83,19 @@ static void window_start_search (GtkAction *action, YelpWindow *window); static void window_open_location (GtkAction *action, YelpWindow *window); - +static void window_read_later (GtkAction *action, + YelpWindow *window); +static void read_later_clicked (GtkLinkButton *button, + YelpWindow *window); +static void app_read_later_changed (YelpApplication *app, + const gchar *doc_uri, + YelpWindow *window); static void app_bookmarks_changed (YelpApplication *app, const gchar *doc_uri, YelpWindow *window); static void window_set_bookmarks (YelpWindow *window, const gchar *doc_uri); +static void window_set_bookmark_action (YelpWindow *window); static void window_set_bookmark_icons (YelpWindow *window); static gboolean find_animate_open (YelpWindow *window); static gboolean find_animate_close (YelpWindow *window); @@ -110,14 +130,14 @@ static gboolean entry_focus_out (YelpLocationEntry *entry, static void view_external_uri (YelpView *view, YelpUri *uri, YelpWindow *window); +static void view_new_window (YelpView *view, + YelpUri *uri, + YelpWindow *window); static void view_loaded (YelpView *view, YelpWindow *window); static void view_uri_selected (YelpView *view, GParamSpec *pspec, YelpWindow *window); -static void view_page_id (YelpView *view, - GParamSpec *pspec, - YelpWindow *window); static void view_root_title (YelpView *view, GParamSpec *pspec, YelpWindow *window); @@ -138,6 +158,24 @@ static gboolean hidden_key_press (GtkWidget *widget, GdkEventKey *event, YelpWindow *window); +static gboolean bookmarks_closed (GtkWindow *bookmarks, + GdkEvent *event, + YelpWindow *window); +static void bookmarks_set_bookmarks (YelpWindow *window); +static gboolean bookmark_button_press (GtkTreeView *view, + GdkEventButton *event, + YelpWindow *window); +static void bookmark_opened (GtkMenuItem *item, + YelpWindow *window); +static void bookmark_activated (GtkTreeView *view, + GtkTreePath *path, + GtkTreeViewColumn *column, + YelpWindow *window); +static gboolean bookmark_key_release (GtkTreeView *view, + GdkEventKey *event, + YelpWindow *window); +static void bookmark_remove (YelpWindow *window); + enum { PROP_0, PROP_APPLICATION @@ -200,6 +238,7 @@ static const gchar *YELP_UI = "</menu>" "<menu action='BookmarksMenu'>" "<menuitem action='AddBookmark'/>" + "<menuitem action='EditBookmarks'/>" "<separator/>" "<placeholder name='Bookmarks'/>" "</menu>" @@ -216,19 +255,27 @@ struct _YelpWindowPrivate { GtkActionGroup *action_group; YelpApplication *application; + GtkWidget *bookmarks_editor; + /* no ref */ + GtkWidget *bookmarks_list; + GtkListStore *bookmarks_store; + /* no refs on these, owned by containers */ YelpView *view; - GtkWidget *vbox; + GtkWidget *vbox_view; + GtkWidget *vbox_full; GtkWidget *hbox; YelpLocationEntry *entry; GtkWidget *hidden_entry; GtkWidget *find_entry; GtkWidget *find_label; + GtkWidget *read_later_vbox; /* refs because we dynamically add & remove */ GtkWidget *find_bar; GtkWidget *align_location; GtkWidget *align_hidden; + GtkWidget *read_later; gulong entry_location_selected; @@ -248,6 +295,8 @@ struct _YelpWindowPrivate { gint find_cur_height; gint find_entry_height; gint find_bar_height; + + gboolean configured; }; static const GtkActionEntry entries[] = { @@ -271,6 +320,11 @@ static const GtkActionEntry entries[] = { "<Control>D", NULL, G_CALLBACK (window_add_bookmark) }, + { "EditBookmarks", NULL, + N_("_Edit Bookmarks"), + "<Control>B", + NULL, + G_CALLBACK (window_edit_bookmarks) }, { "Find", NULL, N_("Find in Page..."), "<Control>F", @@ -292,8 +346,11 @@ static void yelp_window_init (YelpWindow *window) { g_signal_connect (window, "configure-event", G_CALLBACK (window_configure_event), NULL); + g_signal_connect (window, "map-event", G_CALLBACK (window_map_event), NULL); } +static void suppress_link_buttons (GtkLinkButton *button, const gchar *link, gpointer userdata) {} + static void yelp_window_class_init (YelpWindowClass *klass) { @@ -325,6 +382,13 @@ yelp_window_class_init (YelpWindowClass *klass) G_TYPE_NONE, 0); g_type_class_add_private (klass, sizeof (YelpWindowPrivate)); + + /* We don't want GTK+'s default behavior for link buttons in the read + * later list. I don't see any other way around this, because GTK+'s + * handlers run before Yelp's. If we ever use link buttons elsewhere + * in Yelp, we need to do something in this callback. + */ + gtk_link_button_set_uri_hook (suppress_link_buttons, NULL, NULL); } static void @@ -372,6 +436,11 @@ yelp_window_dispose (GObject *object) priv->entry_color_animate = 0; } + if (priv->bookmarks_editor != NULL) { + gtk_widget_destroy (GTK_WIDGET (priv->bookmarks_editor)); + priv->bookmarks_editor = NULL; + } + G_OBJECT_CLASS (yelp_window_parent_class)->dispose (object); } @@ -424,18 +493,27 @@ window_construct (YelpWindow *window) GtkWidget *scroll; GtkActionGroup *view_actions; GtkAction *action; - GtkWidget *button; + GtkWidget *vbox, *button; GtkTreeIter iter; + gchar *color, *text; YelpWindowPrivate *priv = GET_PRIV (window); gtk_window_set_icon_name (GTK_WINDOW (window), "help-browser"); priv->view = (YelpView *) yelp_view_new (); - priv->vbox = gtk_vbox_new (FALSE, 0); - gtk_container_add (GTK_CONTAINER (window), priv->vbox); + action = gtk_action_new ("ReadLinkLater", "Read Link _Later", NULL, NULL); + g_signal_connect (action, "activate", G_CALLBACK (window_read_later), window); + yelp_view_add_link_action (priv->view, action); + g_signal_connect (priv->application, "read-later-changed", G_CALLBACK (app_read_later_changed), window); + + priv->vbox_full = gtk_vbox_new (FALSE, 3); + gtk_container_add (GTK_CONTAINER (window), priv->vbox_full); + + priv->vbox_view = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (priv->vbox_full), priv->vbox_view, TRUE, TRUE, 0); - priv->action_group = gtk_action_group_new ("WindowActions"); + priv->action_group = gtk_action_group_new ("YelpWindowActions"); gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE); gtk_action_group_add_actions (priv->action_group, entries, G_N_ELEMENTS (entries), @@ -455,7 +533,7 @@ window_construct (YelpWindow *window) gtk_window_add_accel_group (GTK_WINDOW (window), gtk_ui_manager_get_accel_group (priv->ui_manager)); gtk_ui_manager_add_ui_from_string (priv->ui_manager, YELP_UI, -1, NULL); - gtk_box_pack_start (GTK_BOX (priv->vbox), + gtk_box_pack_start (GTK_BOX (priv->vbox_view), gtk_ui_manager_get_widget (priv->ui_manager, "/ui/menubar"), FALSE, FALSE, 0); @@ -464,7 +542,7 @@ window_construct (YelpWindow *window) priv->hbox = gtk_hbox_new (FALSE, 0); g_object_set (priv->hbox, "border-width", 2, NULL); - gtk_box_pack_start (GTK_BOX (priv->vbox), priv->hbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (priv->vbox_view), priv->hbox, FALSE, FALSE, 0); action = gtk_action_group_get_action (view_actions, "YelpViewGoBack"); button = gtk_action_create_tool_item (action); @@ -539,7 +617,7 @@ window_construct (YelpWindow *window) GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_IN); - gtk_box_pack_start (GTK_BOX (priv->vbox), scroll, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (priv->vbox_view), scroll, TRUE, TRUE, 0); priv->find_bar = g_object_ref_sink (gtk_hbox_new (FALSE, 6)); g_object_set (priv->find_bar, "border-width", 2, NULL); @@ -561,16 +639,43 @@ window_construct (YelpWindow *window) g_object_set (priv->find_label, "xalign", 0.0, NULL); gtk_box_pack_start (GTK_BOX (priv->find_bar), priv->find_label, FALSE, FALSE, 0); + priv->read_later = g_object_ref_sink (gtk_info_bar_new ()); + vbox = gtk_vbox_new (FALSE, 0); + color = yelp_settings_get_color (yelp_settings_get_default (), + YELP_SETTINGS_COLOR_TEXT_LIGHT); + text = g_markup_printf_escaped ("<span weight='bold' color='%s'>%s</span>", + color, _("Read Later")); + button = gtk_label_new (text); + g_object_set (button, "use-markup", TRUE, "xalign", 0.0, NULL); + g_free (color); + g_free (text); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (gtk_info_bar_get_content_area (GTK_INFO_BAR (priv->read_later))), + vbox, + FALSE, FALSE, 0); + priv->read_later_vbox = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), priv->read_later_vbox, FALSE, FALSE, 0); + g_signal_connect (priv->view, "external-uri", G_CALLBACK (view_external_uri), window); + g_signal_connect (priv->view, "new-view-requested", G_CALLBACK (view_new_window), window); g_signal_connect (priv->view, "loaded", G_CALLBACK (view_loaded), window); g_signal_connect (priv->view, "notify::yelp-uri", G_CALLBACK (view_uri_selected), window); - g_signal_connect (priv->view, "notify::page-id", G_CALLBACK (view_page_id), window); + g_signal_connect_swapped (priv->view, "notify::page-id", + G_CALLBACK (window_set_bookmark_action), window); g_signal_connect (priv->view, "notify::root-title", G_CALLBACK (view_root_title), window); g_signal_connect (priv->view, "notify::page-title", G_CALLBACK (view_page_title), window); g_signal_connect (priv->view, "notify::page-desc", G_CALLBACK (view_page_desc), window); g_signal_connect (priv->view, "notify::page-icon", G_CALLBACK (view_page_icon), window); gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (priv->view)); gtk_widget_grab_focus (GTK_WIDGET (priv->view)); + + gtk_drag_dest_set (GTK_WIDGET (window), + GTK_DEST_DEFAULT_ALL, + NULL, 0, + GDK_ACTION_COPY); + gtk_drag_dest_add_uri_targets (GTK_WIDGET (window)); + g_signal_connect (window, "drag-data-received", + G_CALLBACK (window_drag_received), NULL); } /******************************************************************************/ @@ -631,14 +736,59 @@ window_new (GtkAction *action, YelpWindow *window) g_object_unref (yuri); } +static void +window_drag_received (YelpWindow *window, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *data, + guint info, + guint time, + gpointer userdata) +{ + gchar **uris = gtk_selection_data_get_uris (data); + if (uris && uris[0]) { + YelpUri *uri = yelp_uri_new (uris[0]); + yelp_window_load_uri (window, uri); + g_object_unref (uri); + g_strfreev (uris); + gtk_drag_finish (context, TRUE, FALSE, time); + } + gtk_drag_finish (context, FALSE, FALSE, time); +} + +static gboolean +window_map_event (YelpWindow *window, + GdkEvent *event, + gpointer user_data) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + priv->configured = TRUE; + return FALSE; +} + static gboolean window_configure_event (YelpWindow *window, GdkEventConfigure *event, gpointer user_data) { YelpWindowPrivate *priv = GET_PRIV (window); - priv->width = event->width; - priv->height = event->height; + gboolean skip = TRUE; + if (priv->width != event->width) { + skip = FALSE; + priv->width = event->width; + } + if (priv->height != event->height) { + skip = FALSE; + priv->height = event->height; + } + /* Skip the configure-event signals that GTK+ sends as it's mapping + * the window, and also skip if the event didn't change the size of + * the window (i.e. it was just a move). + */ + if (!priv->configured || skip) + return FALSE; + if (priv->resize_signal > 0) g_source_remove (priv->resize_signal); priv->resize_signal = g_timeout_add (200, @@ -689,6 +839,70 @@ window_add_bookmark (GtkAction *action, } static void +window_edit_bookmarks (GtkAction *action, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + GtkWidget *scroll; + gchar *title; + + if (priv->bookmarks_editor != NULL) { + gtk_window_present_with_time (GTK_WINDOW (priv->bookmarks_editor), + gtk_get_current_event_time ()); + return; + } + + priv->bookmarks_editor = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_transient_for (GTK_WINDOW (priv->bookmarks_editor), + GTK_WINDOW (window)); + /* %s will be replaced with the name of a document */ + title = g_strdup_printf (_("Bookmarks for %s"), + gtk_window_get_title (GTK_WINDOW (window))); + gtk_window_set_title (GTK_WINDOW (priv->bookmarks_editor), title); + g_free (title); + gtk_container_set_border_width (GTK_CONTAINER (priv->bookmarks_editor), 6); + gtk_window_set_icon_name (GTK_WINDOW (priv->bookmarks_editor), "bookmark"); + gtk_window_set_default_size (GTK_WINDOW (priv->bookmarks_editor), 300, 300); + g_signal_connect (priv->bookmarks_editor, "delete-event", + G_CALLBACK (bookmarks_closed), window); + + scroll = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (priv->bookmarks_editor), scroll); + + priv->bookmarks_store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + priv->bookmarks_list = gtk_tree_view_new_with_model (GTK_TREE_MODEL (priv->bookmarks_store)); + gtk_container_add (GTK_CONTAINER (scroll), priv->bookmarks_list); + + g_signal_connect (priv->bookmarks_list, "button-press-event", + G_CALLBACK (bookmark_button_press), window); + g_signal_connect (priv->bookmarks_list, "row-activated", + G_CALLBACK (bookmark_activated), window); + g_signal_connect (priv->bookmarks_list, "key-release-event", + G_CALLBACK (bookmark_key_release), window); + + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->bookmarks_list), FALSE); + GtkCellRenderer *cell = gtk_cell_renderer_pixbuf_new (); + g_object_set (cell, "ypad", 2, "xpad", 2, NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (priv->bookmarks_list), 0, NULL, + cell, + "icon-name", 1, + NULL); + gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (priv->bookmarks_list), 1, NULL, + gtk_cell_renderer_text_new (), + "text", 2, + NULL); + + bookmarks_set_bookmarks (window); + + gtk_widget_show_all (priv->bookmarks_editor); +} + +static void window_load_bookmark (GtkAction *action, YelpWindow *window) { @@ -720,8 +934,11 @@ app_bookmarks_changed (YelpApplication *app, g_object_get (priv->view, "yelp-uri", &uri, NULL); this_doc_uri = yelp_uri_get_document_uri (uri); - if (g_str_equal (this_doc_uri, doc_uri)) + if (g_str_equal (this_doc_uri, doc_uri)) { window_set_bookmarks (window, doc_uri); + if (priv->bookmarks_editor != NULL) + bookmarks_set_bookmarks (window); + } g_free (this_doc_uri); g_object_unref (uri); @@ -772,6 +989,8 @@ window_set_bookmarks (YelpWindow *window, entry->title = title; entries = g_slist_insert_sorted (entries, entry, (GCompareFunc) entry_compare); } + gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group, "EditBookmarks"), + entries != NULL); for ( ; entries != NULL; entries = g_slist_delete_link (entries, entries)) { GSList *cur; GtkAction *bookmark; @@ -779,7 +998,17 @@ window_set_bookmarks (YelpWindow *window, gchar *action_id = g_strconcat ("LoadBookmark-", entry->page_id, NULL); bookmark = gtk_action_group_get_action (priv->bookmark_actions, action_id); - if (bookmark == NULL) { + if (bookmark) { + /* The action might have been set by a different document using + * the same page ID. We can just reuse the action, since it's + * just a page ID relative to the current URI, but we need to + * reset the title and icon. + */ + g_object_set (bookmark, + "label", entry->title, + "icon-name", entry->icon, + NULL); + } else { bookmark = gtk_action_new (action_id, entry->title, NULL, NULL); g_signal_connect (bookmark, "activate", G_CALLBACK (window_load_bookmark), window); @@ -808,6 +1037,48 @@ window_set_bookmarks (YelpWindow *window, } static void +window_set_bookmark_action (YelpWindow *window) +{ + YelpUri *uri; + gchar *doc_uri, *page_id; + gchar *curpage; + GVariant *value; + GVariantIter *viter; + GtkAction *action; + YelpWindowPrivate *priv = GET_PRIV (window); + + action = gtk_action_group_get_action (priv->action_group, "AddBookmark"); + + g_object_get (priv->view, + "yelp-uri", &uri, + "page-id", &page_id, + NULL); + if (page_id == NULL) { + gtk_action_set_sensitive (action, FALSE); + if (uri) + g_object_unref (uri); + return; + } + gtk_action_set_sensitive (action, TRUE); + + doc_uri = yelp_uri_get_document_uri (uri); + value = yelp_application_get_bookmarks (priv->application, doc_uri); + g_variant_get (value, "a(sss)", &viter); + while (g_variant_iter_loop (viter, "(&s&s&s)", &curpage, NULL, NULL)) { + if (g_str_equal (page_id, curpage)) { + gtk_action_set_sensitive (action, FALSE); + break; + } + } + g_variant_iter_free (viter); + g_variant_unref (value); + + g_free (page_id); + g_free (doc_uri); + g_object_unref (uri); +} + +static void window_set_bookmark_icons (YelpWindow *window) { YelpUri *uri; @@ -942,6 +1213,126 @@ window_open_location (GtkAction *action, YelpWindow *window) } } +static void +read_later_resolved (YelpUri *uri, + YelpWindow *window) +{ + gchar *fulluri; + const gchar *text = (const gchar *) g_object_get_data ((GObject *) uri, "link-text"); + YelpWindowPrivate *priv = GET_PRIV (window); + YelpUri *base; + gchar *doc_uri; + + g_object_get (priv->view, "yelp-uri", &base, NULL); + doc_uri = yelp_uri_get_document_uri (uri); + fulluri = yelp_uri_get_canonical_uri (uri); + + yelp_application_add_read_later (priv->application, doc_uri, fulluri, text); + + g_object_unref (base); + g_free (doc_uri); + g_free (fulluri); +} + +static void +window_read_later (GtkAction *action, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + YelpUri *uri; + gchar *text; + + uri = yelp_view_get_active_link_uri (priv->view); + text = yelp_view_get_active_link_text (priv->view); + + g_object_set_data_full ((GObject *) uri, "link-text", text, g_free); + + if (!yelp_uri_is_resolved (uri)) { + g_signal_connect (uri, "resolved", + G_CALLBACK (read_later_resolved), + window); + yelp_uri_resolve (uri); + } + else { + read_later_resolved (uri, window); + } +} + +static void +read_later_clicked (GtkLinkButton *button, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + YelpUri *base; + gchar *doc_uri; + gchar *fulluri; + + fulluri = g_strdup (gtk_link_button_get_uri (button)); + + g_object_get (priv->view, "yelp-uri", &base, NULL); + doc_uri = yelp_uri_get_document_uri (base); + + yelp_application_remove_read_later (priv->application, doc_uri, fulluri); + + g_object_unref (base); + g_free (doc_uri); + + yelp_view_load (priv->view, fulluri); + + g_free (fulluri); +} + +static void +app_read_later_changed (YelpApplication *app, + const gchar *doc_uri, + YelpWindow *window) +{ + GVariant *value; + GVariantIter *viter; + gchar *uri, *title; /* do not free */ + GList *children; + gboolean has_children = FALSE; + YelpWindowPrivate *priv = GET_PRIV (window); + + children = gtk_container_get_children (GTK_CONTAINER (priv->read_later_vbox)); + while (children) { + gtk_container_remove (GTK_CONTAINER (priv->read_later_vbox), + GTK_WIDGET (children->data)); + children = g_list_delete_link (children, children); + } + + value = yelp_application_get_read_later (priv->application, doc_uri); + g_variant_get (value, "a(ss)", &viter); + while (g_variant_iter_loop (viter, "(&s&s)", &uri, &title)) { + GtkWidget *align, *link; + + align = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); + g_object_set (align, "left-padding", 6, NULL); + gtk_box_pack_start (GTK_BOX (priv->read_later_vbox), align, FALSE, FALSE, 0); + + link = gtk_link_button_new_with_label (uri, title); + g_object_set (link, "xalign", 0.0, NULL); + g_signal_connect (link, "clicked", G_CALLBACK (read_later_clicked), window); + gtk_container_add (GTK_CONTAINER (align), link); + + gtk_widget_show_all (align); + has_children = TRUE; + } + g_variant_iter_free (viter); + g_variant_unref (value); + + if (has_children) { + if (gtk_widget_get_parent (priv->read_later) == NULL) { + gtk_box_pack_end (GTK_BOX (priv->vbox_full), priv->read_later, FALSE, FALSE, 0); + gtk_widget_show_all (priv->read_later); + } + } + else { + if (gtk_widget_get_parent (priv->read_later) != NULL) + gtk_container_remove (GTK_CONTAINER (priv->vbox_full), priv->read_later); + } +} + static gboolean find_animate_open (YelpWindow *window) { YelpWindowPrivate *priv = GET_PRIV (window); @@ -975,7 +1366,7 @@ find_animate_close (YelpWindow *window) { priv->find_cur_height = 0; g_object_set (priv->find_bar, "height-request", -1, NULL); g_object_set (priv->find_entry, "height-request", -1, NULL); - gtk_container_remove (GTK_CONTAINER (priv->vbox), priv->find_bar); + gtk_container_remove (GTK_CONTAINER (priv->vbox_view), priv->find_bar); priv->find_animate = 0; return FALSE; } @@ -1009,7 +1400,7 @@ window_find_in_page (GtkAction *action, g_object_set (priv->find_entry, "width-request", 2 * priv->width / 3, NULL); - gtk_box_pack_end (GTK_BOX (priv->vbox), priv->find_bar, FALSE, FALSE, 0); + gtk_box_pack_end (GTK_BOX (priv->vbox_view), priv->find_bar, FALSE, FALSE, 0); g_object_set (priv->find_bar, "height-request", -1, NULL); g_object_set (priv->find_entry, "height-request", -1, NULL); gtk_widget_show_all (priv->find_bar); @@ -1281,6 +1672,15 @@ view_external_uri (YelpView *view, } static void +view_new_window (YelpView *view, + YelpUri *uri, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + yelp_application_new_window_uri (priv->application, uri); +} + +static void view_loaded (YelpView *view, YelpWindow *window) { @@ -1289,7 +1689,7 @@ view_loaded (YelpView *view, GtkTreeIter iter; gint flags; YelpUri *uri; - gchar *doc_uri, *page_id; + gchar *doc_uri, *page_id, *icon, *title; GtkTreeModel *completion; YelpWindowPrivate *priv = GET_PRIV (window); YelpDocument *document = yelp_view_get_document (view); @@ -1303,14 +1703,27 @@ view_loaded (YelpView *view, gtk_list_store_set (priv->history, &iter, HISTORY_COL_FLAGS, flags, -1); } - g_object_get (view, "yelp-uri", &uri, NULL); + g_object_get (view, + "yelp-uri", &uri, + "page-id", &page_id, + "page-icon", &icon, + "page-title", &title, + NULL); doc_uri = yelp_uri_get_document_uri (uri); - g_object_get (priv->view, "page-id", &page_id, NULL); gtk_list_store_set (priv->history, &iter, HISTORY_COL_DOC, doc_uri, HISTORY_COL_PAGE, page_id, -1); + yelp_application_update_bookmarks (priv->application, + doc_uri, + page_id, + icon, + title); g_free (page_id); + g_free (icon); + g_free (title); + + app_read_later_changed (priv->application, doc_uri, window); completion = (GtkTreeModel *) g_hash_table_lookup (completions, doc_uri); if (completion == NULL) { @@ -1444,23 +1857,6 @@ view_uri_selected (YelpView *view, } static void -view_page_id (YelpView *view, - GParamSpec *pspec, - YelpWindow *window) -{ - GtkAction *action; - gchar *page_id; - YelpWindowPrivate *priv = GET_PRIV (window); - - g_object_get (view, "page-id", &page_id, NULL); - - action = gtk_action_group_get_action (priv->action_group, "AddBookmark"); - gtk_action_set_sensitive (action, page_id != NULL); - - g_free (page_id); -} - -static void view_root_title (YelpView *view, GParamSpec *pspec, YelpWindow *window) @@ -1589,3 +1985,204 @@ hidden_key_press (GtkWidget *widget, } return FALSE; } + +static gboolean +bookmarks_closed (GtkWindow *bookmarks, + GdkEvent *event, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + + gtk_widget_destroy (GTK_WIDGET (bookmarks)); + priv->bookmarks_editor = NULL; + + return TRUE; +} + +static void +bookmarks_set_bookmarks (YelpWindow *window) +{ + GVariant *value; + GVariantIter *viter; + YelpUri *uri; + gchar *doc_uri; + GSList *entries = NULL; + gchar *page_id, *icon, *title; /* do not free */ + YelpWindowPrivate *priv = GET_PRIV (window); + + gtk_list_store_clear (priv->bookmarks_store); + + g_object_get (priv->view, "yelp-uri", &uri, NULL); + doc_uri = yelp_uri_get_document_uri (uri); + value = yelp_application_get_bookmarks (priv->application, doc_uri); + g_free (doc_uri); + g_object_unref (uri); + + g_variant_get (value, "a(sss)", &viter); + while (g_variant_iter_loop (viter, "(&s&s&s)", &page_id, &icon, &title)) { + YelpMenuEntry *entry = g_new0 (YelpMenuEntry, 1); + entry->page_id = page_id; + entry->icon = icon; + entry->title = title; + entries = g_slist_insert_sorted (entries, entry, (GCompareFunc) entry_compare); + } + for ( ; entries != NULL; entries = g_slist_delete_link (entries, entries)) { + GtkTreeIter iter; + YelpMenuEntry *entry = (YelpMenuEntry *) entries->data; + gtk_list_store_append (priv->bookmarks_store, &iter); + gtk_list_store_set (priv->bookmarks_store, &iter, + 0, entry->page_id, + 1, entry->icon, + 2, entry->title, + -1); + g_free (entry); + } + g_variant_iter_free (viter); + g_variant_unref (value); +} + +static gboolean +bookmark_button_press (GtkTreeView *view, + GdkEventButton *event, + YelpWindow *window) +{ + if (event->button == 3) { + GtkTreePath *path = NULL; + GtkWidget *menu, *item; + GtkTreeSelection *sel = gtk_tree_view_get_selection (view); + + gtk_tree_view_get_path_at_pos (view, + event->x, event->y, + &path, NULL, + NULL, NULL); + gtk_tree_selection_select_path (sel, path); + gtk_tree_path_free (path); + + menu = gtk_menu_new (); + g_object_ref_sink (menu); + + item = gtk_menu_item_new_with_mnemonic (_("_Open Bookmark")); + g_object_set_data ((GObject *) item, "new-window", (gpointer) FALSE); + g_signal_connect (item, "activate", + G_CALLBACK (bookmark_opened), window); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("Open Bookmark in New _Window")); + g_object_set_data ((GObject *) item, "new-window", (gpointer) TRUE); + g_signal_connect (item, "activate", + G_CALLBACK (bookmark_opened), window); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_menu_item_new_with_mnemonic (_("_Remove Bookmark")); + g_signal_connect_swapped (item, "activate", + G_CALLBACK (bookmark_remove), window); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + gtk_widget_show_all (menu); + gtk_menu_popup (GTK_MENU (menu), + NULL, NULL, NULL, NULL, + event->button, + event->time); + + g_object_unref (menu); + return TRUE; + } + return FALSE; +} + +static void +bookmark_opened (GtkMenuItem *item, + YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + GtkTreeIter iter; + GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->bookmarks_list)); + + if (gtk_tree_selection_get_selected (sel, NULL, &iter)) { + YelpUri *base, *uri; + gchar *page_id, *xref; + gtk_tree_model_get (GTK_TREE_MODEL (priv->bookmarks_store), &iter, + 0, &page_id, + -1); + xref = g_strconcat ("xref:", page_id, NULL); + g_object_get (priv->view, "yelp-uri", &base, NULL); + uri = yelp_uri_new_relative (base, xref); + + if (g_object_get_data ((GObject *) item, "new-window")) + yelp_application_new_window_uri (priv->application, uri); + else + yelp_view_load_uri (priv->view, uri); + + g_object_unref (base); + g_object_unref (uri); + g_free (page_id); + g_free (xref); + } +} + +static void +bookmark_activated (GtkTreeView *view, + GtkTreePath *path, + GtkTreeViewColumn *column, + YelpWindow *window) +{ + GtkTreeIter iter; + YelpWindowPrivate *priv = GET_PRIV (window); + + if (gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->bookmarks_store), + &iter, path)) { + YelpUri *base, *uri; + gchar *page_id, *xref; + gtk_tree_model_get (GTK_TREE_MODEL (priv->bookmarks_store), &iter, + 0, &page_id, + -1); + xref = g_strconcat ("xref:", page_id, NULL); + g_object_get (priv->view, "yelp-uri", &base, NULL); + uri = yelp_uri_new_relative (base, xref); + + yelp_view_load_uri (priv->view, uri); + + g_object_unref (base); + g_object_unref (uri); + g_free (xref); + g_free (page_id); + } +} + +static gboolean +bookmark_key_release (GtkTreeView *view, + GdkEventKey *event, + YelpWindow *window) +{ + if (event->keyval == GDK_Delete) { + bookmark_remove (window); + return TRUE; + } + + return FALSE; +} + +static void +bookmark_remove (YelpWindow *window) +{ + YelpWindowPrivate *priv = GET_PRIV (window); + GtkTreeIter iter; + GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->bookmarks_list)); + + if (gtk_tree_selection_get_selected (sel, NULL, &iter)) { + YelpUri *uri; + gchar *doc_uri, *page_id; + gtk_tree_model_get (GTK_TREE_MODEL (priv->bookmarks_store), &iter, + 0, &page_id, + -1); + g_object_get (priv->view, "yelp-uri", &uri, NULL); + doc_uri = yelp_uri_get_document_uri (uri); + yelp_application_remove_bookmark (priv->application, doc_uri, page_id); + g_object_unref (uri); + g_free (doc_uri); + g_free (page_id); + } +} diff --git a/stylesheets/Makefile.am b/stylesheets/Makefile.am index 996b0d07..f64d28fa 100644 --- a/stylesheets/Makefile.am +++ b/stylesheets/Makefile.am @@ -18,5 +18,6 @@ EXTRA_DIST= \ db-title.xsl.in \ info2html.xsl.in \ mal2html.xsl.in \ + man2html.xsl.in \ toc2html.xsl.in \ yelp-common.xsl.in diff --git a/stylesheets/db2html.xsl.in b/stylesheets/db2html.xsl.in index 80e8712b..4a2d48bc 100644 --- a/stylesheets/db2html.xsl.in +++ b/stylesheets/db2html.xsl.in @@ -9,60 +9,11 @@ <xsl:include href="yelp-common.xsl"/> -<xsl:param name="db.chunk.chunk_top" select="true()"/> -<xsl:param name="db.chunk.extension" select="''"/> <xsl:param name="db.chunk.info_basename" select="'//about'"/> <xsl:param name="db2html.navbar.top" select="false()"/> <xsl:param name="db2html.sidenav" select="false()"/> -<!-- == db.number == --> -<!-- -FIXME: yelp:cache no longer works -<xsl:template name="db.number"> - <xsl:param name="node" select="."/> - <yelp:cache key="db.number" node="$node"> - <xsl:apply-templates mode="db.number.mode" select="$node"/> - </yelp:cache> -</xsl:template> ---> - -<!-- == db.chunk == --> -<xsl:template name="db.chunk"> - <xsl:param name="node" select="."/> - <xsl:param name="info"/> - <xsl:param name="template"/> - <xsl:param name="href"> - <xsl:choose> - <xsl:when test="$template = 'info'"> - <xsl:value-of select="$db.chunk.info_basename"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$node/@id"/> - </xsl:otherwise> - </xsl:choose> - </xsl:param> - <xsl:param name="depth_of_chunk"> - <xsl:call-template name="db.chunk.depth-of-chunk"> - <xsl:with-param name="node" select="$node"/> - </xsl:call-template> - </xsl:param> - <yelp:document href="{$href}"> - <xsl:call-template name="db.chunk.content"> - <xsl:with-param name="node" select="$node"/> - <xsl:with-param name="info" select="$info"/> - <xsl:with-param name="template" select="$template"/> - <xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/> - </xsl:call-template> - </yelp:document> - <xsl:if test="string($template) = ''"> - <xsl:call-template name="db.chunk.children"> - <xsl:with-param name="node" select="$node"/> - <xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/> - </xsl:call-template> - </xsl:if> -</xsl:template> - <!-- == db.xref.target == --> <xsl:template name="db.xref.target"> <xsl:param name="linkend"/> diff --git a/stylesheets/info2html.xsl.in b/stylesheets/info2html.xsl.in index 9482aa2c..ec75878e 100644 --- a/stylesheets/info2html.xsl.in +++ b/stylesheets/info2html.xsl.in @@ -7,9 +7,9 @@ version="1.0"> <xsl:import href="@XSL_GETTEXT@"/> -<xsl:import href="@XSL_THEME_COLORS@"/> -<xsl:import href="@XSL_THEME_ICONS@"/> -<xsl:import href="@XSL_THEME_HTML@"/> +<xsl:import href="@XSL_COLOR@"/> +<xsl:import href="@XSL_ICONS@"/> +<xsl:import href="@XSL_HTML@"/> <xsl:include href="yelp-common.xsl"/> <xsl:template name="linktrails"> @@ -26,58 +26,85 @@ <xsl:text> » </xsl:text> </xsl:template> -<xsl:template match="/Info"> - <xsl:apply-templates select="Section"/> +<xsl:template match="/"> + <xsl:for-each select="/Info/Section"> + <xsl:call-template name="html.output"/> + </xsl:for-each> </xsl:template> -<xsl:template match="Section"> - <yelp:document href="{@id}"> - <html> - <head> - <title> - <xsl:value-of select="@name"/> - </title> - <style type="text/css"> - <xsl:call-template name="html.css"/> - </style> - </head> - <body> - <div class="head"> - <xsl:if test="@up"> - <div class="trails"> - <div class="trail"> - <xsl:call-template name="linktrails"/> - </div> - </div> - </xsl:if> - </div> - <div class="body"> - <div class="navbar"> - <xsl:variable name="preceding" select="preceding::Section[1]"/> - <xsl:variable name="following" select="(Section[1] | following::Section[1])[1]"/> - <xsl:if test="$preceding"> - <a class="navbar-prev" href="xref:{$preceding/@id}"> - <xsl:value-of select="$preceding/@name"/> - </a> - </xsl:if> - <xsl:if test="$preceding and $following"> - <xsl:text>  |  </xsl:text> - </xsl:if> - <xsl:if test="$following"> - <a class="navbar-next" href="xref:{$following/@id}"> - <xsl:value-of select="$following/@name"/> - </a> - </xsl:if> - </div> - <xsl:apply-templates select="node()[not(self::Section)]"/> - </div> - <div class="foot"/> - </body> - </html> - </yelp:document> - <xsl:apply-templates select="Section"/> +<xsl:template mode="html.output.after.mode" match="Section"> + <xsl:for-each select="Section"> + <xsl:call-template name="html.output"/> + </xsl:for-each> </xsl:template> +<xsl:template mode="html.title.mode" match="Section"> + <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template mode="html.css.mode" match="Section"> + <xsl:param name="direction"/> + <xsl:param name="left"/> + <xsl:param name="right"/> + <xsl:text> +div.body { white-space: pre; font-family: monospace; } +<!-- navbar from mal2html, possibly move to html.xsl --> +div.navbar { + margin: 0 0 1em 0; + text-align: right; + font-family: sans-serif; +} +a.navbar-prev::before { + content: '</xsl:text><xsl:choose> + <xsl:when test="$left = 'left'"><xsl:text>◀  </xsl:text></xsl:when> + <xsl:otherwise><xsl:text>▶  </xsl:text></xsl:otherwise> + </xsl:choose><xsl:text>'; + color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>; +} +a.navbar-next::after { + content: '</xsl:text><xsl:choose> + <xsl:when test="$left = 'left'"><xsl:text>  ▶</xsl:text></xsl:when> + <xsl:otherwise><xsl:text>  ◀</xsl:text></xsl:otherwise> + </xsl:choose><xsl:text>'; + color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>; +} +</xsl:text> +</xsl:template> + +<xsl:template mode="html.header.mode" match="Section"> + <xsl:if test="@up"> + <div class="trails"> + <div class="trail"> + <xsl:call-template name="linktrails"/> + </div> + </div> + </xsl:if> +</xsl:template> + +<xsl:template mode="html.body.mode" match="Section"> + <div class="navbar"> + <xsl:variable name="preceding" select="(parent::Section[1] | preceding::Section[1])[last()]"/> + <xsl:variable name="following" select="(Section[1] | following::Section[1])[1]"/> + <xsl:if test="$preceding"> + <a class="navbar-prev" href="xref:{$preceding/@id}"> + <xsl:value-of select="$preceding/@name"/> + </a> + </xsl:if> + <xsl:if test="$preceding and $following"> + <xsl:text>  |  </xsl:text> + </xsl:if> + <xsl:if test="$following"> + <a class="navbar-next" href="xref:{$following/@id}"> + <xsl:value-of select="$following/@name"/> + </a> + </xsl:if> + </div> + <xsl:apply-templates select="node()[not(self::Section)]"/> +</xsl:template> + + +<!-- = Normal Matches = --> + <xsl:template match="para"> <xsl:value-of select="node()"/> <xsl:text> @@ -120,48 +147,4 @@ <xsl:apply-templates select="node()[not(self::noteholder)]"/> </xsl:template> -<xsl:template name="html.css"> - <xsl:param name="direction"> - <xsl:call-template name="l10n.direction"/> - </xsl:param> - <xsl:param name="left"> - <xsl:call-template name="l10n.align.start"> - <xsl:with-param name="direction" select="$direction"/> - </xsl:call-template> - </xsl:param> - <xsl:param name="right"> - <xsl:call-template name="l10n.align.end"> - <xsl:with-param name="direction" select="$direction"/> - </xsl:call-template> - </xsl:param> - <xsl:call-template name="theme.html.css"> - <xsl:with-param name="direction" select="$direction"/> - <xsl:with-param name="left" select="$left"/> - <xsl:with-param name="right" select="$right"/> - </xsl:call-template> - <xsl:text> -div.body { white-space: pre; font-family: monospace; } -<!-- navbar from mal2html, possibly move to theme-html --> -div.navbar { - margin: 0; - float: right; - font-family: sans-serif; -} -a.navbar-prev::before { - content: '</xsl:text><xsl:choose> - <xsl:when test="$left = 'left'"><xsl:text>◀  </xsl:text></xsl:when> - <xsl:otherwise><xsl:text>▶  </xsl:text></xsl:otherwise> - </xsl:choose><xsl:text>'; - color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>; -} -a.navbar-next::after { - content: '</xsl:text><xsl:choose> - <xsl:when test="$left = 'left'"><xsl:text>  ▶</xsl:text></xsl:when> - <xsl:otherwise><xsl:text>  ◀</xsl:text></xsl:otherwise> - </xsl:choose><xsl:text>'; - color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>; -} -</xsl:text> -</xsl:template> - </xsl:stylesheet> diff --git a/stylesheets/mal2html.xsl.in b/stylesheets/mal2html.xsl.in index bcce8b8c..fb623e2c 100644 --- a/stylesheets/mal2html.xsl.in +++ b/stylesheets/mal2html.xsl.in @@ -1,35 +1,22 @@ <?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:yelp="http://www.gnome.org/yelp/ns" xmlns:mal="http://www.gnome.org/~shaunm/mallard" + xmlns:yelp="http://www.gnome.org/yelp/ns" xmlns="http://www.w3.org/1999/xhtml" extension-element-prefixes="yelp" version="1.0"> <xsl:import href="@XSL_MAL2XHTML@"/> -<xsl:include href="yelp-common.xsl"/> +<xsl:import href="yelp-common.xsl"/> <xsl:param name="yelp.stub" select="false()"/> <xsl:param name="mal2html.editor_mode" select="$yelp.editor_mode"/> -<xsl:param name="mal.chunk.chunk_top" select="true()"/> -<xsl:param name="mal.chunk.extension" select="''"/> - <xsl:param name="mal.cache" select="yelp:input()"/> <xsl:key name="mal.cache.key" match="mal:page | mal:section" use="@id"/> - -<!-- == mal.chunk == --> -<xsl:template name="mal.chunk"> - <xsl:param name="node" select="."/> - <xsl:param name="href" select="concat($node/@id, $mal.chunk.extension)"/> - <yelp:document href="{$href}"> - <xsl:apply-templates mode="mal.chunk.content.mode" select="$node"/> - </yelp:document> -</xsl:template> - <!-- == mal.link.target == --> <xsl:template name="mal.link.target"> <xsl:param name="link" select="."/> @@ -53,23 +40,22 @@ </xsl:choose> </xsl:template> -<xsl:template name="mal2html.css.custom"> +<xsl:template name="yelp.css.custom"> <xsl:text> div.linkdiv { border: none; } div.linkdiv:hover { border: none; outline: solid 1px </xsl:text> - <xsl:value-of select="$theme.color.blue_background"/><xsl:text>; + <xsl:value-of select="$color.blue_background"/><xsl:text>; background: -webkit-gradient(linear, left top, left 80, from(</xsl:text> - <xsl:value-of select="$theme.color.blue_background"/><xsl:text>), to(</xsl:text> - <xsl:value-of select="$theme.color.background"/><xsl:text>)); + <xsl:value-of select="$color.blue_background"/><xsl:text>), to(</xsl:text> + <xsl:value-of select="$color.background"/><xsl:text>)); } </xsl:text> <xsl:if test="$yelp.editor_mode"> <xsl:text> -div.head { margin: 0; } div.version { - margin: 0 -12px 1em -12px; + margin: -1em -12px 1em -12px; padding: 0.5em 12px 0.5em 12px; position: relative; left: auto; right: auto; @@ -77,9 +63,9 @@ div.version { max-width: none; border: none; border-bottom: solid 1px </xsl:text> - <xsl:value-of select="$theme.color.gray_border"/><xsl:text>; + <xsl:value-of select="$color.gray_border"/><xsl:text>; background-color: </xsl:text> - <xsl:value-of select="$theme.color.yellow_background"/><xsl:text>; + <xsl:value-of select="$color.yellow_background"/><xsl:text>; } div.version:hover { opacity: 1.0; } </xsl:text> @@ -87,14 +73,14 @@ div.version:hover { opacity: 1.0; } <xsl:text> body, div.body { background-color: </xsl:text> - <xsl:value-of select="$theme.color.red_background"/><xsl:text>; + <xsl:value-of select="$color.red_background"/><xsl:text>; } </xsl:text> </xsl:if> </xsl:if> </xsl:template> -<xsl:template name="mal2html.page.head.extra"> +<xsl:template name="html.head.custom"> <xsl:call-template name="yelp.common.javascript"/> </xsl:template> diff --git a/stylesheets/man2html.xsl b/stylesheets/man2html.xsl.in index e3dd0654..4b21baeb 100644 --- a/stylesheets/man2html.xsl +++ b/stylesheets/man2html.xsl.in @@ -6,86 +6,37 @@ extension-element-prefixes="yelp" version="1.0"> -<xsl:output method="html" encoding="UTF-8"/> - +<xsl:import href="@XSL_GETTEXT@"/> +<xsl:import href="@XSL_COLOR@"/> +<xsl:import href="@XSL_ICONS@"/> +<xsl:import href="@XSL_HTML@"/> <xsl:include href="yelp-common.xsl"/> -<xsl:param name="stylesheet_path" select="''"/> -<xsl:param name="linktrail"/> - -<xsl:param name="yelp.javascript"/> - -<xsl:param name="yelp.icon.blockquote"/> -<xsl:param name="yelp.icon.caution"/> -<xsl:param name="yelp.icon.important"/> -<xsl:param name="yelp.icon.note"/> -<xsl:param name="yelp.icon.programlisting"/> -<xsl:param name="yelp.icon.tip"/> -<xsl:param name="yelp.icon.warning"/> - -<xsl:param name="theme.color.text"/> -<xsl:param name="theme.color.background"/> -<xsl:param name="theme.color.text_light"/> -<xsl:param name="theme.color.link"/> -<xsl:param name="theme.color.link_visited"/> -<xsl:param name="theme.color.gray_background"/> -<xsl:param name="theme.color.gray_border"/> -<xsl:param name="theme.color.blue_background"/> -<xsl:param name="theme.color.blue_border"/> -<xsl:param name="theme.color.red_background"/> -<xsl:param name="theme.color.red_border"/> -<xsl:param name="theme.color.yellow_background"/> -<xsl:param name="theme.color.yellow_border"/> - -<xsl:template match="Man"> - <xsl:choose> - <xsl:when test="element-available('yelp:document')"> - <yelp:document href="index"> - <xsl:call-template name="html"/> - </yelp:document> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="html"/> - </xsl:otherwise> - </xsl:choose> +<xsl:param name="html.basename" select="'//index'"/> + +<xsl:param name="linktrail" select="''"/> + +<xsl:template mode="html.title.mode" match="Man"> + <xsl:value-of select="TH/Title"/> </xsl:template> -<xsl:template name="html"> - <html> - <head> - <title> - <xsl:value-of select="//TH/Title"/> - </title> - <style type="text/css"> - <xsl:call-template name="html.css"/> - </style> - <script type="text/javascript"> - <xsl:attribute name="src"> - <xsl:value-of select="concat('file://', $yelp.javascript)"/> - </xsl:attribute> - </script> - </head> - <body> - <xsl:call-template name="html.linktrail"/> - <div class="body"> - <xsl:apply-templates select="TH"/> - <xsl:apply-templates select="SH"/> - </div> - </body> - </html> -</xsl:template> - -<xsl:template name="html.css"> - <xsl:call-template name="yelp.common.css"/> - <xsl:text> - div[class~="SH"] { margin-left: 1.2em; } - div[class~="SS"] { margin-left: 1.6em; } +<xsl:template mode="html.css.mode" match="Man"> + <xsl:param name="direction"/> + <xsl:param name="left"/> + <xsl:param name="right"/> +<xsl:text> +body { font-family: monospace; } +div.hgroup { font-family: sans-serif; } +</xsl:text> +</xsl:template> - span[class~="R"] { font-family: serif; } - span[class~="Section"] { margin-left: 0.4em; } - - dd { padding-bottom: 10px; } - </xsl:text> +<xsl:template mode="html.header.mode" match="Man"> + <xsl:call-template name="html.linktrail"/> +</xsl:template> + +<xsl:template mode="html.body.mode" match="Man"> + <xsl:apply-templates select="TH"/> + <xsl:apply-templates select="SH"/> </xsl:template> <xsl:template name="html.linktrail"> @@ -213,23 +164,27 @@ <xsl:variable name="nextSS" select="following-sibling::SS[not($nextSH) or following-sibling::SH[1] = $nextSH][1]"/> - <h3><xsl:apply-templates/></h3> - <div class="SS"> - <xsl:choose> - <xsl:when test="$nextSS"> - <xsl:apply-templates - select="following-sibling::*[following-sibling::SS[1] = $nextSS and - following-sibling::SS[1]/@id = $nextSS/@id]"/> - </xsl:when> - <xsl:when test="$nextSH"> - <xsl:apply-templates - select="following-sibling::*[following-sibling::SH[1] = $nextSH and - following-sibling::SH[1]/@id = $nextSH/@id]"/> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="following-sibling::*"/> - </xsl:otherwise> - </xsl:choose> + <div class="sect sect-SS"> + <div class="hgroup"> + <h3 class="title"><xsl:apply-templates/></h3> + </div> + <div class="inner"> + <xsl:choose> + <xsl:when test="$nextSS"> + <xsl:apply-templates + select="following-sibling::*[following-sibling::SS[1] = $nextSS and + following-sibling::SS[1]/@id = $nextSS/@id]"/> + </xsl:when> + <xsl:when test="$nextSH"> + <xsl:apply-templates + select="following-sibling::*[following-sibling::SH[1] = $nextSH and + following-sibling::SH[1]/@id = $nextSH/@id]"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="following-sibling::*"/> + </xsl:otherwise> + </xsl:choose> + </div> </div> </xsl:template> @@ -238,24 +193,28 @@ <xsl:variable name="nextSS" select="following-sibling::SS[not($nextSH) or following-sibling::SH[1] = $nextSH]"/> - <h2><xsl:apply-templates/></h2> - <div class="SH"> - <xsl:choose> - <xsl:when test="$nextSS"> - <xsl:apply-templates - select="following-sibling::*[following-sibling::SS[1] = $nextSS[1] and - following-sibling::SS[1]/@id = $nextSS[1]/@id]"/> - <xsl:apply-templates select="$nextSS"/> - </xsl:when> - <xsl:when test="$nextSH"> - <xsl:apply-templates - select="following-sibling::*[following-sibling::SH[1] = $nextSH and - following-sibling::SH[1]/@id = $nextSH/@id]"/> - </xsl:when> - <xsl:otherwise> - <xsl:apply-templates select="following-sibling::*"/> - </xsl:otherwise> - </xsl:choose> + <div class="sect sect-SH"> + <div class="hgroup"> + <h2 class="title"><xsl:apply-templates/></h2> + </div> + <div class="inner"> + <xsl:choose> + <xsl:when test="$nextSS"> + <xsl:apply-templates + select="following-sibling::*[following-sibling::SS[1] = $nextSS[1] and + following-sibling::SS[1]/@id = $nextSS[1]/@id]"/> + <xsl:apply-templates select="$nextSS"/> + </xsl:when> + <xsl:when test="$nextSH"> + <xsl:apply-templates + select="following-sibling::*[following-sibling::SH[1] = $nextSH and + following-sibling::SH[1]/@id = $nextSH/@id]"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="following-sibling::*"/> + </xsl:otherwise> + </xsl:choose> + </div> </div> </xsl:template> @@ -268,16 +227,18 @@ </xsl:template> <xsl:template match="TH"> - <h1> - <span class="Title"> - <xsl:apply-templates select="Title/node()"/> - </span> - <span class="Section"> - <xsl:text>(</xsl:text> - <xsl:apply-templates select="Section/node()"/> - <xsl:text>)</xsl:text> - </span> - </h1> + <div class="hgroup"> + <h1 class="title"> + <span class="Title"> + <xsl:apply-templates select="Title/node()"/> + </span> + <span class="Section"> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="Section/node()"/> + <xsl:text>)</xsl:text> + </span> + </h1> + </div> </xsl:template> <xsl:template match="UR"> diff --git a/stylesheets/yelp-common.xsl.in b/stylesheets/yelp-common.xsl.in index 143c5af4..e773a79b 100644 --- a/stylesheets/yelp-common.xsl.in +++ b/stylesheets/yelp-common.xsl.in @@ -1,12 +1,45 @@ <?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:yelp="http://www.gnome.org/yelp/ns" + xmlns:set="http://exslt.org/sets" xmlns="http://www.w3.org/1999/xhtml" + exclude-result-prefixes="set" + extension-element-prefixes="yelp" version="1.0"> <xsl:param name="yelp.editor_mode" select="false()"/> -<!-- == yelp.common.css == --> -<xsl:template name="theme.html.css.custom"> +<xsl:param name="html.extension" select="''"/> + +<!-- == html.output == --> +<xsl:template name="html.output"> + <xsl:param name="node" select="."/> + <xsl:param name="href"> + <xsl:choose> + <xsl:when test="$node/@xml:id"> + <xsl:value-of select="$node/@xml:id"/> + </xsl:when> + <xsl:when test="$node/@id"> + <xsl:value-of select="$node/@id"/> + </xsl:when> + <xsl:when test="set:has-same-node($node, /*)"> + <xsl:value-of select="$html.basename"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="generate-id()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <yelp:document href="{$href}"> + <xsl:call-template name="html.page"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </yelp:document> + <xsl:apply-templates mode="html.output.after.mode" select="$node"/> +</xsl:template> + +<!-- == html.css.custom == --> +<xsl:template name="html.css.custom"> <xsl:param name="direction"/> <xsl:param name="left"/> <xsl:param name="right"/> @@ -16,22 +49,28 @@ html { } body { padding: 0; - background-color: </xsl:text><xsl:value-of select="$theme.color.background"/><xsl:text>; + background-color: </xsl:text><xsl:value-of select="$color.background"/><xsl:text>; max-width: 100%; } -div.head { +div.header { max-width: 100%; width: 100%; padding: 0; margin: 0 0 1em 0; } +div.code { + -webkit-box-shadow: 0px 0px 4px </xsl:text><xsl:value-of select="$color.gray_border"/><xsl:text>; +} +div.code:hover { + -webkit-box-shadow: 0px 0px 4px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>; +} div.trails { margin: 0; padding: 0.2em 12px 0 12px; background-color: </xsl:text> - <xsl:value-of select="$theme.color.gray_background"/><xsl:text>; + <xsl:value-of select="$color.gray_background"/><xsl:text>; border-bottom: solid 1px </xsl:text> - <xsl:value-of select="$theme.color.gray_border"/><xsl:text>; + <xsl:value-of select="$color.gray_border"/><xsl:text>; } div.trail { font-size: 1em; @@ -44,8 +83,11 @@ div.body { border: none; } </xsl:text> +<xsl:call-template name="yelp.css.custom"/> </xsl:template> +<xsl:template name="yelp.css.custom"/> + <xsl:template name="yelp.common.javascript"> <script type="text/javascript" language="javascript" src="@DATADIR@/jquery-1.4.2.min.js"/> <script type="text/javascript" language="javascript" src="@DATADIR@/jquery-ui-1.8.custom.min.js"/> @@ -53,15 +95,15 @@ div.body { <xsl:text> $(document).ready (function () { if (location.hash != '') { - $('#' + location.hash).find('div.header').css({ - backgroundColor: '</xsl:text><xsl:value-of select="$theme.color.yellow_background"/><xsl:text>' + $('#' + location.hash).find('div.hgroup').css({ + backgroundColor: '</xsl:text><xsl:value-of select="$color.yellow_background"/><xsl:text>' }).animate({ - backgroundColor: '</xsl:text><xsl:value-of select="$theme.color.gray_background"/><xsl:text>' + backgroundColor: '</xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>' }, 8000); $('#' + location.hash).css({ - backgroundColor: '</xsl:text><xsl:value-of select="$theme.color.yellow_background"/><xsl:text>' + backgroundColor: '</xsl:text><xsl:value-of select="$color.yellow_background"/><xsl:text>' }).animate({ - backgroundColor: '</xsl:text><xsl:value-of select="$theme.color.background"/><xsl:text>' + backgroundColor: '</xsl:text><xsl:value-of select="$color.background"/><xsl:text>' }, 4000); } }); diff --git a/tests/test-uri.c b/tests/test-uri.c index 869d9b1c..d2889999 100644 --- a/tests/test-uri.c +++ b/tests/test-uri.c @@ -35,7 +35,7 @@ static void print_uri (gchar *orig, YelpUri *uri, GOutputStream *stream) { GFile *file; - gchar *type, *tmp, **tmpv, *out; + gchar *type = NULL, *tmp, **tmpv, *out; g_output_stream_write (stream, orig, strlen (orig), NULL, NULL); g_output_stream_write (stream, "\n", 1, NULL, NULL); @@ -199,7 +199,7 @@ run_all_tests (int argc, char **argv) G_FILE_ATTRIBUTE_STANDARD_NAME); if (!g_str_has_suffix (name, ".test")) continue; - list = g_list_insert_sorted (list, name, strcmp); + list = g_list_insert_sorted (list, (gchar *) name, (GCompareFunc) strcmp); } while (list) { |