summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@gnome.org>2010-06-16 14:33:58 -0500
committerShaun McCance <shaunm@gnome.org>2010-06-16 14:33:58 -0500
commitbff85a2245cf505195d5c26b9617251f9f26365e (patch)
tree79a166363dd3a80342bdfedaf2356dab528f6d29
parentc75080dd47f03209e7ebaed20bd954d1799f8b96 (diff)
parentaa2d430e9b23e7b2106486b4c5ce1715d114747d (diff)
downloadyelp-bff85a2245cf505195d5c26b9617251f9f26365e.tar.gz
Merge branch 'master' into gdbus
-rw-r--r--NEWS50
-rw-r--r--configure.ac17
-rw-r--r--data/Makefile.am11
-rw-r--r--data/org.gnome.yelp.gschema.xml5
-rw-r--r--libyelp/Makefile.am6
-rw-r--r--libyelp/yelp-docbook-document.c26
-rw-r--r--libyelp/yelp-document.c89
-rw-r--r--libyelp/yelp-info-document.h1
-rw-r--r--libyelp/yelp-info-parser.c5
-rw-r--r--libyelp/yelp-location-entry.h2
-rw-r--r--libyelp/yelp-mallard-document.c92
-rw-r--r--libyelp/yelp-man-document.c506
-rw-r--r--libyelp/yelp-man-document.h51
-rw-r--r--libyelp/yelp-man-parser.c (renamed from src/yelp-man-parser.c)159
-rw-r--r--libyelp/yelp-man-parser.h (renamed from src/yelp-man-parser.h)4
-rw-r--r--libyelp/yelp-settings.c46
-rw-r--r--libyelp/yelp-simple-document.c44
-rw-r--r--libyelp/yelp-uri.c253
-rw-r--r--libyelp/yelp-uri.h2
-rw-r--r--libyelp/yelp-view.c729
-rw-r--r--libyelp/yelp-view.h29
-rw-r--r--po/ChangeLog4
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/POTFILES.skip1
-rw-r--r--po/de.po703
-rw-r--r--po/es.po313
-rw-r--r--po/et.po943
-rw-r--r--po/gl.po271
-rw-r--r--po/he.po975
-rw-r--r--po/nb.po575
-rw-r--r--po/or.po845
-rw-r--r--po/sl.po221
-rw-r--r--po/zh_CN.po899
-rw-r--r--src/yelp-application.c188
-rw-r--r--src/yelp-application.h41
-rw-r--r--src/yelp-man.c490
-rw-r--r--src/yelp-man.h53
-rw-r--r--src/yelp-toc.c2
-rw-r--r--src/yelp-window.c675
-rw-r--r--stylesheets/Makefile.am1
-rw-r--r--stylesheets/db2html.xsl.in49
-rw-r--r--stylesheets/info2html.xsl.in173
-rw-r--r--stylesheets/mal2html.xsl.in36
-rw-r--r--stylesheets/man2html.xsl.in (renamed from stylesheets/man2html.xsl)201
-rw-r--r--stylesheets/yelp-common.xsl.in64
-rw-r--r--tests/test-uri.c4
46 files changed, 5529 insertions, 4326 deletions
diff --git a/NEWS b/NEWS
index c509d425..ad657d42 100644
--- a/NEWS
+++ b/NEWS
@@ -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, &params_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
diff --git a/po/de.po b/po/de.po
index f1235b68..84487ece 100644
--- a/po/de.po
+++ b/po/de.po
@@ -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"
diff --git a/po/es.po b/po/es.po
index a5c810a6..493aa52c 100644
--- a/po/es.po
+++ b/po/es.po
@@ -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"
diff --git a/po/et.po b/po/et.po
index f0e37b20..849a06aa 100644
--- a/po/et.po
+++ b/po/et.po
@@ -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."
diff --git a/po/gl.po b/po/gl.po
index 09cc085c..343fa981 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -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"
diff --git a/po/he.po b/po/he.po
index 02614891..53cc40b5 100644
--- a/po/he.po
+++ b/po/he.po
@@ -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"
diff --git a/po/nb.po b/po/nb.po
index c02c48ae..cb4827a0 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -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"
diff --git a/po/or.po b/po/or.po
index 00486771..ae1456e5 100644
--- a/po/or.po
+++ b/po/or.po
@@ -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"
diff --git a/po/sl.po b/po/sl.po
index 1d6b8718..93da3401 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -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 (&params, &params_i, &params_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>&#x00A0;» </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>&#x00A0;&#x00A0;|&#x00A0;&#x00A0;</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>&#x25C0;&#x00A0;&#x00A0;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>&#x25B6;&#x00A0;&#x00A0;</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>&#x00A0;&#x00A0;&#x25B6;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>&#x00A0;&#x00A0;&#x25C0;</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>&#x00A0;&#x00A0;|&#x00A0;&#x00A0;</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>&#x25C0;&#x00A0;&#x00A0;</xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>&#x25B6;&#x00A0;&#x00A0;</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>&#x00A0;&#x00A0;&#x25B6;</xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>&#x00A0;&#x00A0;&#x25C0;</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) {