Merge branch 'mingw-file-offset-64' into 'master'

meson: define _FILE_OFFSET_BITS=64 for MinGW. See #1476

See merge request GNOME/glib!228
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 916f41e..a3634df 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,6 +11,7 @@
 
 variables:
   MESON_TEST_TIMEOUT_MULTIPLIER: 2
+  G_MESSAGES_DEBUG: all
 
 fedora-x86_64:
   stage: build
diff --git a/docs/reference/glib/cross.xml b/docs/reference/glib/cross.xml
index 35d169b..c452004 100644
--- a/docs/reference/glib/cross.xml
+++ b/docs/reference/glib/cross.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
                "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 ]>
-<refentry id="glib-cross-compiling" revision="8 Apr 2003">
+<refentry id="glib-cross-compiling" revision="7 Aug 2018">
 <refmeta>
 <refentrytitle>Cross-compiling the GLib package</refentrytitle>
 <manvolnum>3</manvolnum>
@@ -28,181 +28,118 @@
       <para>
         These notes cover things specific to cross-compiling GLib;
         for general information about cross-compilation, see the
-        <application>autoconf</application> info pages.
+        <ulink url="http://mesonbuild.com/Cross-compilation.html">meson</ulink>
+        info pages.
       </para>
       <para>
         GLib tries to detect as much information as possible about
         the target system by compiling and linking programs without
         actually running anything; however, some information GLib
         needs is not available this way. This information needs
-        to be provided to the configure script via a "cache file"
-        or by setting the cache variables in your environment.
+        to be provided to meson via a ‘cross file’.
       </para>
       <para>
-        As an example of using a cache file, to cross compile for
-        the "MingW32" Win32 runtime environment on a Linux system,
-        create a file 'win32.cache' with the following contents:
+        As an example of using a cross file, to cross compile for
+        the ‘MingW32’ Win64 runtime environment on a Linux system,
+        create a file <filename>cross_file.txt</filename> with the following
+        contents:
       </para>
       <programlisting> 
-glib_cv_long_long_format=I64
-glib_cv_stack_grows=no
+[host_machine]
+system = 'windows'
+cpu_family = 'x86_64'
+cpu = 'x86_64'
+endian = 'little'
+
+[properties]
+c_args = []
+c_link_args = []
+
+[binaries]
+c = 'x86_64-w64-mingw32-gcc'
+cpp = 'x86_64-w64-mingw32-g++'
+ar = 'x86_64-w64-mingw32-ar'
+strip = 'x86_64-w64-mingw32-strip'
+pkgconfig = 'x86_64-w64-mingw32-pkg-config'
+windres = 'x86_64-w64-mingw32-windres'
       </programlisting>
       <para>
         Then execute the following commands:
       </para>
       <programlisting>
-PATH=/path/to/mingw32-compiler/bin:$PATH
-chmod a-w win32.cache   # prevent configure from changing it
-./configure --cache-file=win32.cache --host=mingw32
+meson --cross_file cross_file.txt builddir
       </programlisting>
       <para>
-        The complete list of cache file variables follows. Most
+        The complete list of cross properties follows. Most
          of these won't need to be set in most cases.
       </para>
     </refsect1>
-    <refsect1 id="cache-file-variables">
-      <title>Cache file variables</title>
+    <refsect1 id="cross-properties">
+      <title>Cross properties</title>
       <formalpara>
-        <title>glib_cv_long_long_format=[ll/q/I64]</title>
-        
+        <title>have_[function]</title>
+
         <para>
-           Format used by <function>printf()</function> and 
-           <function>scanf()</function> for 64 bit integers. "ll" is 
-           the C99 standard, and what is used by the 'trio' library
-           that GLib builds if your <function>printf()</function> is 
-           insufficiently capable.
-           Doesn't need to be set if you are compiling using trio.
+           When meson checks if a function is supported, the test can be
+           overridden by setting the
+           <literal>have_<replaceable>function</replaceable></literal> property
+           to <constant>true</constant> or <constant>false</constant>.
+           For example <programlisting>Checking for function "alloca" : YES</programlisting>
+           can be overridden by setting <programlisting>have_alloca = false</programlisting>
         </para>
       </formalpara>
       <formalpara>
-        <title>glib_cv_stack_grows=[yes/no]</title>
+        <title>growing_stack=[true/false]</title>
 
         <para>
-           Whether the stack grows up or down. Most places will want "no",
-           A few architectures, such as PA-RISC need "yes".
+           Whether the stack grows up or down. Most places will want
+           <constant>false</constant>.
+           A few architectures, such as PA-RISC need <constant>true</constant>.
         </para>
       </formalpara>
       <formalpara>
-        <title>glib_cv_working_bcopy=[yes/no]</title>
-
-        <para>
-           Whether your <function>bcopy()</function> can handle overlapping 
-           copies. Only needs to be set if you don't have 
-           <function>memmove()</function>. (Very unlikely)
-	</para>
-      </formalpara>
-      <formalpara>
-         <title>glib_cv_sane_realloc=[yes/no]</title>
-
-         <para>  
-            Whether your <function>realloc()</function> conforms to ANSI C 
-            and can handle <literal>NULL</literal> as the first argument. 
-            Defaults to "yes" and probably doesn't need to be set.
-	</para>
-      </formalpara>
-      <formalpara>
-         <title>glib_cv_have_strlcpy=[yes/no]</title>
+         <title>have_strlcpy=[true/false]</title>
 
          <para>
             Whether you have <function>strlcpy()</function> that matches 
-            OpenBSD. Defaults to "no", which is safe, since GLib uses a 
-            built-in version in that case.
+            OpenBSD. Defaults to <constant>false</constant>, which is safe,
+            since GLib uses a built-in version in that case.
 	</para>
       </formalpara>
       <formalpara>
-         <title>glib_cv_have_qsort_r=[yes/no]</title>
+         <title>va_val_copy=[true/false]</title>
 
          <para>
-           Whether you have <function>qsort_r()</function> that matches
-           BSD. Defaults to "no", which is safe, since GLib uses a
-           built-in version in that case.
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>glib_cv_va_val_copy=[yes/no]</title>
-   
-         <para>
             Whether <type>va_list</type> can be copied as a pointer. If set 
-            to "no", then <function>memcopy()</function> will be used. Only 
-            matters if you don't have <function>va_copy()</function> or 
-            <function>__va_copy()</function>. (So, doesn't matter for GCC.) 
-            Defaults to "yes" which is slightly more common than "no".
-	</para>
+            to <constant>false</constant>, then <function>memcopy()</function>
+            will be used. Only matters if you don't have
+            <function>va_copy()</function> or <function>__va_copy()</function>.
+            (So, doesn't matter for GCC.)
+            Defaults to <constant>true</constant> which is slightly more common
+            than <constant>false</constant>.
+        </para>
       </formalpara>
       <formalpara>
-         <title>glib_cv_rtldglobal_broken=[yes/no]</title>
- 
-         <para>
-            Whether you have a bug found in OSF/1 v5.0. Defaults to "no".
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>glib_cv_uscore=[yes/no]</title>
-
-         <para>
-            Whether an underscore needs to be prepended to symbols when
-            looking them up via <function>dlsym()</function>. Only needs to 
-            be set if your system uses
-	    <function>dlopen()</function>/<function>dlsym()</function>.
-	 </para>
-      </formalpara>
-      <formalpara>
-         <title>ac_cv_func_posix_getpwuid_r=[yes/no]</title>
-
-         <para>
-            Whether you have a getpwuid_r function (in your C library,
-	    not your thread library) that conforms to the POSIX spec.
-            (Takes a 'struct passwd **' as the final argument)
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>ac_cv_func_nonposix_getpwuid_r=[yes/no]</title>
- 
-         <para>
-            Whether you have some variant of <function>getpwuid_r()</function>
-            that doesn't conform to to the POSIX spec, but GLib might be able
-            to use (or might segfault.) Only needs to be set if 
-	    <literal>ac_cv_func_posix_getpwuid_r</literal> is not set. It's 
-            safest to set this to "no".
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>ac_cv_func_posix_getgrgid_r=[yes/no]</title>
- 
-         <para>
-            Whether you have a getgrgid_r function that conforms to
-            the POSIX spec.
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>glib_cv_use_pid_surrogate=[yes/no]</title>
-
-         <para>
-            Whether to use a <function>setpriority()</function> on the PID of 
-            the thread as a method for setting the priority of threads. This 
-            only needs to be set when using POSIX threads.
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>ac_cv_func_printf_unix98=[yes/no]</title>
-
-         <para>
-           Whether your <function>printf()</function> family supports Unix98 
-           style <literal>%N$</literal> positional parameters. Defaults to
-	"no".
-         </para>
-      </formalpara>
-      <formalpara>
-         <title>ac_cv_func_vsnprintf_c99=[yes/no]</title>
+         <title>have_c99_vsnprintf=[true/false]</title>
 
          <para>
             Whether you have a <function>vsnprintf()</function> with C99 
             semantics. (C99 semantics means returning the number of bytes 
             that would have been written had the output buffer had enough 
-            space.) Defaults to "no".
+            space.) Defaults to <constant>false</constant>.
+         </para>
+      </formalpara>
+      <formalpara>
+         <title>have_c99_snprintf=[true/false]</title>
+
+         <para>
+            Whether you have a <function>snprintf()</function> with C99 
+            semantics. (C99 semantics means returning the number of bytes 
+            that would have been written had the output buffer had enough 
+            space.) Defaults to <constant>false</constant>.
          </para>
       </formalpara>
 
-    </refsect1>    
+    </refsect1>
 
 </refentry>
diff --git a/gio/gapplicationimpl-dbus.c b/gio/gapplicationimpl-dbus.c
index ac029a9..f9e5e71 100644
--- a/gio/gapplicationimpl-dbus.c
+++ b/gio/gapplicationimpl-dbus.c
@@ -426,10 +426,12 @@
    * the well-known name and fall back to remote mode (!is_primary)
    * in the case that we can't do that.
    */
-  /* DBUS_NAME_FLAG_DO_NOT_QUEUE: 0x4 */
   reply = g_dbus_connection_call_sync (impl->session_bus, "org.freedesktop.DBus", "/org/freedesktop/DBus",
                                        "org.freedesktop.DBus", "RequestName",
-                                       g_variant_new ("(su)", impl->bus_name, 0x4), G_VARIANT_TYPE ("(u)"),
+                                       g_variant_new ("(su)",
+                                                      impl->bus_name,
+                                                      G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE),
+                                       G_VARIANT_TYPE ("(u)"),
                                        0, -1, cancellable, error);
 
   if (reply == NULL)
diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c
index 6812238..8de836b 100644
--- a/gio/gdbusmessage.c
+++ b/gio/gdbusmessage.c
@@ -1994,7 +1994,7 @@
 
 /**
  * g_dbus_message_new_from_blob:
- * @blob: (array length=blob_len) (element-type guint8): A blob represent a binary D-Bus message.
+ * @blob: (array length=blob_len) (element-type guint8): A blob representing a binary D-Bus message.
  * @blob_len: The length of @blob.
  * @capabilities: A #GDBusCapabilityFlags describing what protocol features are supported.
  * @error: Return location for error or %NULL.
diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c
index d4340d4..5e1bebb 100644
--- a/gio/glib-compile-schemas.c
+++ b/gio/glib-compile-schemas.c
@@ -2112,6 +2112,7 @@
         }
 
       g_strfreev (groups);
+      g_key_file_free (key_file);
     }
 
   return TRUE;
diff --git a/gio/glocalfile.c b/gio/glocalfile.c
index 354ac7c..30fa228 100644
--- a/gio/glocalfile.c
+++ b/gio/glocalfile.c
@@ -983,15 +983,20 @@
   block_size = statfs_buffer.f_bsize;
   
   /* Many backends can't report free size (for instance the gvfs fuse
-     backend for backend not supporting this), and set f_bfree to 0,
-     but it can be 0 for real too. We treat the available == 0 and
-     free == 0 case as "both of these are invalid".
-   */
-#ifndef G_OS_WIN32
+   * backend for backend not supporting this), and set f_bfree to 0,
+   *  but it can be 0 for real too. We treat the available == 0 and
+   * free == 0 case as "both of these are invalid", but only on file systems
+   * which are known to not support this (otherwise we can omit metadata for
+   * systems which are legitimately full). */
+#if defined(__linux__)
   if (statfs_result == 0 &&
-      statfs_buffer.f_bavail == 0 && statfs_buffer.f_bfree == 0)
+      statfs_buffer.f_bavail == 0 && statfs_buffer.f_bfree == 0 &&
+      (/* linux/ncp_fs.h: NCP_SUPER_MAGIC == 0x564c */
+       statfs_buffer.f_type == 0x564c ||
+       /* man statfs: FUSE_SUPER_MAGIC == 0x65735546 */
+       statfs_buffer.f_type == 0x65735546))
     no_size = TRUE;
-#endif /* G_OS_WIN32 */
+#endif  /* __linux__ */
   
 #elif defined(USE_STATVFS)
   statfs_result = statvfs (local->filename, &statfs_buffer);
@@ -1677,20 +1682,16 @@
     }
 }
 
-static char *
-_g_local_file_find_topdir_for_internal (const char *file, dev_t file_dev)
+char *
+_g_local_file_find_topdir_for (const char *file)
 {
   char *dir;
   char *mountpoint = NULL;
   dev_t dir_dev;
 
   dir = get_parent (file, &dir_dev);
-  if (dir == NULL || dir_dev != file_dev)
-    {
-      g_free (dir);
-
-      return NULL;
-    }
+  if (dir == NULL)
+    return NULL;
 
   mountpoint = find_mountpoint_for (dir, dir_dev);
   g_free (dir);
@@ -1698,17 +1699,6 @@
   return mountpoint;
 }
 
-char *
-_g_local_file_find_topdir_for (const char *file)
-{
-  GStatBuf file_stat;
-
-  if (g_lstat (file, &file_stat) != 0)
-    return NULL;
-
-  return _g_local_file_find_topdir_for_internal (file, file_stat.st_dev);
-}
-
 static char *
 get_unique_filename (const char *basename, 
                      int         id)
@@ -1908,6 +1898,7 @@
   char *original_name, *original_name_escaped;
   int i;
   char *data;
+  char *path;
   gboolean is_homedir_trash;
   char *delete_time = NULL;
   int fd;
@@ -1932,6 +1923,24 @@
 
   is_homedir_trash = FALSE;
   trashdir = NULL;
+
+  /* On overlayfs, a file's st_dev will be different to the home directory's.
+   * We still want to create our trash directory under the home directory, so
+   * instead we should stat the directory that the file we're deleting is in as
+   * this will have the same st_dev.
+   */
+  if (!S_ISDIR (file_stat.st_mode))
+    {
+      path = g_path_get_dirname (local->filename);
+      /* If the parent is a symlink to a different device then it might have
+       * st_dev equal to the home directory's, in which case we will end up
+       * trying to rename across a filesystem boundary, which doesn't work. So
+       * we use g_stat here instead of g_lstat, to know where the symlink
+       * points to. */
+      g_stat (path, &file_stat);
+      g_free (path);
+    }
+
   if (file_stat.st_dev == home_stat.st_dev)
     {
       is_homedir_trash = TRUE;
@@ -1962,8 +1971,7 @@
       uid = geteuid ();
       g_snprintf (uid_str, sizeof (uid_str), "%lu", (unsigned long)uid);
 
-      topdir = _g_local_file_find_topdir_for_internal (local->filename,
-                                                       file_stat.st_dev);
+      topdir = _g_local_file_find_topdir_for (local->filename);
       if (topdir == NULL)
 	{
           g_set_io_error (error,
diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c
index b3e2937..58802fd 100644
--- a/gio/glocalfileinfo.c
+++ b/gio/glocalfileinfo.c
@@ -924,13 +924,9 @@
 	_g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_DELETE,
 					         writable);
 
-      /* Trashing is supported only if the parent device is the same */
       if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH))
-        _g_file_info_set_attribute_boolean_by_id (info,
-                                                  G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH,
-                                                  writable &&
-                                                  parent_info->has_trash_dir &&
-                                                  parent_info->device == statbuf->st_dev);
+        _g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_ACCESS_CAN_TRASH,
+                                                 writable && parent_info->has_trash_dir);
     }
 }
 
@@ -961,7 +957,8 @@
   else if (S_ISLNK (statbuf->st_mode))
     file_type = G_FILE_TYPE_SYMBOLIC_LINK;
 #elif defined (G_OS_WIN32)
-  if (statbuf->reparse_tag == IO_REPARSE_TAG_SYMLINK)
+  if (statbuf->reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+      statbuf->reparse_tag == IO_REPARSE_TAG_MOUNT_POINT)
     file_type = G_FILE_TYPE_SYMBOLIC_LINK;
 #endif
 
@@ -1005,13 +1002,20 @@
 #elif defined (HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC)
   _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_ACCESS_USEC, statbuf->st_atim.tv_nsec / 1000);
 #endif
-  
+
+#ifndef G_OS_WIN32
+  /* Microsoft uses st_ctime for file creation time,
+   * instead of file change time:
+   * https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/stat-functions#generic-text-routine-mappings
+   * Thank you, Microsoft!
+   */
   _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CHANGED, statbuf->st_ctime);
 #if defined (HAVE_STRUCT_STAT_ST_CTIMENSEC)
   _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CHANGED_USEC, statbuf->st_ctimensec / 1000);
 #elif defined (HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC)
   _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CHANGED_USEC, statbuf->st_ctim.tv_nsec / 1000);
 #endif
+#endif
 
 #if defined (HAVE_STRUCT_STAT_ST_BIRTHTIME) && defined (HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC)
   _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtime);
@@ -1023,6 +1027,8 @@
   _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtime);
 #elif defined (HAVE_STRUCT_STAT_ST_BIRTHTIM)
   _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtim);
+#elif defined (G_OS_WIN32)
+  _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_ctime);
 #endif
 
   if (_g_file_attribute_matcher_matches_id (attribute_matcher,
@@ -1799,7 +1805,9 @@
   is_symlink = stat_ok && S_ISLNK (statbuf.st_mode);
 #elif defined (G_OS_WIN32)
   /* glib already checked the FILE_ATTRIBUTE_REPARSE_POINT for us */
-  is_symlink = stat_ok && statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK; 
+  is_symlink = stat_ok &&
+      (statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+       statbuf.reparse_tag == IO_REPARSE_TAG_MOUNT_POINT);
 #else
   is_symlink = FALSE;
 #endif
@@ -2182,7 +2190,9 @@
     GWin32PrivateStat statbuf;
 
     res = GLIB_PRIVATE_CALL (g_win32_lstat_utf8) (filename, &statbuf);
-    is_symlink = (res == 0 && statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK);
+    is_symlink = (res == 0 &&
+                  (statbuf.reparse_tag == IO_REPARSE_TAG_SYMLINK ||
+                   statbuf.reparse_tag == IO_REPARSE_TAG_MOUNT_POINT));
 #endif
     if (is_symlink)
       {
diff --git a/gio/gnetworkmonitorportal.c b/gio/gnetworkmonitorportal.c
index 16249ac..bce8a33 100644
--- a/gio/gnetworkmonitorportal.c
+++ b/gio/gnetworkmonitorportal.c
@@ -182,6 +182,15 @@
 }
 
 static void
+update_properties (GDBusProxy *proxy,
+                   GNetworkMonitorPortal *nm)
+{
+  g_dbus_proxy_call (proxy, "GetConnectivity", NULL, 0, -1, NULL, got_connectivity, nm);
+  g_dbus_proxy_call (proxy, "GetMetered", NULL, 0, -1, NULL, got_metered, nm);
+  g_dbus_proxy_call (proxy, "GetAvailable", NULL, 0, -1, NULL, got_available, nm);
+}
+
+static void
 proxy_signal (GDBusProxy *proxy,
               const char *sender,
               const char *signal,
@@ -200,9 +209,7 @@
     }
   else if (nm->priv->version == 2)
     {
-      g_dbus_proxy_call (proxy, "GetConnectivity", NULL, 0, -1, NULL, got_connectivity, nm);
-      g_dbus_proxy_call (proxy, "GetMetered", NULL, 0, -1, NULL, got_metered, nm);
-      g_dbus_proxy_call (proxy, "GetAvailable", NULL, 0, -1, NULL, got_available, nm);
+      update_properties (proxy, nm);
     }
 }
 
@@ -326,7 +333,13 @@
   nm->priv->has_network = glib_network_available_in_sandbox ();
   nm->priv->version = version;
 
-  return initable_parent_iface->init (initable, cancellable, error);
+  if (!initable_parent_iface->init (initable, cancellable, error))
+    return FALSE;
+
+  if (nm->priv->has_network && nm->priv->version == 2)
+    update_properties (proxy, nm);
+
+  return TRUE;
 }
 
 static void
diff --git a/gio/gresource.c b/gio/gresource.c
index bf54f1d..2844f48 100644
--- a/gio/gresource.c
+++ b/gio/gresource.c
@@ -489,7 +489,7 @@
 {
   if (g_atomic_int_dec_and_test (&resource->ref_count))
     {
-      gvdb_table_unref (resource->table);
+      gvdb_table_free (resource->table);
       g_free (resource);
     }
 }
@@ -512,6 +512,19 @@
   return resource;
 }
 
+static void
+g_resource_error_from_gvdb_table_error (GError **g_resource_error,
+                                        GError  *gvdb_table_error  /* (transfer full) */)
+{
+  if (g_error_matches (gvdb_table_error, G_FILE_ERROR, G_FILE_ERROR_INVAL))
+    g_set_error_literal (g_resource_error,
+                         G_RESOURCE_ERROR, G_RESOURCE_ERROR_INTERNAL,
+                         gvdb_table_error->message);
+  else
+    g_propagate_error (g_resource_error, g_steal_pointer (&gvdb_table_error));
+  g_clear_error (&gvdb_table_error);
+}
+
 /**
  * g_resource_new_from_data:
  * @data: A #GBytes
@@ -528,6 +541,8 @@
  * Otherwise this function will internally create a copy of the memory since
  * GLib 2.56, or in older versions fail and exit the process.
  *
+ * If @data is empty or corrupt, %G_RESOURCE_ERROR_INTERNAL will be returned.
+ *
  * Returns: (transfer full): a new #GResource, or %NULL on error
  *
  * Since: 2.32
@@ -538,6 +553,7 @@
 {
   GvdbTable *table;
   gboolean unref_data = FALSE;
+  GError *local_error = NULL;
 
   if (((guintptr) g_bytes_get_data (data, NULL)) % sizeof (gpointer) != 0)
     {
@@ -546,19 +562,16 @@
       unref_data = TRUE;
     }
 
-  table = gvdb_table_new_from_data (g_bytes_get_data (data, NULL),
-                                    g_bytes_get_size (data),
-                                    TRUE,
-                                    g_bytes_ref (data),
-                                    (GvdbRefFunc)g_bytes_ref,
-                                    (GDestroyNotify)g_bytes_unref,
-                                    error);
+  table = gvdb_table_new_from_bytes (data, TRUE, &local_error);
 
   if (unref_data)
     g_bytes_unref (data);
 
   if (table == NULL)
-    return NULL;
+    {
+      g_resource_error_from_gvdb_table_error (error, g_steal_pointer (&local_error));
+      return NULL;
+    }
 
   return g_resource_new_from_table (table);
 }
@@ -574,6 +587,11 @@
  * If you want to use this resource in the global resource namespace you need
  * to register it with g_resources_register().
  *
+ * If @filename is empty or the data in it is corrupt,
+ * %G_RESOURCE_ERROR_INTERNAL will be returned. If @filename doesn’t exist, or
+ * there is an error in reading it, an error from g_mapped_file_new() will be
+ * returned.
+ *
  * Returns: (transfer full): a new #GResource, or %NULL on error
  *
  * Since: 2.32
@@ -583,10 +601,14 @@
                  GError      **error)
 {
   GvdbTable *table;
+  GError *local_error = NULL;
 
-  table = gvdb_table_new (filename, FALSE, error);
+  table = gvdb_table_new (filename, FALSE, &local_error);
   if (table == NULL)
-    return NULL;
+    {
+      g_resource_error_from_gvdb_table_error (error, g_steal_pointer (&local_error));
+      return NULL;
+    }
 
   return g_resource_new_from_table (table);
 }
diff --git a/gio/gschema.dtd b/gio/gschema.dtd
index 8cd552d..1599f8d 100644
--- a/gio/gschema.dtd
+++ b/gio/gschema.dtd
@@ -49,8 +49,8 @@
 <!ELEMENT range EMPTY >
 <!-- min and max must be parseable as values of the key type and
      min must be less than or equal to max -->
-<!ATTLIST range min CDATA #REQUIRED
-                max CDATA #REQUIRED >
+<!ATTLIST range min CDATA #IMPLIED
+                max CDATA #IMPLIED >
 
 <!-- choices is only allowed for keys with string or string array type -->
 <!ELEMENT choices (choice+) >
diff --git a/gio/gsettingsschema.c b/gio/gsettingsschema.c
index 17b7e3b..38c9d78 100644
--- a/gio/gsettingsschema.c
+++ b/gio/gsettingsschema.c
@@ -231,7 +231,7 @@
 
       if (source->parent)
         g_settings_schema_source_unref (source->parent);
-      gvdb_table_unref (source->table);
+      gvdb_table_free (source->table);
       g_free (source->directory);
 
       if (source->text_tables)
@@ -267,6 +267,9 @@
  * Generally, you should set @trusted to %TRUE for files installed by the
  * system and to %FALSE for files in the home directory.
  *
+ * In either case, an empty file or some types of corruption in the file will
+ * result in %G_FILE_ERROR_INVAL being returned.
+ *
  * If @parent is non-%NULL then there are two effects.
  *
  * First, if g_settings_schema_source_lookup() is called with the
@@ -802,7 +805,7 @@
               else
                 g_hash_table_add (reloc, schema);
 
-              gvdb_table_unref (table);
+              gvdb_table_free (table);
             }
         }
 
@@ -928,7 +931,7 @@
         g_settings_schema_unref (schema->extends);
 
       g_settings_schema_source_unref (schema->source);
-      gvdb_table_unref (schema->table);
+      gvdb_table_free (schema->table);
       g_free (schema->items);
       g_free (schema->id);
 
@@ -1188,7 +1191,7 @@
                   g_hash_table_iter_remove (&iter);
               }
 
-            gvdb_table_unref (child_table);
+            gvdb_table_free (child_table);
           }
 
       /* Now create the list */
diff --git a/gio/gtask.c b/gio/gtask.c
index df40357..4087543 100644
--- a/gio/gtask.c
+++ b/gio/gtask.c
@@ -52,7 +52,7 @@
  * where it was created (waiting until the next iteration of the main
  * loop first, if necessary). The caller will pass the #GTask back to
  * the operation's finish function (as a #GAsyncResult), and you can
- * can use g_task_propagate_pointer() or the like to extract the
+ * use g_task_propagate_pointer() or the like to extract the
  * return value.
  *
  * Here is an example for using GTask as a GAsyncResult:
diff --git a/gio/gtestdbus.c b/gio/gtestdbus.c
index 685503c..2fc2d51 100644
--- a/gio/gtestdbus.c
+++ b/gio/gtestdbus.c
@@ -179,7 +179,7 @@
       if (num_events == 0)
         continue;
 
-      if (fds[0].revents == G_IO_HUP)
+      if (fds[0].revents & G_IO_HUP)
         {
           /* Parent quit, cleanup the mess and exit */
           for (n = 0; n < pids_to_kill->len; n++)
diff --git a/gio/gthemedicon.c b/gio/gthemedicon.c
index 3ada77b..35970de 100644
--- a/gio/gthemedicon.c
+++ b/gio/gthemedicon.c
@@ -49,6 +49,7 @@
 {
   GObject parent_instance;
   
+  char     **init_names;
   char     **names;
   gboolean   use_default_fallbacks;
 };
@@ -66,6 +67,8 @@
   PROP_USE_DEFAULT_FALLBACKS
 };
 
+static void g_themed_icon_update_names (GThemedIcon *themed);
+
 G_DEFINE_TYPE_WITH_CODE (GThemedIcon, g_themed_icon, G_TYPE_OBJECT,
 			 G_IMPLEMENT_INTERFACE (G_TYPE_ICON,
 						g_themed_icon_icon_iface_init))
@@ -81,7 +84,7 @@
   switch (prop_id)
     {
       case PROP_NAMES:
-        g_value_set_boxed (value, icon->names);
+        g_value_set_boxed (value, icon->init_names);
         break;
 
       case PROP_USE_DEFAULT_FALLBACKS:
@@ -111,12 +114,12 @@
         if (!name)
           break;
 
-        if (icon->names)
-          g_strfreev (icon->names);
+        if (icon->init_names)
+          g_strfreev (icon->init_names);
 
-        icon->names = g_new (char *, 2);
-        icon->names[0] = g_strdup (name);
-        icon->names[1] = NULL;
+        icon->init_names = g_new (char *, 2);
+        icon->init_names[0] = g_strdup (name);
+        icon->init_names[1] = NULL;
         break;
 
       case PROP_NAMES:
@@ -125,10 +128,10 @@
         if (!names)
           break;
 
-        if (icon->names)
-          g_strfreev (icon->names);
+        if (icon->init_names)
+          g_strfreev (icon->init_names);
 
-        icon->names = names;
+        icon->init_names = names;
         break;
 
       case PROP_USE_DEFAULT_FALLBACKS:
@@ -143,63 +146,7 @@
 static void
 g_themed_icon_constructed (GObject *object)
 {
-  GThemedIcon *themed = G_THEMED_ICON (object);
-
-  g_return_if_fail (themed->names != NULL && themed->names[0] != NULL);
-
-  if (themed->use_default_fallbacks)
-    {
-      int i = 0, dashes = 0;
-      const char *p;
-      char *dashp;
-      char *last;
-      gboolean is_symbolic;
-      char *name;
-      char **names;
-
-      is_symbolic = g_str_has_suffix (themed->names[0], "-symbolic");
-      if (is_symbolic)
-        name = g_strndup (themed->names[0], strlen (themed->names[0]) - 9);
-      else
-        name = g_strdup (themed->names[0]);
-
-      p = name;
-      while (*p)
-        {
-          if (*p == '-')
-            dashes++;
-          p++;
-        }
-
-      last = name;
-
-      g_strfreev (themed->names);
-
-      names = g_new (char *, dashes + 1 + 1);
-      names[i++] = last;
-
-      while ((dashp = strrchr (last, '-')) != NULL)
-        names[i++] = last = g_strndup (last, dashp - last);
-
-      names[i++] = NULL;
-
-      if (is_symbolic)
-        {
-          themed->names = g_new (char *, 2 * dashes + 3);
-          for (i = 0; names[i] != NULL; i++)
-            {
-              themed->names[i] = g_strconcat (names[i], "-symbolic", NULL);
-              themed->names[dashes + 1 + i] = names[i];
-            }
-
-          themed->names[dashes + 1 + i] = NULL;
-          g_free (names);
-        }
-      else
-        {
-          themed->names = names;
-        }
-    }
+  g_themed_icon_update_names (G_THEMED_ICON (object));
 }
 
 static void
@@ -209,6 +156,7 @@
 
   themed = G_THEMED_ICON (object);
 
+  g_strfreev (themed->init_names);
   g_strfreev (themed->names);
 
   G_OBJECT_CLASS (g_themed_icon_parent_class)->finalize (object);
@@ -278,7 +226,136 @@
 static void
 g_themed_icon_init (GThemedIcon *themed)
 {
-  themed->names = NULL;
+  themed->init_names = NULL;
+  themed->names      = NULL;
+}
+
+/**
+ * g_themed_icon_update_names:
+ * @themed: a #GThemedIcon.
+ *
+ * Update the actual icon name list, based on the requested names (from
+ * construction, or later added with g_themed_icon_prepend_name() and
+ * g_themed_icon_append_name()).
+ * The order of the list matters, indicating priority:
+ * - The first requested icon is first in priority.
+ * - If "use-default-fallbacks" is #TRUE, then it is followed by all its
+ *   fallbacks (starting from top to lower context levels).
+ * - Then next requested icons, and optionally their fallbacks, follow.
+ * - Finally all the style variants (symbolic or regular, opposite to whatever
+ *   is the requested style) follow in the same order.
+ *
+ * An icon is not added twice in the list if it was previously added.
+ *
+ * For instance, if requested names are:
+ * [ "some-icon-symbolic", "some-other-icon" ]
+ * and use-default-fallbacks is TRUE, the final name list shall be:
+ * [ "some-icon-symbolic", "some-symbolic", "some-other-icon",
+ *   "some-other", "some", "some-icon", "some-other-icon-symbolic",
+ *   "some-other-symbolic" ]
+ *
+ * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon
+ **/
+static void
+g_themed_icon_update_names (GThemedIcon *themed)
+{
+  GList *names    = NULL;
+  GList *variants = NULL;
+  GList *iter;
+  guint  i;
+
+  g_return_if_fail (themed->init_names != NULL && themed->init_names[0] != NULL);
+
+  for (i = 0; themed->init_names[i]; i++)
+    {
+      gchar    *name;
+      gboolean  is_symbolic;
+
+      is_symbolic = g_str_has_suffix (themed->init_names[i], "-symbolic");
+      if (is_symbolic)
+        name = g_strndup (themed->init_names[i], strlen (themed->init_names[i]) - 9);
+      else
+        name = g_strdup (themed->init_names[i]);
+
+      if (g_list_find_custom (names, name, (GCompareFunc) g_strcmp0))
+        {
+          g_free (name);
+          continue;
+        }
+
+      if (is_symbolic)
+        names = g_list_prepend (names, g_strdup (themed->init_names[i]));
+      else
+        names = g_list_prepend (names, name);
+
+      if (themed->use_default_fallbacks)
+        {
+          char *dashp;
+          char *last;
+
+          last = name;
+
+          while ((dashp = strrchr (last, '-')) != NULL)
+            {
+              gchar *tmp = last;
+              gchar *fallback;
+
+              last = g_strndup (last, dashp - last);
+              if (is_symbolic)
+                {
+                  g_free (tmp);
+                  fallback = g_strdup_printf ("%s-symbolic", last);
+                }
+              else
+                fallback = last;
+              if (g_list_find_custom (names, fallback, (GCompareFunc) g_strcmp0))
+                {
+                  g_free (fallback);
+                  break;
+                }
+              names = g_list_prepend (names, fallback);
+            }
+          if (is_symbolic)
+            g_free (last);
+        }
+      else if (is_symbolic)
+        g_free (name);
+    }
+  for (iter = names; iter; iter = iter->next)
+    {
+      gchar    *name = (gchar *) iter->data;
+      gchar    *variant;
+      gboolean  is_symbolic;
+
+      is_symbolic = g_str_has_suffix (name, "-symbolic");
+      if (is_symbolic)
+        variant = g_strndup (name, strlen (name) - 9);
+      else
+        variant = g_strdup_printf ("%s-symbolic", name);
+      if (g_list_find_custom (names, variant, (GCompareFunc) g_strcmp0) ||
+          g_list_find_custom (variants, variant, (GCompareFunc) g_strcmp0))
+        {
+          g_free (variant);
+          continue;
+        }
+
+      variants = g_list_prepend (variants, variant);
+    }
+  names = g_list_reverse (names);
+
+  g_strfreev (themed->names);
+  themed->names = g_new (char *, g_list_length (names) + g_list_length (variants) + 1);
+
+  for (iter = names, i = 0; iter; iter = iter->next, i++)
+    themed->names[i] = iter->data;
+  for (iter = variants; iter; iter = iter->next, i++)
+    themed->names[i] = iter->data;
+  themed->names[i] = NULL;
+
+  g_list_free (names);
+  g_list_free (variants);
+
+  g_object_notify (G_OBJECT (themed), "names");
 }
 
 /**
@@ -402,12 +479,12 @@
   g_return_if_fail (G_IS_THEMED_ICON (icon));
   g_return_if_fail (iconname != NULL);
 
-  num_names = g_strv_length (icon->names);
-  icon->names = g_realloc (icon->names, sizeof (char*) * (num_names + 2));
-  icon->names[num_names] = g_strdup (iconname);
-  icon->names[num_names + 1] = NULL;
+  num_names = g_strv_length (icon->init_names);
+  icon->init_names = g_realloc (icon->init_names, sizeof (char*) * (num_names + 2));
+  icon->init_names[num_names] = g_strdup (iconname);
+  icon->init_names[num_names + 1] = NULL;
 
-  g_object_notify (G_OBJECT (icon), "names");
+  g_themed_icon_update_names (icon);
 }
 
 /**
@@ -433,17 +510,17 @@
   g_return_if_fail (G_IS_THEMED_ICON (icon));
   g_return_if_fail (iconname != NULL);
 
-  num_names = g_strv_length (icon->names);
+  num_names = g_strv_length (icon->init_names);
   names = g_new (char*, num_names + 2);
-  for (i = 0; icon->names[i]; i++)
-    names[i + 1] = icon->names[i];
+  for (i = 0; icon->init_names[i]; i++)
+    names[i + 1] = icon->init_names[i];
   names[0] = g_strdup (iconname);
   names[num_names + 1] = NULL;
 
-  g_free (icon->names);
-  icon->names = names;
+  g_free (icon->init_names);
+  icon->init_names = names;
 
-  g_object_notify (G_OBJECT (icon), "names");
+  g_themed_icon_update_names (icon);
 }
 
 static guint
diff --git a/gio/gtlsclientconnection.c b/gio/gtlsclientconnection.c
index f80c625..b38fad6 100644
--- a/gio/gtlsclientconnection.c
+++ b/gio/gtlsclientconnection.c
@@ -105,14 +105,7 @@
    *
    * If %TRUE, forces the connection to use a fallback version of TLS
    * or SSL, rather than trying to negotiate the best version of TLS
-   * to use. This can be used when talking to servers that don't
-   * implement version negotiation correctly and therefore refuse to
-   * handshake at all with a modern TLS handshake.
-   *
-   * Despite the property name, the fallback version is usually not
-   * SSL 3.0, because SSL 3.0 is generally disabled by the #GTlsBackend.
-   * #GTlsClientConnection will use the next-highest available version
-   * as the fallback version.
+   * to use. See g_tls_client_connection_set_use_ssl3().
    *
    * Since: 2.28
    *
@@ -304,14 +297,19 @@
  * @conn: the #GTlsClientConnection
  * @use_ssl3: whether to use the lowest-supported protocol version
  *
- * If @use_ssl3 is %TRUE, this forces @conn to use the lowest-supported
- * TLS protocol version rather than trying to properly negotiate the
- * highest mutually-supported protocol version with the peer. This can
- * be used when talking to broken TLS servers that exhibit protocol
- * version intolerance.
+ * Since 2.42.1, if @use_ssl3 is %TRUE, this forces @conn to use the
+ * lowest-supported TLS protocol version rather than trying to properly
+ * negotiate the highest mutually-supported protocol version with the
+ * peer. Be aware that SSL 3.0 is generally disabled by the
+ * #GTlsBackend, so the lowest-supported protocol version is probably
+ * not SSL 3.0.
  *
- * Be aware that SSL 3.0 is generally disabled by the #GTlsBackend, so
- * the lowest-supported protocol version is probably not SSL 3.0.
+ * Since 2.58, this may additionally cause an RFC 7507 fallback SCSV to
+ * be sent to the server, causing modern TLS servers to immediately
+ * terminate the connection. You should generally only use this function
+ * if you need to connect to broken servers that exhibit TLS protocol
+ * version intolerance, and when an initial attempt to connect to a
+ * server normally has already failed.
  *
  * Since: 2.28
  *
diff --git a/gio/gtlsconnection.c b/gio/gtlsconnection.c
index e13d986..b0353af 100644
--- a/gio/gtlsconnection.c
+++ b/gio/gtlsconnection.c
@@ -674,7 +674,8 @@
  * @conn: a #GTlsConnection
  * @mode: the rehandshaking mode
  *
- * Sets how @conn behaves with respect to rehandshaking requests.
+ * Sets how @conn behaves with respect to rehandshaking requests, when
+ * TLS 1.2 or older is in use.
  *
  * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
  * rehandshake after the initial handshake is complete. (For a client,
@@ -756,7 +757,8 @@
  * the beginning of the communication, you do not need to call this
  * function explicitly unless you want clearer error reporting.
  * However, you may call g_tls_connection_handshake() later on to
- * renegotiate parameters (encryption methods, etc) with the client.
+ * rehandshake, if TLS 1.2 or older is in use. With TLS 1.3, this will
+ * instead perform a rekey.
  *
  * #GTlsConnection::accept_certificate may be emitted during the
  * handshake.
diff --git a/gio/gvdb/gvdb-builder.c b/gio/gvdb/gvdb-builder.c
index 8b9baa0..2383e60 100644
--- a/gio/gvdb/gvdb-builder.c
+++ b/gio/gvdb/gvdb-builder.c
@@ -339,6 +339,13 @@
 #undef chunk
 
   memset (*bloom_filter, 0, n_bloom_words * sizeof (guint32_le));
+
+  /* NOTE - the code to actually fill in the bloom filter here is missing.
+   * Patches welcome! 
+   *
+   * http://en.wikipedia.org/wiki/Bloom_filter
+   * http://0pointer.de/blog/projects/bloom.html
+   */
 }
 
 static void
diff --git a/gio/gvdb/gvdb-reader.c b/gio/gvdb/gvdb-reader.c
index 510eba2..aa3154f 100644
--- a/gio/gvdb/gvdb-reader.c
+++ b/gio/gvdb/gvdb-reader.c
@@ -23,15 +23,11 @@
 #include <string.h>
 
 struct _GvdbTable {
-  gint ref_count;
+  GBytes *bytes;
 
   const gchar *data;
   gsize size;
 
-  gpointer user_data;
-  GvdbRefFunc ref_user_data;
-  GDestroyNotify unref_user_data;
-
   gboolean byteswapped;
   gboolean trusted;
 
@@ -124,80 +120,81 @@
   file->n_hash_items = size / sizeof (struct gvdb_hash_item);
 }
 
-static GvdbTable *
-new_from_data (const void    *data,
-	       gsize          data_len,
-	       gboolean       trusted,
-	       gpointer       user_data,
-	       GvdbRefFunc    ref,
-	       GDestroyNotify unref,
-	       const char    *filename,
-	       GError       **error)
+/**
+ * gvdb_table_new_from_bytes:
+ * @bytes: the #GBytes with the data
+ * @trusted: if the contents of @bytes are trusted
+ * @error: %NULL, or a pointer to a %NULL #GError
+ *
+ * Creates a new #GvdbTable from the contents of @bytes.
+ *
+ * This call can fail if the header contained in @bytes is invalid or if @bytes
+ * is empty; if so, %G_FILE_ERROR_INVAL will be returned.
+ *
+ * You should call gvdb_table_free() on the return result when you no
+ * longer require it.
+ *
+ * Returns: a new #GvdbTable
+ **/
+GvdbTable *
+gvdb_table_new_from_bytes (GBytes    *bytes,
+                           gboolean   trusted,
+                           GError   **error)
 {
+  const struct gvdb_header *header;
   GvdbTable *file;
 
   file = g_slice_new0 (GvdbTable);
-  file->data = data;
-  file->size = data_len;
+  file->bytes = g_bytes_ref (bytes);
+  file->data = g_bytes_get_data (bytes, &file->size);
   file->trusted = trusted;
-  file->ref_count = 1;
-  file->ref_user_data = ref;
-  file->unref_user_data = unref;
-  file->user_data = user_data;
 
-  if (sizeof (struct gvdb_header) <= file->size)
-    {
-      const struct gvdb_header *header = (gpointer) file->data;
+  if (file->size < sizeof (struct gvdb_header))
+    goto invalid;
 
-      if (header->signature[0] == GVDB_SIGNATURE0 &&
-          header->signature[1] == GVDB_SIGNATURE1 &&
-          guint32_from_le (header->version) == 0)
-        file->byteswapped = FALSE;
+  header = (gpointer) file->data;
 
-      else if (header->signature[0] == GVDB_SWAPPED_SIGNATURE0 &&
-               header->signature[1] == GVDB_SWAPPED_SIGNATURE1 &&
-               guint32_from_le (header->version) == 0)
-        file->byteswapped = TRUE;
+  if (header->signature[0] == GVDB_SIGNATURE0 &&
+      header->signature[1] == GVDB_SIGNATURE1 &&
+      guint32_from_le (header->version) == 0)
+    file->byteswapped = FALSE;
 
-      else
-        {
-	  if (filename)
-	    g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL,
-			 "%s: invalid header", filename);
-	  else
-	    g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL,
-			 "invalid gvdb header");
-          g_slice_free (GvdbTable, file);
-	  if (unref)
-	    unref (user_data);
+  else if (header->signature[0] == GVDB_SWAPPED_SIGNATURE0 &&
+           header->signature[1] == GVDB_SWAPPED_SIGNATURE1 &&
+           guint32_from_le (header->version) == 0)
+    file->byteswapped = TRUE;
 
-          return NULL;
-        }
+  else
+    goto invalid;
 
-      gvdb_table_setup_root (file, &header->root);
-    }
+  gvdb_table_setup_root (file, &header->root);
 
   return file;
+
+invalid:
+  g_set_error_literal (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, "invalid gvdb header");
+
+  g_bytes_unref (file->bytes);
+
+  g_slice_free (GvdbTable, file);
+
+  return NULL;
 }
 
 /**
  * gvdb_table_new:
- * @filename: the path to the hash file
- * @trusted: if the contents of @filename are trusted
+ * @filename: a filename
+ * @trusted: if the contents of @bytes are trusted
  * @error: %NULL, or a pointer to a %NULL #GError
  *
- * Creates a new #GvdbTable from the contents of the file found at
- * @filename.
+ * Creates a new #GvdbTable using the #GMappedFile for @filename as the
+ * #GBytes.
  *
- * The only time this function fails is if the file cannot be opened.
+ * This function will fail if the file cannot be opened.
  * In that case, the #GError that is returned will be an error from
  * g_mapped_file_new().
  *
- * An empty or otherwise corrupted file is considered to be a valid
- * #GvdbTable with no entries.
- *
- * You should call gvdb_table_unref() on the return result when you no
- * longer require it.
+ * An empty or corrupt file will result in %G_FILE_ERROR_INVAL.
  *
  * Returns: a new #GvdbTable
  **/
@@ -207,53 +204,21 @@
                 GError      **error)
 {
   GMappedFile *mapped;
+  GvdbTable *table;
+  GBytes *bytes;
 
-  if ((mapped = g_mapped_file_new (filename, FALSE, error)) == NULL)
+  mapped = g_mapped_file_new (filename, FALSE, error);
+  if (!mapped)
     return NULL;
 
-  return new_from_data (g_mapped_file_get_contents (mapped),
-			g_mapped_file_get_length (mapped),
-			trusted,
-			mapped,
-			(GvdbRefFunc)g_mapped_file_ref,
-			(GDestroyNotify)g_mapped_file_unref,
-			filename,
-			error);
-}
+  bytes = g_mapped_file_get_bytes (mapped);
+  table = gvdb_table_new_from_bytes (bytes, trusted, error);
+  g_mapped_file_unref (mapped);
+  g_bytes_unref (bytes);
 
-/**
- * gvdb_table_new_from_data:
- * @data: the data
- * @data_len: the length of @data in bytes
- * @trusted: if the contents of @data are trusted
- * @user_data: User supplied data that owns @data
- * @ref: Ref function for @user_data
- * @unref: Unref function for @user_data
- *
- * Creates a new #GvdbTable from the data in @data.
- *
- * An empty or otherwise corrupted data is considered to be a valid
- * #GvdbTable with no entries.
- *
- * You should call gvdb_table_unref() on the return result when you no
- * longer require it.
- *
- * Returns: a new #GvdbTable
- **/
-GvdbTable *
-gvdb_table_new_from_data (const void    *data,
-			  gsize          data_len,
-			  gboolean       trusted,
-			  gpointer       user_data,
-			  GvdbRefFunc    ref,
-			  GDestroyNotify unref,
-			  GError        **error)
-{
-  return new_from_data (data, data_len,
-			trusted,
-			user_data, ref, unref,
-			NULL,
-			error);
+  g_prefix_error (error, "%s: ", filename);
+
+  return table;
 }
 
 static gboolean
@@ -346,18 +311,6 @@
   return NULL;
 }
 
-static const struct gvdb_hash_item *
-gvdb_table_get_item (GvdbTable  *table,
-                     guint32_le  item_no)
-{
-  guint32 item_no_native = guint32_from_le (item_no);
-
-  if G_LIKELY (item_no_native < table->n_hash_items)
-    return table->hash_items + item_no_native;
-
-  return NULL;
-}
-
 static gboolean
 gvdb_table_list_from_item (GvdbTable                    *table,
                            const struct gvdb_hash_item  *item,
@@ -376,6 +329,155 @@
   return TRUE;
 }
 
+/**
+ * gvdb_table_get_names:
+ * @table: a #GvdbTable
+ * @length: the number of items returned, or %NULL
+ *
+ * Gets a list of all names contained in @table.
+ *
+ * No call to gvdb_table_get_table(), gvdb_table_list() or
+ * gvdb_table_get_value() will succeed unless it is for one of the
+ * names returned by this function.
+ *
+ * Note that some names that are returned may still fail for all of the
+ * above calls in the case of the corrupted file.  Note also that the
+ * returned strings may not be utf8.
+ *
+ * Returns: a %NULL-terminated list of strings, of length @length
+ **/
+gchar **
+gvdb_table_get_names (GvdbTable *table,
+                      gint      *length)
+{
+  gchar **names;
+  gint n_names;
+  gint filled;
+  gint total;
+  gint i;
+
+  /* We generally proceed by iterating over the list of items in the
+   * hash table (in order of appearance) recording them into an array.
+   *
+   * Each item has a parent item (except root items).  The parent item
+   * forms part of the name of the item.  We could go fetching the
+   * parent item chain at the point that we encounter each item but then
+   * we would need to implement some sort of recursion along with checks
+   * for self-referential items.
+   *
+   * Instead, we do a number of passes.  Each pass will build up one
+   * level of names (starting from the root).  We continue to do passes
+   * until no more items are left.  The first pass will only add root
+   * items and each further pass will only add items whose direct parent
+   * is an item added in the immediately previous pass.  It's also
+   * possible that items get filled if they follow their parent within a
+   * particular pass.
+   *
+   * At most we will have a number of passes equal to the depth of the
+   * tree.  Self-referential items will never be filled in (since their
+   * parent will have never been filled in).  We continue until we have
+   * a pass that fills in no additional items.
+   *
+   * This takes an O(n) algorithm and turns it into O(n*m) where m is
+   * the depth of the tree, but in all sane cases the tree won't be very
+   * deep and the constant factor of this algorithm is lower (and the
+   * complexity of coding it, as well).
+   */
+
+  n_names = table->n_hash_items;
+  names = g_new0 (gchar *, n_names + 1);
+
+  /* 'names' starts out all-NULL.  On each pass we record the number
+   * of items changed from NULL to non-NULL in 'filled' so we know if we
+   * should repeat the loop.  'total' counts the total number of items
+   * filled.  If 'total' ends up equal to 'n_names' then we know that
+   * 'names' has been completely filled.
+   */
+
+  total = 0;
+  do
+    {
+      /* Loop until we have filled no more entries */
+      filled = 0;
+
+      for (i = 0; i < n_names; i++)
+        {
+          const struct gvdb_hash_item *item = &table->hash_items[i];
+          const gchar *name;
+          gsize name_length;
+          guint32 parent;
+
+          /* already got it on a previous pass */
+          if (names[i] != NULL)
+            continue;
+
+          parent = guint32_from_le (item->parent);
+
+          if (parent == 0xffffffffu)
+            {
+              /* it's a root item */
+              name = gvdb_table_item_get_key (table, item, &name_length);
+
+              if (name != NULL)
+                {
+                  names[i] = g_strndup (name, name_length);
+                  filled++;
+                }
+            }
+
+          else if (parent < n_names && names[parent] != NULL)
+            {
+              /* It's a non-root item whose parent was filled in already.
+               *
+               * Calculate the name of this item by combining it with
+               * its parent name.
+               */
+              name = gvdb_table_item_get_key (table, item, &name_length);
+
+              if (name != NULL)
+                {
+                  const gchar *parent_name = names[parent];
+                  gsize parent_length;
+                  gchar *fullname;
+
+                  parent_length = strlen (parent_name);
+                  fullname = g_malloc (parent_length + name_length + 1);
+                  memcpy (fullname, parent_name, parent_length);
+                  memcpy (fullname + parent_length, name, name_length);
+                  fullname[parent_length + name_length] = '\0';
+                  names[i] = fullname;
+                  filled++;
+                }
+            }
+        }
+
+      total += filled;
+    }
+  while (filled && total < n_names);
+
+  /* If the table was corrupted then 'names' may have holes in it.
+   * Collapse those.
+   */
+  if G_UNLIKELY (total != n_names)
+    {
+      GPtrArray *fixed_names;
+
+      fixed_names = g_ptr_array_new ();
+      for (i = 0; i < n_names; i++)
+        if (names[i] != NULL)
+          g_ptr_array_add (fixed_names, names[i]);
+
+      g_free (names);
+      n_names = fixed_names->len;
+      g_ptr_array_add (fixed_names, NULL);
+      names = (gchar **) g_ptr_array_free (fixed_names, FALSE);
+    }
+
+  if (length)
+    *length = n_names;
+
+  return names;
+}
 
 /**
  * gvdb_table_list:
@@ -457,7 +559,15 @@
 gvdb_table_has_value (GvdbTable    *file,
                       const gchar  *key)
 {
-  return gvdb_table_lookup (file, key, 'v') != NULL;
+  static const struct gvdb_hash_item *item;
+  gsize size;
+
+  item = gvdb_table_lookup (file, key, 'v');
+
+  if (item == NULL)
+    return FALSE;
+
+  return gvdb_table_dereference (file, &item->value.pointer, 8, &size) != NULL;
 }
 
 static GVariant *
@@ -466,6 +576,7 @@
 {
   GVariant *variant, *value;
   gconstpointer data;
+  GBytes *bytes;
   gsize size;
 
   data = gvdb_table_dereference (table, &item->value.pointer, 8, &size);
@@ -473,12 +584,11 @@
   if G_UNLIKELY (data == NULL)
     return NULL;
 
-  variant = g_variant_new_from_data (G_VARIANT_TYPE_VARIANT,
-                                     data, size, table->trusted,
-                                     table->unref_user_data,
-                                     table->ref_user_data ? table->ref_user_data (table->user_data) : table->user_data);
+  bytes = g_bytes_new_from_bytes (table->bytes, ((gchar *) data) - table->data, size);
+  variant = g_variant_new_from_bytes (G_VARIANT_TYPE_VARIANT, bytes, table->trusted);
   value = g_variant_get_variant (variant);
   g_variant_unref (variant);
+  g_bytes_unref (bytes);
 
   return value;
 }
@@ -562,7 +672,7 @@
  * contained in the file.  This newly-created #GvdbTable does not depend
  * on the continued existence of @file.
  *
- * You should call gvdb_table_unref() on the return result when you no
+ * You should call gvdb_table_free() on the return result when you no
  * longer require it.
  *
  * Returns: a new #GvdbTable, or %NULL
@@ -580,14 +690,11 @@
     return NULL;
 
   new = g_slice_new0 (GvdbTable);
-  new->user_data = file->ref_user_data ? file->ref_user_data (file->user_data) : file->user_data;
-  new->ref_user_data = file->ref_user_data;
-  new->unref_user_data = file->unref_user_data;
+  new->bytes = g_bytes_ref (file->bytes);
   new->byteswapped = file->byteswapped;
   new->trusted = file->trusted;
   new->data = file->data;
   new->size = file->size;
-  new->ref_count = 1;
 
   gvdb_table_setup_root (new, &item->value.pointer);
 
@@ -595,38 +702,16 @@
 }
 
 /**
- * gvdb_table_ref:
+ * gvdb_table_free:
  * @file: a #GvdbTable
  *
- * Increases the reference count on @file.
- *
- * Returns: a new reference on @file
- **/
-GvdbTable *
-gvdb_table_ref (GvdbTable *file)
-{
-  g_atomic_int_inc (&file->ref_count);
-
-  return file;
-}
-
-/**
- * gvdb_table_unref:
- * @file: a #GvdbTable
- *
- * Decreases the reference count on @file, possibly freeing it.
- *
- * Since: 2.26
+ * Frees @file.
  **/
 void
-gvdb_table_unref (GvdbTable *file)
+gvdb_table_free (GvdbTable *file)
 {
-  if (g_atomic_int_dec_and_test (&file->ref_count))
-    {
-      if (file->unref_user_data)
-	file->unref_user_data (file->user_data);
-      g_slice_free (GvdbTable, file);
-    }
+  g_bytes_unref (file->bytes);
+  g_slice_free (GvdbTable, file);
 }
 
 /**
@@ -646,105 +731,3 @@
 {
   return !!*table->data;
 }
-
-/**
- * gvdb_table_walk:
- * @table: a #GvdbTable
- * @key: a key corresponding to a list
- * @open_func: the #GvdbWalkOpenFunc
- * @value_func: the #GvdbWalkValueFunc
- * @close_func: the #GvdbWalkCloseFunc
- * @user_data: data to pass to the callbacks
- *
- * Looks up the list at @key and iterate over the items in it.
- *
- * First, @open_func is called to signal that we are starting to iterate over
- * the list.  Then the list is iterated.  When all items in the list have been
- * iterated over, the @close_func is called.
- *
- * When iterating, if a given item in the list is a value then @value_func is
- * called.
- *
- * If a given item in the list is itself a list then @open_func is called.  If
- * that function returns %TRUE then the walk begins iterating the items in the
- * sublist, until there are no more items, at which point a matching
- * @close_func call is made.  If @open_func returns %FALSE then no iteration of
- * the sublist occurs and no corresponding @close_func call is made.
- **/
-void
-gvdb_table_walk (GvdbTable         *table,
-                 const gchar       *key,
-                 GvdbWalkOpenFunc   open_func,
-                 GvdbWalkValueFunc  value_func,
-                 GvdbWalkCloseFunc  close_func,
-                 gpointer           user_data)
-{
-  const struct gvdb_hash_item *item;
-  const guint32_le *pointers[64];
-  const guint32_le *enders[64];
-  gsize name_lengths[64];
-  gint index = 0;
-
-  item = gvdb_table_lookup (table, key, 'L');
-  name_lengths[0] = 0;
-  pointers[0] = NULL;
-  enders[0] = NULL;
-  goto start_here;
-
-  while (index)
-    {
-      close_func (name_lengths[index], user_data);
-      index--;
-
-      while (pointers[index] < enders[index])
-        {
-          const gchar *name;
-          gsize name_len;
-
-          item = gvdb_table_get_item (table, *pointers[index]++);
- start_here:
-
-          if (item != NULL &&
-              (name = gvdb_table_item_get_key (table, item, &name_len)))
-            {
-              if (item->type == 'L')
-                {
-                  if (open_func (name, name_len, user_data))
-                    {
-                      guint length = 0;
-
-                      index++;
-                      g_assert (index < 64);
-
-                      gvdb_table_list_from_item (table, item,
-                                                 &pointers[index],
-                                                 &length);
-                      enders[index] = pointers[index] + length;
-                      name_lengths[index] = name_len;
-                    }
-                }
-              else if (item->type == 'v')
-                {
-                  GVariant *value;
-
-                  value = gvdb_table_value_from_item (table, item);
-
-                  if (value != NULL)
-                    {
-                      if (table->byteswapped)
-                        {
-                          GVariant *tmp;
-
-                          tmp = g_variant_byteswap (value);
-                          g_variant_unref (value);
-                          value = tmp;
-                        }
-
-                      value_func (name, name_len, value, user_data);
-                      g_variant_unref (value);
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/gio/gvdb/gvdb-reader.h b/gio/gvdb/gvdb-reader.h
index 449241e..3982773 100644
--- a/gio/gvdb/gvdb-reader.h
+++ b/gio/gvdb/gvdb-reader.h
@@ -24,27 +24,21 @@
 
 typedef struct _GvdbTable GvdbTable;
 
-typedef gpointer (*GvdbRefFunc) (gpointer data);
-
 G_BEGIN_DECLS
 
 G_GNUC_INTERNAL
+GvdbTable *             gvdb_table_new_from_bytes                       (GBytes       *bytes,
+                                                                         gboolean      trusted,
+                                                                         GError      **error);
+G_GNUC_INTERNAL
 GvdbTable *             gvdb_table_new                                  (const gchar  *filename,
                                                                          gboolean      trusted,
                                                                          GError      **error);
 G_GNUC_INTERNAL
-GvdbTable *             gvdb_table_new_from_data                        (const void   *data,
-									 gsize         data_len,
-                                                                         gboolean      trusted,
-									 gpointer      user_data,
-									 GvdbRefFunc   ref,
-									 GDestroyNotify unref,
-									 GError      **error);
+void                    gvdb_table_free                                 (GvdbTable    *table);
 G_GNUC_INTERNAL
-GvdbTable *             gvdb_table_ref                                  (GvdbTable    *table);
-G_GNUC_INTERNAL
-void                    gvdb_table_unref                                (GvdbTable    *table);
-
+gchar **                gvdb_table_get_names                            (GvdbTable    *table,
+                                                                         gint         *length);
 G_GNUC_INTERNAL
 gchar **                gvdb_table_list                                 (GvdbTable    *table,
                                                                          const gchar  *key);
@@ -61,28 +55,9 @@
 G_GNUC_INTERNAL
 gboolean                gvdb_table_has_value                            (GvdbTable    *table,
                                                                          const gchar  *key);
-
 G_GNUC_INTERNAL
 gboolean                gvdb_table_is_valid                             (GvdbTable    *table);
 
-typedef void          (*GvdbWalkValueFunc)                              (const gchar       *name,
-                                                                         gsize              name_len,
-                                                                         GVariant          *value,
-                                                                         gpointer           user_data);
-typedef gboolean      (*GvdbWalkOpenFunc)                               (const gchar       *name,
-                                                                         gsize              name_len,
-                                                                         gpointer           user_data);
-typedef void          (*GvdbWalkCloseFunc)                              (gsize              name_len,
-                                                                         gpointer           user_data);
-
-G_GNUC_INTERNAL
-void                    gvdb_table_walk                                 (GvdbTable         *table,
-                                                                         const gchar       *key,
-                                                                         GvdbWalkOpenFunc   open_func,
-                                                                         GvdbWalkValueFunc  value_func,
-                                                                         GvdbWalkCloseFunc  close_func,
-                                                                         gpointer           user_data);
-
 G_END_DECLS
 
 #endif /* __gvdb_reader_h__ */
diff --git a/gio/gvdb/gvdb.doap b/gio/gvdb/gvdb.doap
index b4ae60c..8c5f3e8 100644
--- a/gio/gvdb/gvdb.doap
+++ b/gio/gvdb/gvdb.doap
@@ -23,9 +23,34 @@
 
   <maintainer>
     <foaf:Person>
-      <foaf:name>Ryan Lortie</foaf:name>
-      <foaf:mbox rdf:resource='mailto:desrt@desrt.ca'/>
-      <gnome:userid>ryanl</gnome:userid>
+      <foaf:name>Matthias Clasen</foaf:name>
+      <foaf:mbox rdf:resource="mailto:mclasen@redhat.com"/>
+      <gnome:userid>matthiasc</gnome:userid>
+    </foaf:Person>
+  </maintainer>
+
+  <maintainer>
+    <foaf:Person>
+      <foaf:name>Allison Ryan Lortie</foaf:name>
+      <foaf:mbox rdf:resource="mailto:desrt@desrt.ca"/>
+      <gnome:userid>desrt</gnome:userid>
+    </foaf:Person>
+  </maintainer>
+
+  <maintainer>
+    <foaf:Person>
+      <foaf:name>Philip Withnall</foaf:name>
+      <foaf:mbox rdf:resource="mailto:philip@tecnocode.co.uk"/>
+      <foaf:mbox rdf:resource="mailto:withnall@endlessm.com"/>
+      <gnome:userid>pwithnall</gnome:userid>
+    </foaf:Person>
+  </maintainer>
+
+  <maintainer>
+    <foaf:Person>
+      <foaf:name>Emmanuele Bassi</foaf:name>
+      <foaf:mbox rdf:resource="mailto:ebassi@gnome.org"/>
+      <gnome:userid>ebassi</gnome:userid>
     </foaf:Person>
   </maintainer>
 
diff --git a/gio/tests/g-icon.c b/gio/tests/g-icon.c
index 598ae94..7f87e49 100644
--- a/gio/tests/g-icon.c
+++ b/gio/tests/g-icon.c
@@ -108,9 +108,18 @@
   g_object_unref (location);
 #endif
 
+  icon = g_themed_icon_new_with_default_fallbacks ("some-icon-symbolic");
+  g_themed_icon_append_name (G_THEMED_ICON (icon), "some-other-icon");
+  data = g_icon_to_string (icon);
+  g_assert_cmpstr (data, ==, ". GThemedIcon "
+                             "some-icon-symbolic some-symbolic some-other-icon some-other some "
+                             "some-icon some-other-icon-symbolic some-other-symbolic");
+  g_free (data);
+  g_object_unref (icon);
+
   icon = g_themed_icon_new ("network-server");
   data = g_icon_to_string (icon);
-  g_assert_cmpstr (data, ==, "network-server");
+  g_assert_cmpstr (data, ==, ". GThemedIcon network-server network-server-symbolic");
   icon2 = g_icon_new_for_string (data, &error);
   g_assert_no_error (error);
   g_assert (g_icon_equal (icon, icon2));
@@ -371,7 +380,7 @@
 {
   GIcon *icon1, *icon2, *icon3, *icon4;
   const gchar *const *names;
-  const gchar *names2[] = { "first", "testicon", "last", NULL };
+  const gchar *names2[] = { "first-symbolic", "testicon", "last", NULL };
   gchar *str;
   gboolean fallbacks;
   GVariant *variant;
@@ -382,17 +391,21 @@
   g_assert (!fallbacks);
 
   names = g_themed_icon_get_names (G_THEMED_ICON (icon1));
-  g_assert_cmpint (g_strv_length ((gchar **)names), ==, 1);
+  g_assert_cmpint (g_strv_length ((gchar **)names), ==, 2);
   g_assert_cmpstr (names[0], ==, "testicon");
+  g_assert_cmpstr (names[1], ==, "testicon-symbolic");
 
-  g_themed_icon_prepend_name (G_THEMED_ICON (icon1), "first");
+  g_themed_icon_prepend_name (G_THEMED_ICON (icon1), "first-symbolic");
   g_themed_icon_append_name (G_THEMED_ICON (icon1), "last");
   names = g_themed_icon_get_names (G_THEMED_ICON (icon1));
-  g_assert_cmpint (g_strv_length ((gchar **)names), ==, 3);
-  g_assert_cmpstr (names[0], ==, "first");
+  g_assert_cmpint (g_strv_length ((gchar **)names), ==, 6);
+  g_assert_cmpstr (names[0], ==, "first-symbolic");
   g_assert_cmpstr (names[1], ==, "testicon");
   g_assert_cmpstr (names[2], ==, "last");
-  g_assert_cmpuint (g_icon_hash (icon1), ==, 2400773466U);
+  g_assert_cmpstr (names[3], ==, "first");
+  g_assert_cmpstr (names[4], ==, "testicon-symbolic");
+  g_assert_cmpstr (names[5], ==, "last-symbolic");
+  g_assert_cmpuint (g_icon_hash (icon1), ==, 1812785139);
 
   icon2 = g_themed_icon_new_from_names ((gchar**)names2, -1);
   g_assert (g_icon_equal (icon1, icon2));
@@ -448,11 +461,11 @@
 
   emblem = emblems->data;
   g_assert (g_emblem_get_icon (emblem) == icon2);
-  g_assert (g_emblem_get_origin (emblem) == G_EMBLEM_ORIGIN_TAG);
+  g_assert (g_emblem_get_origin (emblem) == G_EMBLEM_ORIGIN_UNKNOWN);
 
   emblem = emblems->next->data;
   g_assert (g_emblem_get_icon (emblem) == icon2);
-  g_assert (g_emblem_get_origin (emblem) == G_EMBLEM_ORIGIN_UNKNOWN);
+  g_assert (g_emblem_get_origin (emblem) == G_EMBLEM_ORIGIN_TAG);
 
   g_emblemed_icon_clear_emblems (G_EMBLEMED_ICON (icon4));
   g_assert (g_emblemed_icon_get_emblems (G_EMBLEMED_ICON (icon4)) == NULL);
diff --git a/gio/tests/gdbus-unix-addresses.c b/gio/tests/gdbus-unix-addresses.c
index 746a7c2..531ce7a 100644
--- a/gio/tests/gdbus-unix-addresses.c
+++ b/gio/tests/gdbus-unix-addresses.c
@@ -128,6 +128,7 @@
       g_unsetenv ("DISPLAY");
       g_unsetenv ("DBUS_SESSION_BUS_ADDRESS");
       g_unsetenv ("XDG_RUNTIME_DIR");
+      g_unsetenv ("G_MESSAGES_DEBUG");
       set_up_mock_dbus_launch ();
 
       print_address ();
diff --git a/gio/tests/gnotification.c b/gio/tests/gnotification.c
index c896af6..80d476d 100644
--- a/gio/tests/gnotification.c
+++ b/gio/tests/gnotification.c
@@ -219,7 +219,8 @@
   g_assert (G_IS_THEMED_ICON (rn->icon));
   names = g_themed_icon_get_names (G_THEMED_ICON (rn->icon));
   g_assert_cmpstr (names[0], ==, "i-c-o-n");
-  g_assert (names[1] == NULL);
+  g_assert_cmpstr (names[1], ==, "i-c-o-n-symbolic");
+  g_assert_null (names[2]);
   g_assert (rn->priority == G_NOTIFICATION_PRIORITY_HIGH);
 
   g_assert_cmpint (rn->buttons->len, ==, 1);
diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c
index 2d18d4d..852a8b7 100644
--- a/gio/tests/gsettings.c
+++ b/gio/tests/gsettings.c
@@ -2353,6 +2353,18 @@
   g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
   g_clear_error (&error);
 
+  /* Test error handling of corrupt compiled files. */
+  source = g_settings_schema_source_new_from_directory ("schema-source-corrupt", parent, TRUE, &error);
+  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL);
+  g_assert_null (source);
+  g_clear_error (&error);
+
+  /* Test error handling of empty compiled files. */
+  source = g_settings_schema_source_new_from_directory ("schema-source-empty", parent, TRUE, &error);
+  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL);
+  g_assert_null (source);
+  g_clear_error (&error);
+
   /* create a source with the parent */
   source = g_settings_schema_source_new_from_directory ("schema-source", parent, TRUE, &error);
   g_assert_no_error (error);
@@ -2770,6 +2782,12 @@
 
   if (!g_test_subprocess ())
     {
+      GError *local_error = NULL;
+      /* A GVDB header is 6 guint32s, and requires a magic number in the first
+       * two guint32s. A set of zero bytes of a greater length is considered
+       * corrupt. */
+      const guint8 gschemas_compiled_corrupt[sizeof (guint32) * 7] = { 0, };
+
       backend_set = g_getenv ("GSETTINGS_BACKEND") != NULL;
 
       g_setenv ("XDG_DATA_DIRS", ".", TRUE);
@@ -2821,6 +2839,21 @@
                                            "--schema-file=" SRCDIR "/org.gtk.schemasourcecheck.gschema.xml",
                                            NULL, NULL, &result, NULL));
       g_assert (result == 0);
+
+      g_remove ("schema-source-corrupt/gschemas.compiled");
+      g_mkdir ("schema-source-corrupt", 0777);
+      g_file_set_contents ("schema-source-corrupt/gschemas.compiled",
+                           (const gchar *) gschemas_compiled_corrupt,
+                           sizeof (gschemas_compiled_corrupt),
+                           &local_error);
+      g_assert_no_error (local_error);
+
+      g_remove ("schema-source-empty/gschemas.compiled");
+      g_mkdir ("schema-source-empty", 0777);
+      g_file_set_contents ("schema-source-empty/gschemas.compiled",
+                           "", 0,
+                           &local_error);
+      g_assert_no_error (local_error);
    }
 
   g_test_add_func ("/gsettings/basic", test_basic);
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index 85d31d6..4e5ad25 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -15,69 +15,67 @@
   command: [gengiotypefuncs_prog, '@OUTPUT@', '@INPUT@'])
 
 #  Test programs buildable on all platforms
-gio_tests = [
-  'appmonitor',
-  'async-close-output-stream',
-  'async-splice-output-stream',
-  'buffered-input-stream',
-  'buffered-output-stream',
-  'cancellable',
-  'contexts',
-  'contenttype',
-  'converter-stream',
-  'credentials',
-  'data-input-stream',
-  'data-output-stream',
-  'defaultvalue',
-  'fileattributematcher',
-  'filter-streams',
-  'giomodule',
-  'gsubprocess',
-  'g-file',
-  'g-file-info',
-  'g-icon',
-  'gdbus-addresses',
-  'gdbus-message',
-  'inet-address',
-  'io-stream',
-  'memory-input-stream',
-  'memory-output-stream',
-  'monitor',
-  'mount-operation',
-  'network-address',
-  'network-monitor',
-  'network-monitor-race',
-  'permission',
-  'pollable',
-  'proxy-test',
-  'readwrite',
-  'simple-async-result',
-  'simple-proxy',
-  'sleepy-stream',
-  'socket',
-  'socket-listener',
-  'socket-service',
-  'srvtarget',
-  'task',
-  'vfs',
-  'volumemonitor',
-  'glistmodel',
-  'testfilemonitor',
-  'thumbnail-verification',
-  'tls-certificate',
-  'tls-interaction',
-]
-slow_tests = [
-  'actions',
-  'gdbus-export',
-  'gdbus-threading',
-  'testfilemonitor',
-]
+# FIXME: We are using list of dictionnaries until we can depend on Meson 0.48.0
+# that supports '+=' operator on dictionnaries.
+gio_tests = [{
+  'appmonitor' : {},
+  'async-close-output-stream' : {},
+  'async-splice-output-stream' : {},
+  'buffered-input-stream' : {},
+  'buffered-output-stream' : {},
+  'cancellable' : {},
+  'contexts' : {},
+  'contenttype' : {},
+  'converter-stream' : {},
+  'credentials' : {},
+  'data-input-stream' : {},
+  'data-output-stream' : {},
+  'defaultvalue' : {'extra_sources' : [giotypefuncs_inc]},
+  'fileattributematcher' : {},
+  'filter-streams' : {},
+  'giomodule' : {},
+  'gsubprocess' : {},
+  'g-file' : {},
+  'g-file-info' : {},
+  'g-icon' : {},
+  'gdbus-addresses' : {},
+  'gdbus-message' : {},
+  'inet-address' : {},
+  'io-stream' : {},
+  'memory-input-stream' : {},
+  'memory-output-stream' : {},
+  'monitor' : {},
+  'mount-operation' : {},
+  'network-address' : {},
+  'network-monitor' : {},
+  'network-monitor-race' : {},
+  'permission' : {},
+  'pollable' : {},
+  'proxy-test' : {},
+  'readwrite' : {},
+  'simple-async-result' : {},
+  'simple-proxy' : {},
+  'sleepy-stream' : {},
+  'socket' : {},
+  'socket-listener' : {},
+  'socket-service' : {},
+  'srvtarget' : {},
+  'task' : {},
+  'vfs' : {},
+  'volumemonitor' : {},
+  'glistmodel' : {},
+  'testfilemonitor' : {'suite' : ['slow']},
+  'thumbnail-verification' : {},
+  'tls-certificate' : {'extra_sources' : ['gtesttlsbackend.c']},
+  'tls-interaction' : {'extra_sources' : ['gtesttlsbackend.c']},
+}]
 
-test_extra_programs = [
-  ['gdbus-connection-flush-helper'],
-  ['gdbus-testserver'],
-]
+# FIXME: We are using list of dictionnaries until we can depend on Meson 0.48.0
+# that supports '+=' operator on dictionnaries.
+test_extra_programs = [{
+  'gdbus-connection-flush-helper' : {},
+  'gdbus-testserver' : {},
+}]
 
 test_env = environment()
 test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
@@ -110,49 +108,57 @@
 if dbus1_dep.found()
   glib_conf.set('HAVE_DBUS1', 1)
 
-  exe = executable('gdbus-serialization',
-      'gdbus-serialization.c', 'gdbus-tests.c',
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps + [dbus1_dep])
-  test('gdbus-serialization', exe, env : test_env, suite : ['gio'])
+  gio_tests += [{
+    'gdbus-serialization' : {
+      'extra_sources' : ['gdbus-tests.c'],
+      'dependencies' : [dbus1_dep],
+    }
+  }]
 endif
 
 #  Test programs buildable on UNIX only
 if host_machine.system() != 'windows'
-  gio_tests += [
-    'file',
-    'gdbus-peer',
-    'gdbus-peer-object-manager',
-    'live-g-file',
-    'socket-address',
-    'stream-rw_all',
-    'unix-fd',
-    'unix-mounts',
-    'unix-streams',
-    'g-file-info-filesystem-readonly',
-    'gschema-compile',
-    'trash',
-  ]
+  gio_tests += [{
+    'file' : {},
+    'gdbus-peer' : {'dependencies' : [libgdbus_example_objectmanager_dep]},
+    'gdbus-peer-object-manager' : {},
+    'live-g-file' : {},
+    'socket-address' : {},
+    'stream-rw_all' : {},
+    'unix-fd' : {},
+    'unix-mounts' : {},
+    'unix-streams' : {},
+    'g-file-info-filesystem-readonly' : {},
+    'gschema-compile' : {'install' : false},
+    'trash' : {},
+  }]
 
   # Uninstalled because of the check-for-executable logic in DesktopAppInfo
   # unable to find the installed executable
   if not glib_have_cocoa
-    gio_tests += [
-      'appinfo',
-      'desktop-app-info',
-    ]
+    gio_tests += [{
+      'appinfo' : {
+        'install' : false,
+      },
+      'desktop-app-info' : {
+        'install' : false,
+      },
+    }]
   endif
 
-  test_extra_programs += [
-    ['basic-application'],
-    ['dbus-launch'],
-    ['appinfo-test'],
-  ]
+  test_extra_programs += [{
+    'basic-application' : {},
+    'dbus-launch' : {},
+    'appinfo-test' : {},
+  }]
 
   if not glib_have_cocoa
-    test_extra_programs += [['apps']]
-    gio_tests += ['mimeapps']
+    test_extra_programs += [{
+      'apps' : {},
+    }]
+    gio_tests += [{
+      'mimeapps' : {},
+    }]
   endif
 
   #  Test programs that need to bring up a session bus (requires dbus-daemon)
@@ -181,71 +187,61 @@
                    '--annotate', 'org.project.Bar::TestSignal[array_of_strings]', 'Key8', 'Value8',
                    '@INPUT@'])
 
-    gio_dbus_tests = [
-      ['actions', [], []],
-      ['gdbus-auth', [], []],
-      ['gdbus-bz627724', [], []],
-      ['gdbus-close-pending', [], []],
-      ['gdbus-connection', [], []],
-      ['gdbus-connection-loss', [], []],
-      ['gdbus-connection-slow', [], []],
-      ['gdbus-error', [], []],
-      ['gdbus-exit-on-close', [], []],
-      ['gdbus-export', [], []],
-      ['gdbus-introspection', [], []],
-      ['gdbus-names', [], []],
-      ['gdbus-proxy', [], []],
-      ['gdbus-proxy-threads', [], [dbus1_dep]],
-      ['gdbus-proxy-well-known-name', [], []],
-      ['gdbus-test-codegen', [gdbus_test_codegen_generated], []],
-      ['gdbus-threading', [], []],
-      ['gmenumodel', [], []],
-      ['gnotification', ['gnotification-server.c'], []],
-    ]
+    extra_sources = ['gdbus-sessionbus.c', 'gdbus-tests.c']
+
+    gio_tests += [{
+      'actions' : {
+        'extra_sources' : extra_sources,
+        'suite' : ['slow'],
+      },
+      'gdbus-auth' : {'extra_sources' : extra_sources},
+      'gdbus-bz627724' : {'extra_sources' : extra_sources},
+      'gdbus-close-pending' : {'extra_sources' : extra_sources},
+      'gdbus-connection' : {'extra_sources' : extra_sources},
+      'gdbus-connection-loss' : {'extra_sources' : extra_sources},
+      'gdbus-connection-slow' : {'extra_sources' : extra_sources},
+      'gdbus-error' : {'extra_sources' : extra_sources},
+      'gdbus-exit-on-close' : {'extra_sources' : extra_sources},
+      'gdbus-export' : {
+        'extra_sources' : extra_sources,
+        'suite' : ['slow'],
+      },
+      'gdbus-introspection' : {'extra_sources' : extra_sources},
+      'gdbus-names' : {'extra_sources' : extra_sources},
+      'gdbus-proxy' : {'extra_sources' : extra_sources},
+      'gdbus-proxy-threads' : {
+        'extra_sources' : extra_sources,
+        'dependencies' : [dbus1_dep],
+      },
+      'gdbus-proxy-well-known-name' : {'extra_sources' : extra_sources},
+      'gdbus-test-codegen' : {
+        'extra_sources' : [extra_sources, gdbus_test_codegen_generated],
+      },
+      'gdbus-threading' : {
+        'extra_sources' : extra_sources,
+        'suite' : ['slow'],
+      },
+      'gmenumodel' : {'extra_sources' : extra_sources},
+      'gnotification' : {
+        'extra_sources' : [extra_sources, 'gnotification-server.c'],
+      },
+      'gdbus-test-codegen-old' : {
+        'source' : 'gdbus-test-codegen.c',
+        'extra_sources' : [extra_sources, gdbus_test_codegen_generated],
+        'c_args' : ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36',
+                    '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36'],
+      },
+      'gapplication' : {'extra_sources' : extra_sources},
+      'gdbus-unix-addresses' : {},
+    }]
 
     if not glib_have_cocoa
-      gio_dbus_tests += [['dbus-appinfo', [], []]]
+      gio_tests += [{
+        'dbus-appinfo' : {
+          'extra_sources' : extra_sources,
+        },
+      }]
     endif
-
-    # separate loop because extra source files for each test
-    foreach dbus_test : gio_dbus_tests
-      test_name = dbus_test[0]
-      extra_src = dbus_test[1]
-      extra_deps = dbus_test[2]
-      exe = executable(test_name, '@0@.c'.format(test_name),
-          'gdbus-sessionbus.c', 'gdbus-tests.c', extra_src,
-          install : false,
-          c_args : test_c_args,
-          dependencies : common_gio_tests_deps + extra_deps)
-      # These tests may take more than 30 seconds to run on the CI infrastructure
-      if slow_tests.contains(test_name)
-        test(test_name, exe, env : test_env, timeout : 120, suite : ['gio', 'slow'])
-      else
-        test(test_name, exe, env : test_env, suite : ['gio'])
-      endif
-    endforeach
-
-    exe = executable('gdbus-test-codegen-old', 'gdbus-test-codegen.c',
-          'gdbus-sessionbus.c', 'gdbus-tests.c', gdbus_test_codegen_generated,
-          install : false,
-          c_args : test_c_args + ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36', '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36'],
-          dependencies : common_gio_tests_deps)
-    test('gdbus-test-codegen-old', exe, env : test_env, suite : ['gio'])
-
-    # There is already a gapplication exe target in gio so need to use a
-    # different name for the unit test executable, since we can't have two
-    # targets of the same name even if in different directories
-    # (FIXME: just rename source file to gapplication-test.c)
-    if not glib_have_cocoa
-      exe = executable('gapplication-test', 'gapplication.c',
-                       'gdbus-sessionbus.c', 'gdbus-tests.c',
-                       install : false,
-                       c_args : test_c_args,
-                       dependencies : common_gio_tests_deps)
-    endif
-    test('gapplication', exe, env : test_env, suite : ['gio'])
-
-    gio_tests += ['gdbus-unix-addresses']
   endif # have_dbus_daemon
 
   # This test is currently unreliable
@@ -254,125 +250,100 @@
       c_args : test_c_args,
       dependencies : common_gio_tests_deps)
 
-  exe = executable('gdbus-connection-flush', 'gdbus-connection-flush.c',
-      'test-io-stream.c', 'test-pipe-unix.c',
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps)
-  test('gdbus-connection-flush', exe, env : test_env, suite : ['gio'])
-
-  exe = executable('gdbus-non-socket', 'gdbus-non-socket.c',
-      'gdbus-tests.c', 'test-io-stream.c', 'test-pipe-unix.c',
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps)
-  test('gdbus-non-socket', exe, env : test_env, suite : ['gio'])
+  gio_tests += [{
+    'gdbus-connection-flush' : {
+      'extra_sources' : ['test-io-stream.c', 'test-pipe-unix.c'],
+    },
+    'gdbus-non-socket' : {
+      'extra_sources' : ['gdbus-tests.c', 'test-io-stream.c', 'test-pipe-unix.c'],
+    },
+  }]
 
   # Generate test.mo from de.po using msgfmt
   msgfmt = find_program('msgfmt', required : false)
   if msgfmt.found()
     subdir('de/LC_MESSAGES')
-    # gsettings target exe already exists in gio directory
-    exe = executable('gsettings-test', 'gsettings.c', test_mo,
-        install : false,
-        c_args : test_c_args + [
-                   '-DSRCDIR="@0@"'.format(meson.current_source_dir()),
-                   '-DTEST_LOCALE_PATH="@0@"'.format(test_mo_dir),
-                 ],
-        dependencies : common_gio_tests_deps)
-    test('gsettings', exe, env : test_env, suite : ['gio'])
+    gio_tests += [{
+      'gsettings' : {
+        'extra_sources' : [test_mo],
+        'c_args' : ['-DSRCDIR="@0@"'.format(meson.current_source_dir()),
+                    '-DTEST_LOCALE_PATH="@0@"'.format(test_mo_dir)],
+        'install' : false,
+      },
+    }]
   endif
 endif # unix
 
 #  Test programs buildable on Windows only
 if host_machine.system() == 'windows'
-  gio_tests += ['win32-streams']
+  gio_tests += [{'win32-streams' : {}}]
 endif
 
 if cc.get_id() != 'msvc'
-  gio_tests += [ 'autoptr' ]
+  gio_tests += [{
+    'autoptr-gio' : {
+      'source' : 'autoptr.c',
+    },
+  }]
 endif
 
-foreach test_name : gio_tests
-  extra_deps = []
-  srcs = ['@0@.c'.format(test_name)]
-  # conflicts with glib/tests/autoptr, can't have two targets with same name
-  if test_name == 'autoptr'
-    test_name = 'autoptr-gio'
-  elif test_name == 'defaultvalue'
-    srcs += [giotypefuncs_inc]
-  elif test_name == 'gdbus-peer'
-    # This is peer to peer so it doesn't need a session bus, so we can run
-    # it automatically as a test by default
-    extra_deps = [libgdbus_example_objectmanager_dep]
-  elif test_name == 'tls-certificate' or test_name == 'tls-interaction'
-    srcs += ['gtesttlsbackend.c']
-  endif
-  exe = executable(test_name, srcs,
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps + extra_deps)
-  # These tests may take more than 30 seconds to run on the CI infrastructure
-  if slow_tests.contains(test_name)
-    test(test_name, exe, env : test_env, timeout : 120, suite : ['gio', 'slow'])
-  else
-    test(test_name, exe, env : test_env, suite : ['gio'])
-  endif
-endforeach
-
-uninstalled_test_extra_programs = [
-  ['gio-du'],
-  ['echo-server'],
-  ['filter-cat'],
-  ['gapplication-example-actions'],
-  ['gapplication-example-cmdline'],
-  ['gapplication-example-cmdline2'],
-  ['gapplication-example-cmdline3'],
-  ['gapplication-example-cmdline4'],
-  ['gapplication-example-dbushooks'],
-  ['gapplication-example-open'],
-  ['gdbus-daemon', gdbus_daemon_sources],
-  ['gdbus-example-export'],
-  ['gdbus-example-own-name'],
-  ['gdbus-example-peer'],
-  ['gdbus-example-proxy-subclass'],
-  ['gdbus-example-server'],
-  ['gdbus-example-subtree'],
-  ['gdbus-example-watch-name'],
-  ['gdbus-example-watch-proxy'],
-  ['gsubprocess-testprog'],
-  ['httpd'],
-  ['proxy'],
-  ['resolver'],
-  ['send-data'],
-  ['socket-server'],
-  ['socket-client', ['gtlsconsoleinteraction.c']],
+test_extra_programs += [{
+  'gio-du' : {'install' : false},
+  'echo-server' : {'install' : false},
+  'filter-cat' : {'install' : false},
+  'gapplication-example-actions' : {'install' : false},
+  'gapplication-example-cmdline' : {'install' : false},
+  'gapplication-example-cmdline2' : {'install' : false},
+  'gapplication-example-cmdline3' : {'install' : false},
+  'gapplication-example-cmdline4' : {'install' : false},
+  'gapplication-example-dbushooks' : {'install' : false},
+  'gapplication-example-open' : {'install' : false},
+  'gdbus-daemon' : {
+    'extra_sources' : gdbus_daemon_sources,
+    'install' : false,
+  },
+  'gdbus-example-export' : {'install' : false},
+  'gdbus-example-own-name' : {'install' : false},
+  'gdbus-example-peer' : {'install' : false},
+  'gdbus-example-proxy-subclass' : {'install' : false},
+  'gdbus-example-server' : {'install' : false},
+  'gdbus-example-subtree' : {'install' : false},
+  'gdbus-example-watch-name' : {'install' : false},
+  'gdbus-example-watch-proxy' : {'install' : false},
+  'gsubprocess-testprog' : {'install' : false},
+  'httpd' : {'install' : false},
+  'proxy' : {'install' : false},
+  'resolver' : {'install' : false},
+  'send-data' : {'install' : false},
+  'socket-server' : {'install' : false},
+  'socket-client' : {
+    'extra_sources' : ['gtlsconsoleinteraction.c'],
+    'install' : false,
+  },
   # These three are manual-run tests because they need a session bus but don't bring one up themselves
   # FIXME: these build but don't seem to work!
-  ['gdbus-example-objectmanager-client', [], [libgdbus_example_objectmanager_dep]],
-  ['gdbus-example-objectmanager-server', [], [libgdbus_example_objectmanager_dep]],
-  ['gdbus-test-fixture', [], [libgdbus_example_objectmanager_dep]],
-]
+  'gdbus-example-objectmanager-client' : {
+    'dependencies' : [libgdbus_example_objectmanager_dep],
+    'install' : false,
+  },
+  'gdbus-example-objectmanager-server' : {
+    'dependencies' : [libgdbus_example_objectmanager_dep],
+    'install' : false,
+  },
+  'gdbus-test-fixture' : {
+    'dependencies' : [libgdbus_example_objectmanager_dep],
+    'install' : false,
+  },
+}]
 
 if host_machine.system() != 'windows'
-  uninstalled_test_extra_programs += [['gdbus-example-unix-fd-client']]
+  test_extra_programs += [{
+    'gdbus-example-unix-fd-client' : {
+      'install' : false,
+    },
+  }]
 endif
 
-foreach extra_program : uninstalled_test_extra_programs + test_extra_programs
-  srcs = ['@0@.c'.format(extra_program[0])]
-  if extra_program.length() > 1
-    srcs += extra_program[1]
-  endif
-  extra_deps = []
-  if extra_program.length() > 2
-    extra_deps = extra_program[2]
-  endif
-  executable(extra_program[0], srcs,
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps + extra_deps)
-endforeach
-
 if not meson.is_cross_build() or meson.has_exe_wrapper()
 
   plugin_resources_c = custom_target('plugin-resources.c',
@@ -441,13 +412,58 @@
     copy : true,
     install : false)
 
-  exe = executable('resources', 'resources.c', test_gresource,
-      test_resources_c, test_resources2_c, test_resources2_h,
-      install : false,
-      c_args : test_c_args,
-      dependencies : common_gio_tests_deps)
-  test('resources', exe, env : test_env, suite : ['gio'])
+  gio_tests += [{
+    'resources' : {
+      'extra_sources' : [test_gresource, test_resources_c, test_resources2_c,
+                         test_resources2_h],
+    },
+  }]
 endif
 
+foreach test_dict : gio_tests
+  foreach test_name, extra_args : test_dict
+    source = extra_args.get('source', test_name + '.c')
+    extra_sources = extra_args.get('extra_sources', [])
+    install = installed_tests_enabled and extra_args.get('install', true)
+
+    if install
+      test_conf = configuration_data()
+      test_conf.set('installed_tests_dir', installed_tests_execdir)
+      test_conf.set('program', test_name)
+      configure_file(
+        input: installed_tests_template,
+        output: test_name + '.test',
+        install_dir: installed_tests_metadir,
+        configuration: test_conf
+      )
+    endif
+
+    exe = executable(test_name, [source, extra_sources],
+      c_args : test_c_args + extra_args.get('c_args', []),
+      dependencies : common_gio_tests_deps + extra_args.get('dependencies', []),
+      install_dir: installed_tests_execdir,
+      install: install,
+    )
+
+    suite = ['gio'] + extra_args.get('suite', [])
+    timeout = suite.contains('slow') ? 120 : 30
+    test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
+  endforeach
+endforeach
+
+foreach program_dict : test_extra_programs
+  foreach program_name, extra_args : program_dict
+    source = extra_args.get('source', program_name + '.c')
+    extra_sources = extra_args.get('extra_sources', [])
+    install = installed_tests_enabled and extra_args.get('install', true)
+    executable(program_name, [source, extra_sources],
+        c_args : test_c_args,
+        dependencies : common_gio_tests_deps + extra_args.get('dependencies', []),
+        install_dir : installed_tests_execdir,
+        install : install,
+    )
+  endforeach
+endforeach
+
 # FIXME: subdir('services')
 subdir('modules')
diff --git a/gio/tests/resources.c b/gio/tests/resources.c
index 6ae8e7d..70d8c03 100644
--- a/gio/tests/resources.c
+++ b/gio/tests/resources.c
@@ -317,6 +317,45 @@
   g_resource_unref (resource);
 }
 
+/* Test error handling for corrupt GResource files (specifically, a corrupt
+ * GVDB header). */
+static void
+test_resource_data_corrupt (void)
+{
+  /* A GVDB header is 6 guint32s, and requires a magic number in the first two
+   * guint32s. A set of zero bytes of a greater length is considered corrupt. */
+  static const guint8 data[sizeof (guint32) * 7] = { 0, };
+  GBytes *bytes = NULL;
+  GResource *resource = NULL;
+  GError *local_error = NULL;
+
+  bytes = g_bytes_new_static (data, sizeof (data));
+  resource = g_resource_new_from_data (bytes, &local_error);
+  g_bytes_unref (bytes);
+  g_assert_error (local_error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_INTERNAL);
+  g_assert_null (resource);
+
+  g_clear_error (&local_error);
+}
+
+/* Test handling for empty GResource files. They should also be treated as
+ * corrupt. */
+static void
+test_resource_data_empty (void)
+{
+  GBytes *bytes = NULL;
+  GResource *resource = NULL;
+  GError *local_error = NULL;
+
+  bytes = g_bytes_new_static (NULL, 0);
+  resource = g_resource_new_from_data (bytes, &local_error);
+  g_bytes_unref (bytes);
+  g_assert_error (local_error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_INTERNAL);
+  g_assert_null (resource);
+
+  g_clear_error (&local_error);
+}
+
 static void
 test_resource_registered (void)
 {
@@ -785,6 +824,8 @@
   g_test_add_func ("/resource/file-path", test_resource_file_path);
   g_test_add_func ("/resource/data", test_resource_data);
   g_test_add_func ("/resource/data_unaligned", test_resource_data_unaligned);
+  g_test_add_func ("/resource/data-corrupt", test_resource_data_corrupt);
+  g_test_add_func ("/resource/data-empty", test_resource_data_empty);
   g_test_add_func ("/resource/registered", test_resource_registered);
   g_test_add_func ("/resource/manual", test_resource_manual);
   g_test_add_func ("/resource/manual2", test_resource_manual2);
diff --git a/gio/tests/trash.c b/gio/tests/trash.c
index 2abe0aa..176c4b9 100644
--- a/gio/tests/trash.c
+++ b/gio/tests/trash.c
@@ -35,23 +35,26 @@
   GFileInfo *info;
   GError *error = NULL;
   gboolean ret;
-  GStatBuf file_stat, home_stat;
+  gchar *parent_dirname;
+  GStatBuf parent_stat, home_stat;
 
   /* The test assumes that tmp file is located on system internal mount. */
   file = g_file_new_tmp ("test-trashXXXXXX", &stream, &error);
+  parent_dirname = g_path_get_dirname (g_file_peek_path (file));
   g_assert_no_error (error);
-  g_assert_cmpint (g_lstat (g_file_peek_path (file), &file_stat), ==, 0);
-  g_test_message ("File: %s (dev: %" G_GUINT64_FORMAT ")",
-                  g_file_peek_path (file), (guint64) file_stat.st_dev);
+  g_assert_cmpint (g_stat (parent_dirname, &parent_stat), ==, 0);
+  g_test_message ("File: %s (parent st_dev: %" G_GUINT64_FORMAT ")",
+                  g_file_peek_path (file), (guint64) parent_stat.st_dev);
 
   g_assert_cmpint (g_stat (g_get_home_dir (), &home_stat), ==, 0);
-  g_test_message ("Home: %s (dev: %" G_GUINT64_FORMAT ")",
+  g_test_message ("Home: %s (st_dev: %" G_GUINT64_FORMAT ")",
                   g_get_home_dir (), (guint64) home_stat.st_dev);
 
-  if (file_stat.st_dev == home_stat.st_dev)
+  if (parent_stat.st_dev == home_stat.st_dev)
     {
       g_test_skip ("The file has to be on another filesystem than the home trash to run this test");
 
+      g_free (parent_dirname);
       g_object_unref (stream);
       g_object_unref (file);
 
@@ -85,6 +88,7 @@
   g_io_stream_close (G_IO_STREAM (stream), NULL, &error);
   g_assert_no_error (error);
 
+  g_free (parent_dirname);
   g_object_unref (info);
   g_object_unref (stream);
   g_object_unref (file);
diff --git a/glib/gbookmarkfile.c b/glib/gbookmarkfile.c
index 3f0275f..31706ba 100644
--- a/glib/gbookmarkfile.c
+++ b/glib/gbookmarkfile.c
@@ -863,7 +863,8 @@
       item->metadata->applications = g_list_prepend (item->metadata->applications, ai);
       g_hash_table_replace (item->metadata->apps_by_name, ai->name, ai);
     }
-      
+
+  g_free (ai->exec);
   ai->exec = g_strdup (exec);
   
   if (count)
diff --git a/glib/gbytes.c b/glib/gbytes.c
index 74f8148..7b72886 100644
--- a/glib/gbytes.c
+++ b/glib/gbytes.c
@@ -403,10 +403,18 @@
  *
  * Compares the two #GBytes values.
  *
- * This function can be used to sort GBytes instances in lexographical order.
+ * This function can be used to sort GBytes instances in lexicographical order.
  *
- * Returns: a negative value if bytes2 is lesser, a positive value if bytes2 is
- *          greater, and zero if bytes2 is equal to bytes1
+ * If @bytes1 and @bytes2 have different length but the shorter one is a
+ * prefix of the longer one then the shorter one is considered to be less than
+ * the longer one. Otherwise the first byte where both differ is used for
+ * comparison. If @bytes1 has a smaller value at that position it is
+ * considered less, otherwise greater than @bytes2.
+ *
+ * Returns: a negative value if @bytes1 is less than @bytes2, a positive value
+ *          if @bytes1 is greater than @bytes2, and zero if @bytes1 is equal to
+ *          @bytes2
+ *
  *
  * Since: 2.32
  */
diff --git a/glib/gspawn.c b/glib/gspawn.c
index 1ab3307..e273e2a 100644
--- a/glib/gspawn.c
+++ b/glib/gspawn.c
@@ -81,6 +81,12 @@
 extern char **environ;
 #endif
 
+#ifndef O_CLOEXEC
+#define O_CLOEXEC 0
+#else
+#define HAVE_O_CLOEXEC 1
+#endif
+
 /**
  * SECTION:spawn
  * @Short_description: process launching
@@ -1454,6 +1460,10 @@
       g_assert (read_null != -1);
       parent_close_fds[num_parent_close_fds++] = read_null;
 
+#ifndef HAVE_O_CLOEXEC
+      fcntl (read_null, F_SETFD, FD_CLOEXEC);
+#endif
+
       r = posix_spawn_file_actions_adddup2 (&file_actions, read_null, 0);
       if (r != 0)
         goto out_close_fds;
@@ -1474,6 +1484,10 @@
       g_assert (write_null != -1);
       parent_close_fds[num_parent_close_fds++] = write_null;
 
+#ifndef HAVE_O_CLOEXEC
+      fcntl (read_null, F_SETFD, FD_CLOEXEC);
+#endif
+
       r = posix_spawn_file_actions_adddup2 (&file_actions, write_null, 1);
       if (r != 0)
         goto out_close_fds;
@@ -1494,6 +1508,10 @@
       g_assert (write_null != -1);
       parent_close_fds[num_parent_close_fds++] = write_null;
 
+#ifndef HAVE_O_CLOEXEC
+      fcntl (read_null, F_SETFD, FD_CLOEXEC);
+#endif
+
       r = posix_spawn_file_actions_adddup2 (&file_actions, write_null, 2);
       if (r != 0)
         goto out_close_fds;
diff --git a/glib/gtestutils.c b/glib/gtestutils.c
index da6c733..7b29c27 100644
--- a/glib/gtestutils.c
+++ b/glib/gtestutils.c
@@ -959,7 +959,20 @@
       fail = result == G_TEST_RUN_FAILURE;
       if (test_tap_log)
         {
-          g_print ("%s %d %s", fail ? "not ok" : "ok", test_run_count, string1);
+          const gchar *ok;
+
+          /* The TAP representation for an expected failure starts with
+           * "not ok", even though it does not actually count as failing
+           * due to the use of the TODO directive. "ok # TODO" would mean
+           * a test that was expected to fail unexpectedly succeeded,
+           * for which GTestResult does not currently have a
+           * representation. */
+          if (fail || result == G_TEST_RUN_INCOMPLETE)
+            ok = "not ok";
+          else
+            ok = "ok";
+
+          g_print ("%s %d %s", ok, test_run_count, string1);
           if (result == G_TEST_RUN_INCOMPLETE)
             g_print (" # TODO %s\n", string2 ? string2 : "");
           else if (result == G_TEST_RUN_SKIPPED)
@@ -977,7 +990,7 @@
             g_print ("Bail out!\n");
           g_abort ();
         }
-      if (result == G_TEST_RUN_SKIPPED)
+      if (result == G_TEST_RUN_SKIPPED || result == G_TEST_RUN_INCOMPLETE)
         test_skipped_count++;
       break;
     case G_TEST_LOG_MIN_RESULT:
@@ -1271,6 +1284,12 @@
  *
  * - `--debug-log`: Debug test logging output.
  *
+ * Since 2.58, if tests are compiled with `G_DISABLE_ASSERT` defined,
+ * g_test_init() will print an error and exit. This is to prevent no-op tests
+ * from being executed, as g_assert() is commonly (erroneously) used in unit
+ * tests, and is a no-op when compiled with `G_DISABLE_ASSERT`. Ensure your
+ * tests are compiled without `G_DISABLE_ASSERT` defined.
+ *
  * Since: 2.16
  */
 void
@@ -1720,11 +1739,13 @@
  * particular code runs before or after a given test case, use
  * g_test_add(), which lets you specify setup and teardown functions.
  *
- * If all tests are skipped, this function will return 0 if
- * producing TAP output, or 77 (treated as "skip test" by Automake) otherwise.
+ * If all tests are skipped or marked as incomplete (expected failures),
+ * this function will return 0 if producing TAP output, or 77 (treated
+ * as "skip test" by Automake) otherwise.
  *
  * Returns: 0 on success, 1 on failure (assuming it returns at all),
- *   0 or 77 if all tests were skipped with g_test_skip()
+ *   0 or 77 if all tests were skipped with g_test_skip() and/or
+ *   g_test_incomplete()
  *
  * Since: 2.16
  */
@@ -2325,7 +2346,8 @@
   test_uri_base = old_base;
 
   return (success == G_TEST_RUN_SUCCESS ||
-          success == G_TEST_RUN_SKIPPED);
+          success == G_TEST_RUN_SKIPPED ||
+          success == G_TEST_RUN_INCOMPLETE);
 }
 
 static gboolean
diff --git a/glib/gtimer.c b/glib/gtimer.c
index e95ac0e..2012255 100644
--- a/glib/gtimer.c
+++ b/glib/gtimer.c
@@ -345,6 +345,8 @@
  * zone indicator. (In the absence of any time zone indication, the
  * timestamp is assumed to be in local time.)
  *
+ * Any leading or trailing space in @iso_date is ignored.
+ *
  * Returns: %TRUE if the conversion was successful.
  *
  * Since: 2.12
@@ -355,6 +357,8 @@
 {
   struct tm tm = {0};
   long val;
+  long mday, mon, year;
+  long hour, min, sec;
 
   g_return_val_if_fail (iso_date != NULL, FALSE);
   g_return_val_if_fail (time_ != NULL, FALSE);
@@ -368,30 +372,42 @@
   if (*iso_date == '\0')
     return FALSE;
 
-  if (!g_ascii_isdigit (*iso_date) && *iso_date != '-' && *iso_date != '+')
+  if (!g_ascii_isdigit (*iso_date) && *iso_date != '+')
     return FALSE;
 
   val = strtoul (iso_date, (char **)&iso_date, 10);
   if (*iso_date == '-')
     {
       /* YYYY-MM-DD */
-      tm.tm_year = val - 1900;
+      year = val;
       iso_date++;
-      tm.tm_mon = strtoul (iso_date, (char **)&iso_date, 10) - 1;
-      
+
+      mon = strtoul (iso_date, (char **)&iso_date, 10);
       if (*iso_date++ != '-')
         return FALSE;
       
-      tm.tm_mday = strtoul (iso_date, (char **)&iso_date, 10);
+      mday = strtoul (iso_date, (char **)&iso_date, 10);
     }
   else
     {
       /* YYYYMMDD */
-      tm.tm_mday = val % 100;
-      tm.tm_mon = (val % 10000) / 100 - 1;
-      tm.tm_year = val / 10000 - 1900;
+      mday = val % 100;
+      mon = (val % 10000) / 100;
+      year = val / 10000;
     }
 
+  /* Validation. */
+  if (year < 1900 || year > G_MAXINT)
+    return FALSE;
+  if (mon < 1 || mon > 12)
+    return FALSE;
+  if (mday < 1 || mday > 31)
+    return FALSE;
+
+  tm.tm_mday = mday;
+  tm.tm_mon = mon - 1;
+  tm.tm_year = year - 1900;
+
   if (*iso_date != 'T')
     return FALSE;
 
@@ -405,34 +421,50 @@
   if (*iso_date == ':')
     {
       /* hh:mm:ss */
-      tm.tm_hour = val;
+      hour = val;
       iso_date++;
-      tm.tm_min = strtoul (iso_date, (char **)&iso_date, 10);
+      min = strtoul (iso_date, (char **)&iso_date, 10);
       
       if (*iso_date++ != ':')
         return FALSE;
       
-      tm.tm_sec = strtoul (iso_date, (char **)&iso_date, 10);
+      sec = strtoul (iso_date, (char **)&iso_date, 10);
     }
   else
     {
       /* hhmmss */
-      tm.tm_sec = val % 100;
-      tm.tm_min = (val % 10000) / 100;
-      tm.tm_hour = val / 10000;
+      sec = val % 100;
+      min = (val % 10000) / 100;
+      hour = val / 10000;
     }
 
+  /* Validation. Allow up to 2 leap seconds when validating @sec. */
+  if (hour > 23)
+    return FALSE;
+  if (min > 59)
+    return FALSE;
+  if (sec > 61)
+    return FALSE;
+
+  tm.tm_hour = hour;
+  tm.tm_min = min;
+  tm.tm_sec = sec;
+
   time_->tv_usec = 0;
   
   if (*iso_date == ',' || *iso_date == '.')
     {
       glong mul = 100000;
 
-      while (g_ascii_isdigit (*++iso_date))
+      while (mul >= 1 && g_ascii_isdigit (*++iso_date))
         {
           time_->tv_usec += (*iso_date - '0') * mul;
           mul /= 10;
         }
+
+      /* Skip any remaining digits after we’ve reached our limit of precision. */
+      while (g_ascii_isdigit (*iso_date))
+        iso_date++;
     }
     
   /* Now parse the offset and convert tm to a time_t */
@@ -448,11 +480,24 @@
       val = strtoul (iso_date + 1, (char **)&iso_date, 10);
       
       if (*iso_date == ':')
-        val = 60 * val + strtoul (iso_date + 1, (char **)&iso_date, 10);
+        {
+          /* hh:mm */
+          hour = val;
+          min = strtoul (iso_date + 1, (char **)&iso_date, 10);
+        }
       else
-        val = 60 * (val / 100) + (val % 100);
+        {
+          /* hhmm */
+          hour = val / 100;
+          min = val % 100;
+        }
 
-      time_->tv_sec = mktime_utc (&tm) + (time_t) (60 * val * sign);
+      if (hour > 99)
+        return FALSE;
+      if (min > 59)
+        return FALSE;
+
+      time_->tv_sec = mktime_utc (&tm) + (time_t) (60 * (gint64) (60 * hour + min) * sign);
     }
   else
     {
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index 3261bc1..233a19f 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -260,6 +260,9 @@
   stream->this = stream->stream;
   stream->stream = end;
 
+  /* We must have at least one byte in a token. */
+  g_assert (stream->stream - stream->this >= 1);
+
   return TRUE;
 }
 
@@ -276,7 +279,8 @@
   if (!token_stream_prepare (stream))
     return FALSE;
 
-  return stream->this[0] == first_char;
+  return stream->stream - stream->this >= 1 &&
+         stream->this[0] == first_char;
 }
 
 static gboolean
@@ -287,7 +291,8 @@
   if (!token_stream_prepare (stream))
     return FALSE;
 
-  return stream->this[0] == first_char &&
+  return stream->stream - stream->this >= 2 &&
+         stream->this[0] == first_char &&
          stream->this[1] == second_char;
 }
 
@@ -297,7 +302,8 @@
   if (!token_stream_prepare (stream))
     return FALSE;
 
-  return g_ascii_isalpha (stream->this[0]) &&
+  return stream->stream - stream->this >= 2 &&
+         g_ascii_isalpha (stream->this[0]) &&
          g_ascii_isalpha (stream->this[1]);
 }
 
@@ -307,10 +313,11 @@
   if (!token_stream_prepare (stream))
     return FALSE;
 
-  return (g_ascii_isdigit (stream->this[0]) ||
-          stream->this[0] == '-' ||
-          stream->this[0] == '+' ||
-          stream->this[0] == '.');
+  return (stream->stream - stream->this >= 1 &&
+          (g_ascii_isdigit (stream->this[0]) ||
+           stream->this[0] == '-' ||
+           stream->this[0] == '+' ||
+           stream->this[0] == '.'));
 }
 
 static gboolean
diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am
index 172d166..b29b684 100644
--- a/glib/tests/Makefile.am
+++ b/glib/tests/Makefile.am
@@ -38,6 +38,7 @@
 
 test_extra_programs = \
 	test-spawn-echo			\
+	testing-helper			\
 	$(NULL)
 
 test_programs = \
@@ -165,6 +166,8 @@
 	bookmarks/fail-37.xbel \
 	bookmarks/fail-38.xbel \
 	bookmarks/fail-39.xbel \
+	bookmarks/fail-40.xbel \
+	bookmarks/fail-41.xbel \
 	bookmarks/valid-01.xbel \
 	bookmarks/valid-02.xbel \
 	bookmarks/valid-03.xbel \
diff --git a/glib/tests/atomic.c b/glib/tests/atomic.c
index 2aafe86..84c13fb 100644
--- a/glib/tests/atomic.c
+++ b/glib/tests/atomic.c
@@ -92,7 +92,8 @@
   g_assert (ip == 0);
 
   g_atomic_pointer_set (&gs, 0);
-  gs2 = (gsize) g_atomic_pointer_get (&gs);
+  vp2 = g_atomic_pointer_get (&gs);
+  gs2 = (gsize) vp2;
   g_assert (gs2 == 0);
   res = g_atomic_pointer_compare_and_exchange (&gs, 0, 0);
   g_assert (res);
diff --git a/glib/tests/bookmarks/fail-40.xbel b/glib/tests/bookmarks/fail-40.xbel
new file mode 100644
index 0000000..9ce48a8
--- /dev/null
+++ b/glib/tests/bookmarks/fail-40.xbel
@@ -0,0 +1 @@
+<xbel version="1.0"><bookmark href=""><info><metadata owner="http://freedesktop.org"><applications><application name=""exec=""/><application name=""exec=""/
\ No newline at end of file
diff --git a/glib/tests/bookmarks/fail-41.xbel b/glib/tests/bookmarks/fail-41.xbel
new file mode 100644
index 0000000..8ac0c56
--- /dev/null
+++ b/glib/tests/bookmarks/fail-41.xbel
@@ -0,0 +1 @@
+<xbel version="1.0"><bookmark href=""added="2T0+819855292164632335">
diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
index c6837fc..a028f6d 100644
--- a/glib/tests/gdatetime.c
+++ b/glib/tests/gdatetime.c
@@ -2131,13 +2131,15 @@
   GTimeZone *tz;
   GDateTime *gdt1, *gdt2;
 
-  tz = g_time_zone_new ("PST");
+  /* Check that an unknown zone name falls back to UTC. */
+  tz = g_time_zone_new ("nonexistent");
   g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "UTC");
   g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "UTC");
   g_assert_cmpint (g_time_zone_get_offset (tz, 0), ==, 0);
   g_assert (!g_time_zone_is_dst (tz, 0));
   g_time_zone_unref (tz);
 
+  /* An existent zone name should not fall back to UTC. */
   tz = g_time_zone_new ("PST8");
   g_assert_cmpstr (g_time_zone_get_identifier (tz), ==, "PST8");
   g_assert_cmpstr (g_time_zone_get_abbreviation (tz, 0), ==, "PST");
diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c
index fdaed1a..5aac3de 100644
--- a/glib/tests/gvariant.c
+++ b/glib/tests/gvariant.c
@@ -3889,27 +3889,48 @@
     "boolean 4",                "8-9:",            "can not parse as",
     "int32 true",               "6-10:",           "can not parse as",
     "[double 5, int32 5]",      "1-9,11-18:",      "common type",
-    "string 4",                 "7-8:",            "can not parse as"
+    "string 4",                 "7-8:",            "can not parse as",
+    "\x0a",                     "1:",              "expected value",
+    "((",                       "2:",              "expected value",
   };
   gint i;
 
   for (i = 0; i < G_N_ELEMENTS (test); i += 3)
     {
-      GError *error = NULL;
+      GError *error1 = NULL, *error2 = NULL;
       GVariant *value;
 
-      value = g_variant_parse (NULL, test[i], NULL, NULL, &error);
-      g_assert (value == NULL);
+      /* Copy the test string and drop its nul terminator, then use the @limit
+       * parameter of g_variant_parse() to set the length. This allows valgrind
+       * to catch 1-byte heap buffer overflows. */
+      gsize test_len = MAX (strlen (test[i]), 1);
+      gchar *test_blob = g_malloc0 (test_len);  /* no nul terminator */
 
-      if (!strstr (error->message, test[i+2]))
+      memcpy (test_blob, test[i], test_len);
+      value = g_variant_parse (NULL, test_blob, test_blob + test_len, NULL, &error1);
+      g_assert_null (value);
+
+      g_free (test_blob);
+
+      if (!strstr (error1->message, test[i+2]))
         g_error ("test %d: Can't find '%s' in '%s'", i / 3,
-                 test[i+2], error->message);
+                 test[i+2], error1->message);
 
-      if (!g_str_has_prefix (error->message, test[i+1]))
+      if (!g_str_has_prefix (error1->message, test[i+1]))
         g_error ("test %d: Expected location '%s' in '%s'", i / 3,
-                 test[i+1], error->message);
+                 test[i+1], error1->message);
 
-      g_error_free (error);
+      /* Test again with the nul terminator this time. The behaviour should be
+       * the same. */
+      value = g_variant_parse (NULL, test[i], NULL, NULL, &error2);
+      g_assert_null (value);
+
+      g_assert_cmpint (error1->domain, ==, error2->domain);
+      g_assert_cmpint (error1->code, ==, error2->code);
+      g_assert_cmpstr (error1->message, ==, error2->message);
+
+      g_clear_error (&error1);
+      g_clear_error (&error2);
     }
 }
 
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index f5c0fbe..0af71b0 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
@@ -183,6 +183,13 @@
   install: installed_tests_enabled,
 )
 
+executable('testing-helper', 'testing-helper.c',
+  c_args : test_cargs,
+  dependencies : test_deps,
+  install_dir: installed_tests_execdir,
+  install: installed_tests_enabled,
+)
+
 # some testing of gtester functionality
 if not meson.is_cross_build() and host_system != 'windows'
   xmllint = find_program('xmllint', required: false)
diff --git a/glib/tests/testing-helper.c b/glib/tests/testing-helper.c
new file mode 100644
index 0000000..43127e8
--- /dev/null
+++ b/glib/tests/testing-helper.c
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2018 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General
+ * Public License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+
+static void
+test_pass (void)
+{
+}
+
+static void
+test_skip (void)
+{
+  g_test_skip ("not enough tea");
+}
+
+static void
+test_fail (void)
+{
+  g_test_fail ();
+}
+
+static void
+test_incomplete (void)
+{
+  g_test_incomplete ("mind reading not implemented yet");
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  char *argv1;
+
+  g_return_val_if_fail (argc > 1, 1);
+  argv1 = argv[1];
+
+  if (argc > 2)
+    memmove (&argv[1], &argv[2], (argc - 2) * sizeof (char *));
+
+  argc -= 1;
+  argv[argc] = NULL;
+
+  g_test_init (&argc, &argv, NULL);
+  g_test_set_nonfatal_assertions ();
+
+  if (g_strcmp0 (argv1, "pass") == 0)
+    {
+      g_test_add_func ("/pass", test_pass);
+    }
+  else if (g_strcmp0 (argv1, "skip") == 0)
+    {
+      g_test_add_func ("/skip", test_skip);
+    }
+  else if (g_strcmp0 (argv1, "incomplete") == 0)
+    {
+      g_test_add_func ("/incomplete", test_incomplete);
+    }
+  else if (g_strcmp0 (argv1, "fail") == 0)
+    {
+      g_test_add_func ("/fail", test_fail);
+    }
+  else if (g_strcmp0 (argv1, "all-non-failures") == 0)
+    {
+      g_test_add_func ("/pass", test_pass);
+      g_test_add_func ("/skip", test_skip);
+      g_test_add_func ("/incomplete", test_incomplete);
+    }
+  else if (g_strcmp0 (argv1, "all") == 0)
+    {
+      g_test_add_func ("/pass", test_pass);
+      g_test_add_func ("/skip", test_skip);
+      g_test_add_func ("/incomplete", test_incomplete);
+      g_test_add_func ("/fail", test_fail);
+    }
+  else
+    {
+      g_assert_not_reached ();
+    }
+
+  return g_test_run ();
+}
diff --git a/glib/tests/testing.c b/glib/tests/testing.c
index de95f26..716516e 100644
--- a/glib/tests/testing.c
+++ b/glib/tests/testing.c
@@ -20,6 +20,8 @@
  * if advised of the possibility of such damage.
  */
 
+#include "config.h"
+
 /* We want to distinguish between messages originating from libglib
  * and messages originating from this program.
  */
@@ -78,6 +80,7 @@
   g_assert_cmpfloat_with_epsilon (3.14, 3.15, 0.01);
   g_assert_cmpfloat_with_epsilon (3.14159, 3.1416, 0.0001);
   g_assert (TRUE);
+  g_assert_true (TRUE);
   g_assert_cmpstr ("foo", !=, "faa");
   fuu = g_strdup_printf ("f%s", "uu");
   g_test_queue_free (fuu);
@@ -170,7 +173,7 @@
         g_usleep (1000 * 1000);
     }
   g_test_trap_assert_failed();
-  g_assert (g_test_trap_reached_timeout());
+  g_assert_true (g_test_trap_reached_timeout());
 }
 
 G_GNUC_END_IGNORE_DEPRECATIONS
@@ -233,7 +236,7 @@
   /* allow child to run for only a fraction of a second */
   g_test_trap_subprocess (NULL, 0.11 * 1000000, 0);
   g_test_trap_assert_failed ();
-  g_assert (g_test_trap_reached_timeout ());
+  g_assert_true (g_test_trap_reached_timeout ());
 }
 
 /* run a test with fixture setup and teardown */
@@ -246,7 +249,7 @@
 fixturetest_setup (Fixturetest  *fix,
                    gconstpointer test_data)
 {
-  g_assert (test_data == (void*) 0xc0cac01a);
+  g_assert_true (test_data == (void*) 0xc0cac01a);
   fix->seed = 18;
   fix->prime = 19;
   fix->msg = g_strdup_printf ("%d", fix->prime);
@@ -259,13 +262,13 @@
   g_assert_cmpint (prime, ==, fix->prime);
   prime = g_ascii_strtoull (fix->msg, NULL, 0);
   g_assert_cmpint (prime, ==, fix->prime);
-  g_assert (test_data == (void*) 0xc0cac01a);
+  g_assert_true (test_data == (void*) 0xc0cac01a);
 }
 static void
 fixturetest_teardown (Fixturetest  *fix,
                       gconstpointer test_data)
 {
-  g_assert (test_data == (void*) 0xc0cac01a);
+  g_assert_true (test_data == (void*) 0xc0cac01a);
   g_free (fix->msg);
 }
 
@@ -308,7 +311,7 @@
 static void
 test_data_test (gconstpointer test_data)
 {
-  g_assert (test_data == (void*) 0xc0c0baba);
+  g_assert_true (test_data == (void*) 0xc0c0baba);
 }
 
 static void
@@ -319,7 +322,7 @@
   char *err, *str = g_strdup_printf ("%d", vint);
   gint64 vint64 = g_ascii_strtoll (str, &err, 10);
   g_assert_cmphex (vint, ==, vint64);
-  g_assert (!err || *err == 0);
+  g_assert_true (!err || *err == 0);
   g_free (str);
 }
 
@@ -622,6 +625,10 @@
 test_skip (void)
 {
   g_test_skip ("Skipped should count as passed, not failed");
+  /* This function really means "the test concluded with a non-successful
+   * status" rather than "the test failed": it is documented to return
+   * true for skipped and incomplete tests, not just for failures. */
+  g_assert_true (g_test_failed ());
 }
 
 static void
@@ -630,12 +637,21 @@
 }
 
 static void
+subprocess_fail (void)
+{
+  /* Exit 1 instead of raising SIGABRT so that we can make assertions about
+   * how this combines with skipped/incomplete tests */
+  g_test_set_nonfatal_assertions ();
+  g_test_fail ();
+  g_assert_true (g_test_failed ());
+}
+
+static void
 test_fail (void)
 {
   if (g_test_subprocess ())
     {
-      g_test_fail ();
-      g_assert (g_test_failed ());
+      subprocess_fail ();
       return;
     }
   g_test_trap_subprocess (NULL, 0, 0);
@@ -643,15 +659,29 @@
 }
 
 static void
+subprocess_incomplete (void)
+{
+  g_test_incomplete ("not done");
+  /* This function really means "the test concluded with a non-successful
+   * status" rather than "the test failed": it is documented to return
+   * true for skipped and incomplete tests, not just for failures. */
+  g_assert_true (g_test_failed ());
+}
+
+static void
 test_incomplete (void)
 {
   if (g_test_subprocess ())
     {
-      g_test_incomplete ("not done");
-      g_assert (g_test_failed ());
+      subprocess_incomplete ();
       return;
     }
   g_test_trap_subprocess (NULL, 0, 0);
+  /* An incomplete test represents functionality that is known not to be
+   * implemented yet (an expected failure), so it does not cause test
+   * failure; but it does count as the test having been skipped, which
+   * causes nonzero exit status 77, which is treated as failure by
+   * g_test_trap_subprocess(). */
   g_test_trap_assert_failed ();
 }
 
@@ -664,18 +694,19 @@
       return;
     }
   g_test_trap_subprocess (NULL, 50000, 0);
-  g_assert (g_test_trap_reached_timeout ());
+  g_assert_true (g_test_trap_reached_timeout ());
 }
 
 static const char *argv0;
 
 static void
-test_skip_all (void)
+test_combining (void)
 {
   GPtrArray *argv;
   GError *error = NULL;
   int status;
 
+  g_test_message ("single test case skipped -> overall status 77");
   argv = g_ptr_array_new ();
   g_ptr_array_add (argv, (char *) argv0);
   g_ptr_array_add (argv, "--GTestSubprocess");
@@ -693,15 +724,16 @@
   g_assert_error (error, G_SPAWN_EXIT_ERROR, 77);
   g_clear_error (&error);
 
+  g_test_message ("each test case skipped -> overall status 77");
   g_ptr_array_set_size (argv, 0);
   g_ptr_array_add (argv, (char *) argv0);
   g_ptr_array_add (argv, "--GTestSubprocess");
   g_ptr_array_add (argv, "-p");
   g_ptr_array_add (argv, "/misc/skip");
   g_ptr_array_add (argv, "-p");
-  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip1");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip1");
   g_ptr_array_add (argv, "-p");
-  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip2");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip2");
   g_ptr_array_add (argv, NULL);
 
   g_spawn_sync (NULL, (char **) argv->pdata, NULL,
@@ -714,15 +746,260 @@
   g_assert_error (error, G_SPAWN_EXIT_ERROR, 77);
   g_clear_error (&error);
 
+  g_test_message ("single test case incomplete -> overall status 77");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/incomplete");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 77);
+  g_clear_error (&error);
+
+  g_test_message ("one pass and some skipped -> overall status 0");
   g_ptr_array_set_size (argv, 0);
   g_ptr_array_add (argv, (char *) argv0);
   g_ptr_array_add (argv, "--GTestSubprocess");
   g_ptr_array_add (argv, "-p");
   g_ptr_array_add (argv, "/misc/skip");
   g_ptr_array_add (argv, "-p");
-  g_ptr_array_add (argv, "/misc/skip-all/subprocess/pass");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/pass");
   g_ptr_array_add (argv, "-p");
-  g_ptr_array_add (argv, "/misc/skip-all/subprocess/skip1");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip1");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+
+  g_test_message ("one pass and some incomplete -> overall status 0");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/pass");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/incomplete");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+
+  g_test_message ("one pass and mix of skipped and incomplete -> overall status 0");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/pass");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip1");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/incomplete");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+
+  g_test_message ("one fail and some skipped -> overall status fail");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/skip");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/fail");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip1");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 1);
+  g_clear_error (&error);
+
+  g_test_message ("one fail and some incomplete -> overall status fail");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/fail");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/incomplete");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 1);
+  g_clear_error (&error);
+
+  g_test_message ("one fail and mix of skipped and incomplete -> overall status fail");
+  g_ptr_array_set_size (argv, 0);
+  g_ptr_array_add (argv, (char *) argv0);
+  g_ptr_array_add (argv, "--GTestSubprocess");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/fail");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/skip1");
+  g_ptr_array_add (argv, "-p");
+  g_ptr_array_add (argv, "/misc/combining/subprocess/incomplete");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 1);
+  g_clear_error (&error);
+
+  g_ptr_array_unref (argv);
+}
+
+/* Test the TAP output when a test suite is run with --tap. */
+static void
+test_tap (void)
+{
+  const char *testing_helper;
+  GPtrArray *argv;
+  GError *error = NULL;
+  int status;
+  gchar *output;
+
+  testing_helper = g_test_get_filename (G_TEST_BUILT, "testing-helper" EXEEXT, NULL);
+
+  g_test_message ("pass");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "pass");
+  g_ptr_array_add (argv, "--tap");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, &output, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (strstr (output, "\nok 1 /pass\n"));
+  g_free (output);
+  g_ptr_array_unref (argv);
+
+  g_test_message ("skip");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "skip");
+  g_ptr_array_add (argv, "--tap");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, &output, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (strstr (output, "\nok 1 /skip # SKIP not enough tea\n"));
+  g_free (output);
+  g_ptr_array_unref (argv);
+
+  g_test_message ("incomplete");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "incomplete");
+  g_ptr_array_add (argv, "--tap");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, &output, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (strstr (output, "\nnot ok 1 /incomplete # TODO mind reading not implemented yet\n"));
+  g_free (output);
+  g_ptr_array_unref (argv);
+
+  g_test_message ("fail");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "fail");
+  g_ptr_array_add (argv, "--tap");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, &output, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_exit_status (status, &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 1);
+  g_assert_nonnull (strstr (output, "\nnot ok 1 /fail\n"));
+  g_free (output);
+  g_ptr_array_unref (argv);
+
+  g_test_message ("all");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "all");
+  g_ptr_array_add (argv, "--tap");
+  g_ptr_array_add (argv, NULL);
+
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, NULL, NULL, &status,
+                &error);
+  g_assert_error (error, G_SPAWN_EXIT_ERROR, 1);
+  g_clear_error (&error);
+  g_ptr_array_unref (argv);
+
+  g_test_message ("all-non-failures");
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "all-non-failures");
+  g_ptr_array_add (argv, "--tap");
   g_ptr_array_add (argv, NULL);
 
   g_spawn_sync (NULL, (char **) argv->pdata, NULL,
@@ -801,13 +1078,17 @@
   g_test_add_func ("/misc/nonfatal", test_nonfatal);
 
   g_test_add_func ("/misc/skip", test_skip);
-  g_test_add_func ("/misc/skip-all", test_skip_all);
-  g_test_add_func ("/misc/skip-all/subprocess/skip1", test_skip);
-  g_test_add_func ("/misc/skip-all/subprocess/skip2", test_skip);
-  g_test_add_func ("/misc/skip-all/subprocess/pass", test_pass);
+  g_test_add_func ("/misc/combining", test_combining);
+  g_test_add_func ("/misc/combining/subprocess/fail", subprocess_fail);
+  g_test_add_func ("/misc/combining/subprocess/skip1", test_skip);
+  g_test_add_func ("/misc/combining/subprocess/skip2", test_skip);
+  g_test_add_func ("/misc/combining/subprocess/incomplete", subprocess_incomplete);
+  g_test_add_func ("/misc/combining/subprocess/pass", test_pass);
   g_test_add_func ("/misc/fail", test_fail);
   g_test_add_func ("/misc/incomplete", test_incomplete);
   g_test_add_func ("/misc/timeout", test_subprocess_timed_out);
 
+  g_test_add_func ("/tap", test_tap);
+
   return g_test_run();
 }
diff --git a/glib/tests/timer.c b/glib/tests/timer.c
index cb9a268..5ee191d 100644
--- a/glib/tests/timer.c
+++ b/glib/tests/timer.c
@@ -115,6 +115,14 @@
   g_time_val_add (&time, 1000);
   g_assert_cmpint (time.tv_sec, ==, 1); 
   g_assert_cmpint (time.tv_usec, ==, 510);
+
+  g_time_val_add (&time, 0);
+  g_assert_cmpint (time.tv_sec, ==, 1);
+  g_assert_cmpint (time.tv_usec, ==, 510);
+
+  g_time_val_add (&time, -210);
+  g_assert_cmpint (time.tv_sec, ==, 1);
+  g_assert_cmpint (time.tv_usec, ==, 300);
 }
 
 typedef struct {
@@ -126,6 +134,7 @@
 static void
 test_timeval_from_iso8601 (void)
 {
+  gchar *old_tz = g_strdup (g_getenv ("TZ"));
   TimeValParseTest tests[] = {
     { TRUE, "1990-11-01T10:21:17Z", { 657454877, 0 } },
     { TRUE, "19901101T102117Z", { 657454877, 0 } },
@@ -144,13 +153,50 @@
     { FALSE, "2001-10-08Tx", { 0, 0 } },
     { FALSE, "2001-10-08T10:11x", { 0, 0 } },
     { FALSE, "Wed Dec 19 17:20:20 GMT 2007", { 0, 0 } },
-    { FALSE, "1980-02-22T10:36:00Zulu", { 0, 0 } }
+    { FALSE, "1980-02-22T10:36:00Zulu", { 0, 0 } },
+    { FALSE, "2T0+819855292164632335", { 0, 0 } },
+    { TRUE, "2018-08-03T14:08:05.446178377+01:00", { 1533301685, 446178 } },
+    { FALSE, "2147483648-08-03T14:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-13-03T14:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-00-03T14:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-00T14:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-32T14:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-03T24:08:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-03T14:60:05.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-03T14:08:63.446178377+01:00", { 0, 0 } },
+    { FALSE, "2018-08-03T14:08:05.446178377+100:00", { 0, 0 } },
+    { FALSE, "2018-08-03T14:08:05.446178377+01:60", { 0, 0 } },
+    { TRUE, "20180803T140805.446178377+0100", { 1533301685, 446178 } },
+    { FALSE, "21474836480803T140805.446178377+0100", { 0, 0 } },
+    { FALSE, "20181303T140805.446178377+0100", { 0, 0 } },
+    { FALSE, "20180003T140805.446178377+0100", { 0, 0 } },
+    { FALSE, "20180800T140805.446178377+0100", { 0, 0 } },
+    { FALSE, "20180832T140805.446178377+0100", { 0, 0 } },
+    { FALSE, "20180803T240805.446178377+0100", { 0, 0 } },
+    { FALSE, "20180803T146005.446178377+0100", { 0, 0 } },
+    { FALSE, "20180803T140863.446178377+0100", { 0, 0 } },
+    { FALSE, "20180803T140805.446178377+10000", { 0, 0 } },
+    { FALSE, "20180803T140805.446178377+0160", { 0, 0 } },
+    { TRUE, "+1980-02-22T12:36:00+02:00", { 320063760, 0 } },
+    { FALSE, "-0005-01-01T00:00:00Z", { 0, 0 } },
+    { FALSE, "2018-08-06", { 0, 0 } },
+    { FALSE, "2018-08-06 13:51:00Z", { 0, 0 } },
+    { TRUE, "20180803T140805,446178377+0100", { 1533301685, 446178 } },
+    { TRUE, "2018-08-03T14:08:05.446178377-01:00", { 1533308885, 446178 } },
+    { FALSE, "2018-08-03T14:08:05.446178377 01:00", { 0, 0 } },
+    { TRUE, "1990-11-01T10:21:17", { 657454877, 0 } },
+    { TRUE, "1990-11-01T10:21:17     ", { 657454877, 0 } },
   };
   GTimeVal out;
   gboolean success;
   gint i;
 
-  g_unsetenv ("TZ");
+  /* Always run in UTC so the comparisons of parsed values are valid. */
+  if (!g_setenv ("TZ", "UTC", TRUE))
+    {
+      g_test_skip ("Failed to set TZ=UTC");
+      return;
+    }
 
   for (i = 0; i < G_N_ELEMENTS (tests); i++)
     {
@@ -164,6 +210,13 @@
           g_assert_cmpint (out.tv_usec, ==, tests[i].val.tv_usec);
         }
     }
+
+  if (old_tz != NULL)
+    g_assert_true (g_setenv ("TZ", old_tz, TRUE));
+  else
+    g_unsetenv ("TZ");
+
+  g_free (old_tz);
 }
 
 typedef struct {
@@ -198,6 +251,22 @@
     }
 }
 
+/* Test error handling for g_time_val_to_iso8601() on dates which are too large. */
+static void
+test_timeval_to_iso8601_overflow (void)
+{
+  GTimeVal val;
+  gchar *out = NULL;
+
+  g_unsetenv ("TZ");
+
+  val.tv_sec = G_MAXLONG;
+  val.tv_usec = G_USEC_PER_SEC - 1;
+
+  out = g_time_val_to_iso8601 (&val);
+  g_assert_null (out);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -210,6 +279,7 @@
   g_test_add_func ("/timeval/add", test_timeval_add);
   g_test_add_func ("/timeval/from-iso8601", test_timeval_from_iso8601);
   g_test_add_func ("/timeval/to-iso8601", test_timeval_to_iso8601);
+  g_test_add_func ("/timeval/to-iso8601/overflow", test_timeval_to_iso8601_overflow);
 
   return g_test_run ();
 }
diff --git a/gobject/gbinding.c b/gobject/gbinding.c
index 6872b96..42dcb36 100644
--- a/gobject/gbinding.c
+++ b/gobject/gbinding.c
@@ -373,6 +373,7 @@
                            gboolean  unref_binding)
 {
   gboolean source_is_target = binding->source == binding->target;
+  gboolean binding_was_removed = FALSE;
 
   /* dispose of the transformation data */
   if (binding->notify != NULL)
@@ -392,6 +393,7 @@
 
       binding->source_notify = 0;
       binding->source = NULL;
+      binding_was_removed = TRUE;
     }
 
   if (binding->target != NULL)
@@ -404,9 +406,10 @@
 
       binding->target_notify = 0;
       binding->target = NULL;
+      binding_was_removed = TRUE;
     }
 
-  if (unref_binding)
+  if (binding_was_removed && unref_binding)
     g_object_unref (binding);
 }
 
@@ -748,7 +751,7 @@
 
 /**
  * g_binding_unbind:
- * @binding: (transfer full): a #GBinding
+ * @binding: a #GBinding
  *
  * Explicitly releases the binding between the source and the target
  * property expressed by @binding.
diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in
index de05232..985edd2 100755
--- a/gobject/glib-mkenums.in
+++ b/gobject/glib-mkenums.in
@@ -303,15 +303,15 @@
 parser.add_argument('--identifier-prefix', default='', dest='idprefix',
                     help='Identifier prefix')
 parser.add_argument('--symbol-prefix', default='', dest='symprefix',
-                    help='symbol-prefix')
+                    help='Symbol prefix')
 parser.add_argument('--fhead', default=[], dest='fhead', action='append',
                     help='Output file header')
 parser.add_argument('--ftail', default=[], dest='ftail', action='append',
-                    help='Per input file production')
+                    help='Output file footer')
 parser.add_argument('--fprod', default=[], dest='fprod', action='append',
-                    help='Put out TEXT everytime a new input file is being processed.')
+                    help='Put out TEXT every time a new input file is being processed.')
 parser.add_argument('--eprod', default=[], dest='eprod', action='append',
-                    help='Per enum text (produced prior to value iterations)')
+                    help='Per enum text, produced prior to value iterations')
 parser.add_argument('--vhead', default=[], dest='vhead', action='append',
                     help='Value header, produced before iterating over enum values')
 parser.add_argument('--vprod', default=[], dest='vprod', action='append',
@@ -324,8 +324,9 @@
                     help='Template file')
 parser.add_argument('--output', default=None, dest='output')
 parser.add_argument('--version', '-v', default=False, action='store_true', dest='version',
-                    help='Print version informations')
-parser.add_argument('args', nargs='*')
+                    help='Print version information')
+parser.add_argument('args', nargs='*',
+                    help='Input files')
 
 options = parser.parse_args()
 
@@ -415,12 +416,17 @@
     prod = prod.rstrip()
     return prod
 
+
+def warn_if_filename_basename_used(section, prod):
+    for substitution in ('\u0040filename\u0040',
+                         '\u0040basename\u0040'):
+        if substitution in prod:
+            print_warning('{} used in {} section.'.format(substitution,
+                                                          section))
+
 if len(fhead) > 0:
     prod = fhead
-    base = os.path.basename(options.args[0])
-
-    prod = prod.replace('\u0040filename\u0040', options.args[0])
-    prod = prod.replace('\u0040basename\u0040', base)
+    warn_if_filename_basename_used('file-header', prod)
     prod = replace_specials(prod)
     write_output(prod)
 
@@ -712,10 +718,7 @@
 
 if len(ftail) > 0:
     prod = ftail
-    base = os.path.basename(options.args[-1]) # FIXME, wrong
-
-    prod = prod.replace('\u0040filename\u0040', 'ARGV') # wrong too
-    prod = prod.replace('\u0040basename\u0040', base)
+    warn_if_filename_basename_used('file-tail', prod)
     prod = replace_specials(prod)
     write_output(prod)
 
diff --git a/gobject/tests/binding.c b/gobject/tests/binding.c
index e088ca7..019fb28 100644
--- a/gobject/tests/binding.c
+++ b/gobject/tests/binding.c
@@ -460,6 +460,7 @@
   BindingSource *c = g_object_new (binding_source_get_type (), NULL);
   GBinding *binding_1, *binding_2;
 
+  g_test_bug_base ("http://bugzilla.gnome.org/");
   g_test_bug ("621782");
 
   /* A -> B, B -> C */
@@ -625,6 +626,83 @@
   g_object_unref (source);
 }
 
+/* When source or target die, so does the binding if there is no other ref */
+static void
+binding_unbind_weak (void)
+{
+  GBinding *binding;
+  BindingSource *source;
+  BindingTarget *target;
+
+  /* first source, then target */
+  source = g_object_new (binding_source_get_type (), NULL);
+  target = g_object_new (binding_target_get_type (), NULL);
+  binding = g_object_bind_property (source, "foo",
+                                    target, "bar",
+                                    G_BINDING_DEFAULT);
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+  g_assert_nonnull (binding);
+  g_object_unref (source);
+  g_assert_null (binding);
+  g_object_unref (target);
+  g_assert_null (binding);
+
+  /* first target, then source */
+  source = g_object_new (binding_source_get_type (), NULL);
+  target = g_object_new (binding_target_get_type (), NULL);
+  binding = g_object_bind_property (source, "foo",
+                                    target, "bar",
+                                    G_BINDING_DEFAULT);
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+  g_assert_nonnull (binding);
+  g_object_unref (target);
+  g_assert_null (binding);
+  g_object_unref (source);
+  g_assert_null (binding);
+
+  /* target and source are the same */
+  source = g_object_new (binding_source_get_type (), NULL);
+  binding = g_object_bind_property (source, "foo",
+                                    source, "bar",
+                                    G_BINDING_DEFAULT);
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+  g_assert_nonnull (binding);
+  g_object_unref (source);
+  g_assert_null (binding);
+}
+
+/* Test that every call to unbind() after the first is a noop */
+static void
+binding_unbind_multiple (void)
+{
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  GBinding *binding;
+  guint i;
+
+  g_test_bug ("1373");
+
+  binding = g_object_bind_property (source, "foo",
+                                    target, "bar",
+                                    G_BINDING_DEFAULT);
+  g_object_ref (binding);
+  g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding);
+  g_assert_nonnull (binding);
+
+  /* this shouldn't crash */
+  for (i = 0; i < 50; i++)
+    {
+      g_binding_unbind (binding);
+      g_assert_nonnull (binding);
+    }
+
+  g_object_unref (binding);
+  g_assert_null (binding);
+
+  g_object_unref (source);
+  g_object_unref (target);
+}
+
 static void
 binding_fail (void)
 {
@@ -653,7 +731,7 @@
 {
   g_test_init (&argc, &argv, NULL);
 
-  g_test_bug_base ("http://bugzilla.gnome.org/");
+  g_test_bug_base ("https://gitlab.gnome.org/GNOME/glib/issues/");
 
   g_test_add_func ("/binding/default", binding_default);
   g_test_add_func ("/binding/bidirectional", binding_bidirectional);
@@ -665,6 +743,8 @@
   g_test_add_func ("/binding/invert-boolean", binding_invert_boolean);
   g_test_add_func ("/binding/same-object", binding_same_object);
   g_test_add_func ("/binding/unbind", binding_unbind);
+  g_test_add_func ("/binding/unbind-weak", binding_unbind_weak);
+  g_test_add_func ("/binding/unbind-multiple", binding_unbind_multiple);
   g_test_add_func ("/binding/fail", binding_fail);
 
   return g_test_run ();
diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build
index 8851500..cc83c5f 100644
--- a/gobject/tests/meson.build
+++ b/gobject/tests/meson.build
@@ -1,47 +1,3 @@
-gobject_tests = [
-  'qdata',
-  'boxed',
-  'enums',
-  'param',
-  'threadtests',
-  'dynamictests',
-  'binding',
-  'properties',
-  'reference',
-  'value',
-  'type',
-  'private',
-  'closure',
-  'object',
-  'signal-handler',
-  'ifaceproperties',
-]
-
-# FIXME: put common bits of test environment() in one location
-# Not entirely random of course, but at least it changes over time
-random_number = minor_version + meson.version().split('.').get(1).to_int()
-
-test_env = environment()
-test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
-test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
-test_env.set('G_DEBUG', 'gc-friendly')
-test_env.set('MALLOC_CHECK_', '2')
-test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
-
-foreach test_name : gobject_tests
-  deps = [libm, thread_dep, libglib_dep, libgobject_dep]
-  test_src = '@0@.c'.format(test_name)
-  # private is an existing or reserved target it seems
-  if test_name == 'private'
-    test_name = 'gobject-private'
-  endif
-  exe = executable(test_name, test_src,
-      c_args : ['-DG_LOG_DOMAIN="GLib-GObject"'],
-      dependencies : deps,
-  )
-  test(test_name, exe, env : test_env, suite : ['gobject'])
-endforeach
-
 marshalers_h = custom_target('marshalers_h',
   output : 'marshalers.h',
   input : 'marshalers.list',
@@ -70,12 +26,71 @@
   ],
 )
 
-exe = executable('signals',
-    'signals.c', marshalers_h, marshalers_c,
-    c_args : ['-DG_LOG_DOMAIN="GLib-GObject"'],
-    dependencies : deps,
-)
-test('signals', exe, env : test_env, suite : ['gobject'])
+gobject_tests = {
+  'qdata' : {},
+  'boxed' : {},
+  'enums' : {},
+  'param' : {},
+  'threadtests' : {},
+  'dynamictests' : {},
+  'binding' : {},
+  'properties' : {},
+  'reference' : {},
+  'value' : {},
+  'type' : {},
+  'gobject-private' : {
+    'source' : 'private.c',
+  },
+  'closure' : {},
+  'object' : {},
+  'signal-handler' : {},
+  'ifaceproperties' : {},
+  'signals' : {
+    'source' : ['signals.c', marshalers_h, marshalers_c],
+  },
+}
+
+# FIXME: put common bits of test environment() in one location
+# Not entirely random of course, but at least it changes over time
+random_number = minor_version + meson.version().split('.').get(1).to_int()
+
+test_env = environment()
+test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
+test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
+test_env.set('G_DEBUG', 'gc-friendly')
+test_env.set('MALLOC_CHECK_', '2')
+test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
+
+test_deps = [libm, thread_dep, libglib_dep, libgobject_dep]
+test_cargs = ['-DG_LOG_DOMAIN="GLib-GObject"']
+
+foreach test_name, extra_args : gobject_tests
+  source = extra_args.get('source', test_name + '.c')
+  install = installed_tests_enabled and extra_args.get('install', true)
+
+  if install
+    test_conf = configuration_data()
+    test_conf.set('installed_tests_dir', installed_tests_execdir)
+    test_conf.set('program', test_name)
+    configure_file(
+      input: installed_tests_template,
+      output: test_name + '.test',
+      install_dir: installed_tests_metadir,
+      configuration: test_conf
+    )
+  endif
+
+  exe = executable(test_name, source,
+    c_args : test_cargs + extra_args.get('c_args', []),
+    dependencies : test_deps + extra_args.get('dependencies', []),
+    install_dir: installed_tests_execdir,
+    install: install,
+  )
+
+  suite = ['gobject'] + extra_args.get('suite', [])
+  timeout = suite.contains('slow') ? 120 : 30
+  test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
+endforeach
 
 test(
   'mkenums.py',
diff --git a/gobject/tests/mkenums.py b/gobject/tests/mkenums.py
index 431453d..bb54433 100644
--- a/gobject/tests/mkenums.py
+++ b/gobject/tests/mkenums.py
@@ -20,14 +20,19 @@
 
 """Integration tests for glib-mkenums utility."""
 
+import collections
 import os
 import subprocess
 import tempfile
+import textwrap
 import unittest
 
 import taptestrunner
 
 
+Result = collections.namedtuple('Result', ('info', 'out', 'err', 'subs'))
+
+
 class TestMkenums(unittest.TestCase):
     """Integration test for running glib-mkenums.
 
@@ -70,15 +75,40 @@
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE,
                               env=env)
-        print('Output:', info.stdout.decode('utf-8'))
-        return info
+        info.check_returncode()
+        out = info.stdout.decode('utf-8').strip()
+        err = info.stderr.decode('utf-8').strip()
 
-    def runMkenumsWithHeader(self, h_contents, encoding='utf-8', *args):
+        # Known substitutions for standard boilerplate
+        subs = {
+            'standard_top_comment':
+                'This file is generated by glib-mkenums, do not modify '
+                'it. This code is licensed under the same license as the '
+                'containing project. Note that it links to GLib, so must '
+                'comply with the LGPL linking clauses.',
+            'standard_bottom_comment': 'Generated data ends here'
+        }
+
+        result = Result(info, out, err, subs)
+
+        print('Output:', result.out)
+        return result
+
+    def runMkenumsWithTemplate(self, template_contents, *args):
+        with tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
+                                         suffix='.template') as template_file:
+            # Write out the template.
+            template_file.write(template_contents.encode('utf-8'))
+            print(template_file.name + ':', template_contents)
+            template_file.flush()
+
+            return self.runMkenums('--template', template_file.name, *args)
+
+    def runMkenumsWithAllSubstitutions(self, *args):
+        '''Run glib-mkenums with a template which outputs all substitutions.'''
         template_contents = '''
 /*** BEGIN file-header ***/
 file-header
-filename: @filename@
-basename: @basename@
 /*** END file-header ***/
 
 /*** BEGIN file-production ***/
@@ -140,48 +170,30 @@
 
 /*** BEGIN file-tail ***/
 file-tail
-filename: @filename@
-basename: @basename@
 /*** END file-tail ***/
 '''
+        return self.runMkenumsWithTemplate(template_contents, *args)
 
+    def runMkenumsWithHeader(self, h_contents, encoding='utf-8'):
         with tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
-                                         suffix='.template') as template_file, \
-             tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
                                          suffix='.h') as h_file:
-            # Write out the template.
-            template_file.write(template_contents.encode('utf-8'))
-            print(template_file.name + ':', template_contents)
-
             # Write out the header to be scanned.
             h_file.write(h_contents.encode(encoding))
             print(h_file.name + ':', h_contents)
-
-            template_file.flush()
             h_file.flush()
 
             # Run glib-mkenums with a template which outputs all substitutions.
-            info = self.runMkenums('--template', template_file.name,
-                                   h_file.name)
-            info.check_returncode()
-            out = info.stdout.decode('utf-8').strip()
-            err = info.stderr.decode('utf-8').strip()
+            result = self.runMkenumsWithAllSubstitutions(h_file.name)
 
             # Known substitutions for generated filenames.
-            subs = {
+            result.subs.update({
                 'filename': h_file.name,
                 'basename': os.path.basename(h_file.name),
-                'standard_top_comment':
-                    'This file is generated by glib-mkenums, do not modify '
-                    'it. This code is licensed under the same license as the '
-                    'containing project. Note that it links to GLib, so must '
-                    'comply with the LGPL linking clauses.',
-                'standard_bottom_comment': 'Generated data ends here'
-            }
+            })
 
-            return (info, out, err, subs)
+            return result
 
-    def assertSingleEnum(self, out, subs, enum_name_camel, enum_name_lower,
+    def assertSingleEnum(self, result, enum_name_camel, enum_name_lower,
                          enum_name_upper, enum_name_short, enum_prefix,
                          type_lower, type_camel, type_upper,
                          value_name, value_nick, value_num):
@@ -199,7 +211,7 @@
             'value_name': value_name,
             'value_nick': value_nick,
             'value_num': value_num,
-        }, **subs)
+        }, **result.subs)
 
         self.assertEqual('''
 comment
@@ -207,8 +219,6 @@
 
 
 file-header
-filename: {filename}
-basename: {basename}
 file-production
 filename: {filename}
 basename: {basename}
@@ -247,40 +257,67 @@
 Type: {type_camel}
 TYPE: {type_upper}
 file-tail
-filename: ARGV
-basename: {basename}
 
 comment
 comment: {standard_bottom_comment}
-'''.format(**subs).strip(), out)
+'''.format(**subs).strip(), result.out)
 
     def test_help(self):
         """Test the --help argument."""
-        info = self.runMkenums('--help')
-        info.check_returncode()
+        result = self.runMkenums('--help')
+        self.assertIn('usage: glib-mkenums', result.out)
 
-        out = info.stdout.decode('utf-8').strip()
-        self.assertIn('usage: glib-mkenums', out)
+    def test_no_args(self):
+        """Test running with no arguments at all."""
+        result = self.runMkenums()
+        self.assertEqual('', result.err)
+        self.assertEquals('''/* {standard_top_comment} */
+
+
+/* {standard_bottom_comment} */'''.format(**result.subs),
+                          result.out.strip())
+
+    def test_empty_template(self):
+        """Test running with an empty template and no header files."""
+        result = self.runMkenumsWithTemplate('')
+        self.assertEqual('', result.err)
+        self.assertEquals('''/* {standard_top_comment} */
+
+
+/* {standard_bottom_comment} */'''.format(**result.subs),
+                          result.out.strip())
+
+    def test_no_headers(self):
+        """Test running with a complete template, but no header files."""
+        result = self.runMkenumsWithAllSubstitutions()
+        self.assertEqual('', result.err)
+        self.assertEquals('''
+comment
+comment: {standard_top_comment}
+
+
+file-header
+file-tail
+
+comment
+comment: {standard_bottom_comment}
+'''.format(**result.subs).strip(), result.out)
 
     def test_empty_header(self):
         """Test an empty header."""
-        (info, out, err, subs) = self.runMkenumsWithHeader('')
-        self.assertEqual('', err)
+        result = self.runMkenumsWithHeader('')
+        self.assertEqual('', result.err)
         self.assertEqual('''
 comment
 comment: {standard_top_comment}
 
 
 file-header
-filename: {filename}
-basename: {basename}
 file-tail
-filename: ARGV
-basename: {basename}
 
 comment
 comment: {standard_bottom_comment}
-'''.format(**subs).strip(), out)
+'''.format(**result.subs).strip(), result.out)
 
     def test_enum_name(self):
         """Test typedefs with an enum and a typedef name. Bug #794506."""
@@ -289,9 +326,9 @@
           ENUM_VALUE
         } SomeEnumIdentifier;
         '''
-        (info, out, err, subs) = self.runMkenumsWithHeader(h_contents)
-        self.assertEqual('', err)
-        self.assertSingleEnum(out, subs, 'SomeEnumIdentifier',
+        result = self.runMkenumsWithHeader(h_contents)
+        self.assertEqual('', result.err)
+        self.assertSingleEnum(result, 'SomeEnumIdentifier',
                               'some_enum_identifier', 'SOME_ENUM_IDENTIFIER',
                               'ENUM_IDENTIFIER', 'SOME', 'enum', 'Enum',
                               'ENUM', 'ENUM_VALUE', 'value', '0')
@@ -304,10 +341,9 @@
           ENUM_VALUE
         } SomeEnumIdentifier;
         '''
-        (info, out, err, subs) = \
-            self.runMkenumsWithHeader(h_contents, encoding='iso-8859-1')
-        self.assertIn('WARNING: UnicodeWarning: ', err)
-        self.assertSingleEnum(out, subs, 'SomeEnumIdentifier',
+        result = self.runMkenumsWithHeader(h_contents, encoding='iso-8859-1')
+        self.assertIn('WARNING: UnicodeWarning: ', result.err)
+        self.assertSingleEnum(result, 'SomeEnumIdentifier',
                               'some_enum_identifier', 'SOME_ENUM_IDENTIFIER',
                               'ENUM_IDENTIFIER', 'SOME', 'enum', 'Enum',
                               'ENUM', 'ENUM_VALUE', 'value', '0')
@@ -315,6 +351,8 @@
     def test_reproducible(self):
         """Test builds are reproducible regardless of file ordering.
         Bug #691436."""
+        template_contents = 'template'
+
         h_contents1 = '''
         typedef enum {
           FIRST,
@@ -328,36 +366,28 @@
         '''
 
         with tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
-                                         suffix='.template') as template_file, \
-             tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
                                          suffix='1.h') as h_file1, \
-             tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
-                                         suffix='2.h') as h_file2:
-            # Write out the template and headers.
-            template_file.write('template'.encode('utf-8'))
+                tempfile.NamedTemporaryFile(dir=self.tmpdir.name,
+                                            suffix='2.h') as h_file2:
+            # Write out the headers.
             h_file1.write(h_contents1.encode('utf-8'))
             h_file2.write(h_contents2.encode('utf-8'))
 
-            template_file.flush()
             h_file1.flush()
             h_file2.flush()
 
             # Run glib-mkenums with the headers in one order, and then again
             # in another order.
-            info1 = self.runMkenums('--template', template_file.name,
-                                    h_file1.name, h_file2.name)
-            info1.check_returncode()
-            out1 = info1.stdout.decode('utf-8').strip()
-            self.assertEqual('', info1.stderr.decode('utf-8').strip())
+            result1 = self.runMkenumsWithTemplate(template_contents,
+                                                  h_file1.name, h_file2.name)
+            self.assertEqual('', result1.err)
 
-            info2 = self.runMkenums('--template', template_file.name,
-                                    h_file2.name, h_file1.name)
-            info2.check_returncode()
-            out2 = info2.stdout.decode('utf-8').strip()
-            self.assertEqual('', info2.stderr.decode('utf-8').strip())
+            result2 = self.runMkenumsWithTemplate(template_contents,
+                                                  h_file2.name, h_file1.name)
+            self.assertEqual('', result2.err)
 
             # The output should be the same.
-            self.assertEqual(out1, out2)
+            self.assertEqual(result1.out, result2.out)
 
     def test_no_nick(self):
         """Test trigraphs with a desc but no nick. Issue #1360."""
@@ -366,13 +396,57 @@
           GEGL_SAMPLER_NEAREST = 0,   /*< desc="nearest"      >*/
         } GeglSamplerType;
         '''
-        (info, out, err, subs) = self.runMkenumsWithHeader(h_contents)
-        self.assertEqual('', err)
-        self.assertSingleEnum(out, subs, 'GeglSamplerType',
+        result = self.runMkenumsWithHeader(h_contents)
+        self.assertEqual('', result.err)
+        self.assertSingleEnum(result, 'GeglSamplerType',
                               'gegl_sampler_type', 'GEGL_SAMPLER_TYPE',
                               'SAMPLER_TYPE', 'GEGL', 'enum', 'Enum',
                               'ENUM', 'GEGL_SAMPLER_NEAREST', 'nearest', '0')
 
+    def test_filename_basename_in_fhead_ftail(self):
+        template_contents = '''
+/*** BEGIN file-header ***/
+file-header
+filename: @filename@
+basename: @basename@
+/*** END file-header ***/
+
+/*** BEGIN comment ***/
+comment
+comment: @comment@
+/*** END comment ***/
+
+/*** BEGIN file-tail ***/
+file-tail
+filename: @filename@
+basename: @basename@
+/*** END file-tail ***/'''
+        result = self.runMkenumsWithTemplate(template_contents)
+        self.assertEqual(
+            textwrap.dedent(
+                '''
+                WARNING: @filename@ used in file-header section.
+                WARNING: @basename@ used in file-header section.
+                WARNING: @filename@ used in file-tail section.
+                WARNING: @basename@ used in file-tail section.
+                ''').strip(),
+            result.err)
+        self.assertEqual('''
+comment
+comment: {standard_top_comment}
+
+
+file-header
+filename: @filename@
+basename: @basename@
+file-tail
+filename: @filename@
+basename: @basename@
+
+comment
+comment: {standard_bottom_comment}
+'''.format(**result.subs).strip(), result.out)
+
 
 if __name__ == '__main__':
     unittest.main(testRunner=taptestrunner.TAPTestRunner())
diff --git a/po/de.po b/po/de.po
index 8efc69e..80a14d1 100644
--- a/po/de.po
+++ b/po/de.po
@@ -16,8 +16,8 @@
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2018-06-21 17:12+0000\n"
-"PO-Revision-Date: 2018-06-23 12:35+0200\n"
+"POT-Creation-Date: 2018-08-10 13:36+0000\n"
+"PO-Revision-Date: 2018-08-15 11:52+0200\n"
 "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: Deutsch <gnome-de@gnome.org>\n"
 "Language: de\n"
@@ -25,130 +25,127 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.0.7\n"
+"X-Generator: Poedit 2.1\n"
 
-#: ../gio/gapplication.c:496
+#: gio/gapplication.c:496
 msgid "GApplication options"
 msgstr "Optionen für GApplication"
 
-#: ../gio/gapplication.c:496
+#: gio/gapplication.c:496
 msgid "Show GApplication options"
 msgstr "Optionen für GApplication anzeigen"
 
-#: ../gio/gapplication.c:541
+#: gio/gapplication.c:541
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "GApplication Dienstmodus starten (aus D-Bus Dienstdateien verwenden)"
 
-#: ../gio/gapplication.c:553
+#: gio/gapplication.c:553
 msgid "Override the application’s ID"
 msgstr "Anwendungskennung überschreiben"
 
-#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:569
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
 msgid "Print help"
 msgstr "Hilfe ausgeben"
 
-#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489
-#: ../gio/gresource-tool.c:557
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
 msgid "[COMMAND]"
 msgstr "[BEFEHL]"
 
-#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:228
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Version ausgeben"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
 msgid "Print version information and exit"
 msgstr "Versionsinformationen anzeigen und beenden"
 
-#: ../gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:52
 msgid "List applications"
 msgstr "Anwendungen auflisten"
 
-#: ../gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:53
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
 "Die über D-Bus aktivierbaren Anwendungen auflisten (aus .desktop-Dateien)"
 
-#: ../gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:55
 msgid "Launch an application"
 msgstr "Eine Anwendung starten"
 
-#: ../gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:56
 msgid "Launch the application (with optional files to open)"
 msgstr "Die Anwendung starten (mit optional zu öffnenden Dateien)"
 
-#: ../gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:57
 msgid "APPID [FILE…]"
 msgstr "ANWENDUNGSKENNUNG [DATEI …]"
 
-#: ../gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:59
 msgid "Activate an action"
 msgstr "Eine Aktion starten"
 
-#: ../gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:60
 msgid "Invoke an action on the application"
 msgstr "Eine Aktion auf die Anwendung starten"
 
-#: ../gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:61
 msgid "APPID ACTION [PARAMETER]"
 msgstr "ANWENDUNGSKENNUNG AKTION [PARAMETER]"
 
-#: ../gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:63
 msgid "List available actions"
 msgstr "Verfügbare Aktionen auflisten"
 
-#: ../gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:64
 msgid "List static actions for an application (from .desktop file)"
 msgstr "Statische Aktionen einer Anwendung auflisten (aus .desktop-Datei)"
 
-#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
 msgid "APPID"
 msgstr "ANWENDUNGSKENNUNG"
 
-#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:224
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "BEFEHL"
 
-#: ../gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:70
 msgid "The command to print detailed help for"
 msgstr "Der Befehl, für den eine detaillierte Hilfe ausgegeben wird"
 
-#: ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Anwendungsbezeichnung im D-Bus-Format (z.B: org.example.viewer)"
 
-#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:737
-#: ../gio/glib-compile-resources.c:743 ../gio/glib-compile-resources.c:770
-#: ../gio/gresource-tool.c:495 ../gio/gresource-tool.c:561
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:743 gio/glib-compile-resources.c:770
+#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
 msgid "FILE"
 msgstr "DATEI"
 
-#: ../gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:72
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr ""
 "Optional relative oder absolute Dateinamen oder Adressen (URIs) zum Öffnen"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "ACTION"
 msgstr "AKTION"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "The action name to invoke"
 msgstr "Der Name der aufzurufenden Aktion"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "PARAMETER"
 msgstr "PARAMETER"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Optionaler Parameter für den Aufruf der Aktion, im GVariant-Format"
 
-#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -157,26 +154,26 @@
 "Unbekannter Befehl %s\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:101
 msgid "Usage:\n"
 msgstr "Aufruf:\n"
 
-#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
+#: gio/gsettings-tool.c:696
 msgid "Arguments:\n"
 msgstr "Argumente:\n"
 
-#: ../gio/gapplication-tool.c:133 ../gio/gio-tool.c:224
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[ARGUMENTE …]"
 
-#: ../gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:134
 #, c-format
 msgid "Commands:\n"
 msgstr "Befehle:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: ../gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:146
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -185,7 +182,7 @@
 "Rufen Sie »%s help BEFEHL« auf, um detaillierte Hilfe zu erhalten.\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:165
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -194,13 +191,13 @@
 "Der Befehl %s erfordert eine unmittelbar folgende Anwendungskennung\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:171
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "Ungültige Anwendungskennung: »%s«\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: ../gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:182
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -209,22 +206,21 @@
 "»%s« akzeptiert keine Argumente\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:266
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "Verbindung mit D-Bus ist nicht möglich: %s\n"
 
-#: ../gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:286
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "Fehler beim Senden der %s-Nachricht zur Anwendung: %s\n"
 
-#: ../gio/gapplication-tool.c:317
-#, c-format
+#: gio/gapplication-tool.c:317
 msgid "action name must be given after application id\n"
 msgstr "Der Aktionsname muss nach der Anwendungskennung angegeben werden\n"
 
-#: ../gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:325
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -233,27 +229,25 @@
 "Ungültiger Aktionsname: »%s«\n"
 "Aktionsnamen dürfen nur aus alphanumerischen Zeichen, »-« und ».« bestehen\n"
 
-#: ../gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:344
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "Fehler bei der Verarbeitung des Aktionsparameters: %s\n"
 
-#: ../gio/gapplication-tool.c:356
-#, c-format
+#: gio/gapplication-tool.c:356
 msgid "actions accept a maximum of one parameter\n"
 msgstr "Aktionen akzeptiert maximal einen Parameter\n"
 
-#: ../gio/gapplication-tool.c:411
-#, c-format
+#: gio/gapplication-tool.c:411
 msgid "list-actions command takes only the application id"
 msgstr "Der Befehl list-actions akzeptiert nur die Anwendungskennung"
 
-#: ../gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:421
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "Die desktop-Datei für die Anwendung %s konnte nicht gefunden werden\n"
 
-#: ../gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:466
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -262,122 +256,118 @@
 "Unbekannter Befehl: %s\n"
 "\n"
 
-#: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498
-#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
-#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
-#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:203 gio/goutputstream.c:834
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:209
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "Zu großer Zählwert an %s übermittelt"
 
-#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575
-#: ../gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "Suchen im Basis-Datenstrom nicht unterstützt"
 
-#: ../gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:937
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "GBufferedInputStream konnte nicht abgeschnitten werden"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1208
-#: ../gio/giostream.c:300 ../gio/goutputstream.c:1661
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:1661
 msgid "Stream is already closed"
 msgstr "Datenstrom ist bereits geschlossen"
 
-#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
 msgstr "Abschneiden wird vom Basis-Datenstrom nicht unterstützt"
 
-#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
-#: ../gio/gsimpleasyncresult.c:897
+#: gio/gcancellable.c:317 gio/gdbusconnection.c:1840 gio/gdbusprivate.c:1402
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "Vorgang wurde abgebrochen"
 
-#: ../gio/gcharsetconverter.c:260
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "Ungültiges Objekt, wurde nicht initialisiert"
 
-#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "Ungültige Multibyte-Folge in Eingabe"
 
-#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "Nicht genug Platz im Ziel"
 
-#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:454 ../glib/gconvert.c:883
-#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
-#: ../glib/giochannel.c:2443 ../glib/gutf8.c:869 ../glib/gutf8.c:1322
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:454 glib/gconvert.c:883
+#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
+#: glib/gutf8.c:869 glib/gutf8.c:1322
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ungültige Bytefolge in Umwandlungseingabe"
 
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:462 ../glib/gconvert.c:797
-#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:462 glib/gconvert.c:797
+#: glib/giochannel.c:1564 glib/giochannel.c:2455
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Fehler bei der Umwandlung: %s"
 
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1104
 msgid "Cancellable initialization not supported"
 msgstr "Abbrechbare Initialisierung wird nicht unterstützt"
 
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:327
-#: ../glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:327 glib/giochannel.c:1385
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Umwandlung von Zeichensatz »%s« in »%s« wird nicht unterstützt"
 
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:331
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:331
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Konverter von »%s« in »%s« konnte nicht geöffnet werden"
 
-#: ../gio/gcontenttype.c:358
+#: gio/gcontenttype.c:358
 #, c-format
 msgid "%s type"
 msgstr "%s-Typ"
 
-#: ../gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:177
 msgid "Unknown type"
 msgstr "Unbekannter Typ"
 
-#: ../gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:179
 #, c-format
 msgid "%s filetype"
 msgstr "%s-Dateityp"
 
-#: ../gio/gcredentials.c:315 ../gio/gcredentials.c:574
+#: gio/gcredentials.c:315 gio/gcredentials.c:574
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials ist in diesem Betriebssystem nicht implementiert"
 
-#: ../gio/gcredentials.c:470
+#: gio/gcredentials.c:470
 msgid "There is no GCredentials support for your platform"
 msgstr "Es gibt auf Ihrer Plattform keine Unterstützung für GCredentials"
 
-#: ../gio/gcredentials.c:516
+#: gio/gcredentials.c:516
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials enthält in diesem Betriebssystem keine Prozesskennung"
 
-#: ../gio/gcredentials.c:568
+#: gio/gcredentials.c:568
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Fälschen von Anmeldedaten ist unter diesem Betriebssystem nicht möglich"
 
-#: ../gio/gdatainputstream.c:304
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Unerwartet frühes Datenstromende"
 
-#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
-#: ../gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nicht unterstützter Schlüssel »%s« im Adresseintrag »%s«"
 
-#: ../gio/gdbusaddress.c:185
+#: gio/gdbusaddress.c:185
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
@@ -385,32 +375,32 @@
 "Adresse »%s« ist ungültig (benötigt genau einen der Schlüssel path, tmpdir "
 "oder abstract)"
 
-#: ../gio/gdbusaddress.c:198
+#: gio/gdbusaddress.c:198
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Bedeutungsloses Schlüssel-Wert-Paar im Adresseintrag »%s«"
 
-#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
 #, c-format
 msgid "Error in address “%s” — the port attribute is malformed"
 msgstr "Fehler in Adresse »%s« – Das Port-Attribut ist nicht korrekt"
 
-#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
+#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
 #, c-format
 msgid "Error in address “%s” — the family attribute is malformed"
 msgstr "Fehler in Adresse »%s« – Das Familien-Attribut ist nicht korrekt"
 
-#: ../gio/gdbusaddress.c:423 ../gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unbekannter oder nicht unterstützter Transport »%s« für Adresse »%s«"
 
-#: ../gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:467
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresselement »%s« enthält keinen Doppelpunkt"
 
-#: ../gio/gdbusaddress.c:488
+#: gio/gdbusaddress.c:488
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -419,7 +409,7 @@
 "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« enthält kein "
 "Gleichheitszeichen"
 
-#: ../gio/gdbusaddress.c:502
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -428,7 +418,7 @@
 "Fehler beim Entfernen von Escape-Zeichen im Schlüssel-Wert-Paar %d, »%s«, im "
 "Adresselement »%s«"
 
-#: ../gio/gdbusaddress.c:580
+#: gio/gdbusaddress.c:580
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -437,94 +427,94 @@
 "Fehler in Adresse »%s« - für den Unix-Transport muss genau einer der "
 "Schlüssel »path« oder »abstract« gesetzt sein"
 
-#: ../gio/gdbusaddress.c:616
+#: gio/gdbusaddress.c:616
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Host-Attribut fehlt oder ist nicht korrekt"
 
-#: ../gio/gdbusaddress.c:630
+#: gio/gdbusaddress.c:630
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Port-Attribut fehlt oder ist nicht korrekt"
 
-#: ../gio/gdbusaddress.c:644
+#: gio/gdbusaddress.c:644
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das noncefile-Attribut fehlt oder ist nicht korrekt"
 
-#: ../gio/gdbusaddress.c:665
+#: gio/gdbusaddress.c:665
 msgid "Error auto-launching: "
 msgstr "Fehler beim automatischen Starten: "
 
-#: ../gio/gdbusaddress.c:718
+#: gio/gdbusaddress.c:718
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fehler beim Öffnen der Nonce-Datei »%s«: %s"
 
-#: ../gio/gdbusaddress.c:737
+#: gio/gdbusaddress.c:737
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fehler beim Lesen der Nonce-Datei »%s«: %s"
 
-#: ../gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:746
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Fehler beim Lesen der Nonce-Datei »%s«, erwartet wurden 16 Bytes, jedoch %d "
 "erhalten"
 
-#: ../gio/gdbusaddress.c:764
+#: gio/gdbusaddress.c:764
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Fehler beim Schreiben des Inhalts der Nonce-Datei »%s« in den Datenstrom:"
 
-#: ../gio/gdbusaddress.c:973
+#: gio/gdbusaddress.c:973
 msgid "The given address is empty"
 msgstr "Die angegebene Adresse ist leer"
 
-#: ../gio/gdbusaddress.c:1086
+#: gio/gdbusaddress.c:1086
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Ein Nachrichtenbus kann nicht mit setuid erzeugt werden"
 
-#: ../gio/gdbusaddress.c:1093
+#: gio/gdbusaddress.c:1093
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Ein Nachrichtenbus kann nicht ohne eine Rechner-Kennung erzeugt werden: "
 
-#: ../gio/gdbusaddress.c:1100
+#: gio/gdbusaddress.c:1100
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "D-Bus kann nicht automatisch ohne X11 $DISPLAY gestartet werden"
 
-#: ../gio/gdbusaddress.c:1142
+#: gio/gdbusaddress.c:1142
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fehler beim Erzeugen der Befehlszeile »%s«: "
 
-#: ../gio/gdbusaddress.c:1359
+#: gio/gdbusaddress.c:1359
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr ""
 "(Geben Sie ein beliebiges Zeichen ein, um dieses Fenster zu schließen)\n"
 
-#: ../gio/gdbusaddress.c:1513
+#: gio/gdbusaddress.c:1513
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Der Sitzungs-dbus läuft nicht und automatisches Starten schlug fehl"
 
-#: ../gio/gdbusaddress.c:1524
+#: gio/gdbusaddress.c:1524
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Adresse des Sitzungsbus konnte nicht ermittelt werden (für dieses "
 "Betriebssystem nicht implementiert)"
 
-#: ../gio/gdbusaddress.c:1662 ../gio/gdbusconnection.c:7151
+#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7142
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -533,7 +523,7 @@
 "Bus-Adresse konnte nicht über die Umgebungsvariable DBUS_STARTER_BUS_TYPE "
 "ermittelt werden – unbekannter Wert »%s«"
 
-#: ../gio/gdbusaddress.c:1671 ../gio/gdbusconnection.c:7160
+#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7151
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -541,21 +531,21 @@
 "Bus-Adresse konnte nicht ermittelt werden, da die Umgebungsvariable "
 "DBUS_STARTER_BUS_TYPE nicht gesetzt ist"
 
-#: ../gio/gdbusaddress.c:1681
+#: gio/gdbusaddress.c:1681
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unbekannter Bus-Typ %d"
 
-#: ../gio/gdbusauth.c:293
+#: gio/gdbusauth.c:293
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Unerwarteter Mangel an Inhalt beim Versuch, eine Zeile zu lesen"
 
-#: ../gio/gdbusauth.c:337
+#: gio/gdbusauth.c:337
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Unerwarteter Mangel an Inhalt beim Versuch, eine Zeile (sicher) zu lesen"
 
-#: ../gio/gdbusauth.c:481
+#: gio/gdbusauth.c:481
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -563,16 +553,16 @@
 "Alle verfügbaren Legitimierungsmechanismen sind ausgeschöpft (%s Versuche) "
 "(verfügbar: %s)"
 
-#: ../gio/gdbusauth.c:1144
+#: gio/gdbusauth.c:1144
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Abgebrochen durch GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:262
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fehler beim Holen der Informationen für Ordner »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:274
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -580,22 +570,22 @@
 "Zugriffsrechte des Ordners »%s« sind inkorrekt. Erwarteter Modus ist 0700, "
 "0%o wurde erhalten"
 
-#: ../gio/gdbusauthmechanismsha1.c:299
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fehler beim Erstellen des Ordners »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:346
+#: gio/gdbusauthmechanismsha1.c:346
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Lesen: "
 
-#: ../gio/gdbusauthmechanismsha1.c:369 ../gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Zeile %d des Schlüsselbundes auf »%s« mit Inhalt »%s« ist inkorrekt"
 
-#: ../gio/gdbusauthmechanismsha1.c:383 ../gio/gdbusauthmechanismsha1.c:701
+#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -603,7 +593,7 @@
 "Der erste Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt »%s« "
 "ist inkorrekt"
 
-#: ../gio/gdbusauthmechanismsha1.c:397 ../gio/gdbusauthmechanismsha1.c:715
+#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -611,58 +601,58 @@
 "Der zweite Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt "
 "»%s« ist inkorrekt"
 
-#: ../gio/gdbusauthmechanismsha1.c:421
+#: gio/gdbusauthmechanismsha1.c:421
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Cookie mit Kennung %d konnte im Schlüsselbund auf »%s« nicht gefunden werden"
 
-#: ../gio/gdbusauthmechanismsha1.c:503
+#: gio/gdbusauthmechanismsha1.c:503
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fehler beim Löschen der alten Sperrdatei »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:535
+#: gio/gdbusauthmechanismsha1.c:535
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fehler beim Erstellen der Sperrdatei »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:566
+#: gio/gdbusauthmechanismsha1.c:566
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fehler beim Schließen der entknüpften Sperrdatei »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:577
+#: gio/gdbusauthmechanismsha1.c:577
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fehler beim Entknüpfen der Sperrdatei »%s«: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:654
+#: gio/gdbusauthmechanismsha1.c:654
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Schreiben: "
 
-#: ../gio/gdbusauthmechanismsha1.c:850
+#: gio/gdbusauthmechanismsha1.c:850
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Außerdem schlug das Entsperren von »%s« ebenso fehl: %s) "
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2378
+#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2369
 msgid "The connection is closed"
 msgstr "Verbindung ist geschlossen"
 
-#: ../gio/gdbusconnection.c:1879
+#: gio/gdbusconnection.c:1870
 msgid "Timeout was reached"
 msgstr "Zeitüberschreitung wurde erreicht"
 
-#: ../gio/gdbusconnection.c:2500
+#: gio/gdbusconnection.c:2491
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Beim Erstellen einer client-seitigen Verbindung wurden nicht unterstützte "
 "Flags entdeckt"
 
-#: ../gio/gdbusconnection.c:4124 ../gio/gdbusconnection.c:4471
+#: gio/gdbusconnection.c:4115 gio/gdbusconnection.c:4462
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -670,104 +660,100 @@
 "Keine derartige Schnittstelle »org.freedesktop.DBus.Properties« des Objekts "
 "im Pfad %s"
 
-#: ../gio/gdbusconnection.c:4266
+#: gio/gdbusconnection.c:4257
 #, c-format
 msgid "No such property “%s”"
 msgstr "Keine derartige Eigenschaft »%s«"
 
-#: ../gio/gdbusconnection.c:4278
+#: gio/gdbusconnection.c:4269
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Eigenschaft »%s« ist nicht lesbar"
 
-#: ../gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4280
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Eigenschaft »%s« ist nicht schreibbar"
 
-#: ../gio/gdbusconnection.c:4309
+#: gio/gdbusconnection.c:4300
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fehler beim Setzen der Eigenschaft »%s«: Erwarteter Typ war »%s«, aber »%s« "
 "wurde erhalten"
 
-#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:6591
+#: gio/gdbusconnection.c:4405 gio/gdbusconnection.c:4613
+#: gio/gdbusconnection.c:6582
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Keine derartige Schnittstelle »%s«"
 
-#: ../gio/gdbusconnection.c:4622
-#, c-format
-msgid "No such interface '%s'"
-msgstr "Keine derartige Schnittstelle »%s«"
-
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7100
+#: gio/gdbusconnection.c:4831 gio/gdbusconnection.c:7091
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Keine derartige Schnittstelle »%s« des Objekts im Pfad %s"
 
-#: ../gio/gdbusconnection.c:4938
+#: gio/gdbusconnection.c:4929
 #, c-format
 msgid "No such method “%s”"
 msgstr "Keine derartige Methode »%s«"
 
-#: ../gio/gdbusconnection.c:4969
+#: gio/gdbusconnection.c:4960
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Der Nachrichtentyp »%s« entspricht nicht dem erwarteten Typ »%s«"
 
-#: ../gio/gdbusconnection.c:5167
+#: gio/gdbusconnection.c:5158
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Für die Schnittstelle %s auf %s wurde bereits ein Objekt exportiert"
 
-#: ../gio/gdbusconnection.c:5393
+#: gio/gdbusconnection.c:5384
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Eigenschaft kann nicht abgefragt werden: %s.%s"
 
-#: ../gio/gdbusconnection.c:5449
+#: gio/gdbusconnection.c:5440
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Eigenschaft kann nicht gesetzt werden: %s.%s"
 
-#: ../gio/gdbusconnection.c:5627
+#: gio/gdbusconnection.c:5618
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Methode »%s« gab Typ »%s« zurück, aber »%s« wurde erwartet"
 
-#: ../gio/gdbusconnection.c:6702
+#: gio/gdbusconnection.c:6693
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Methode »%s« in Schnittstelle »%s« mit Signatur »%s« existiert nicht"
 
-#: ../gio/gdbusconnection.c:6823
+#: gio/gdbusconnection.c:6814
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ein Unterbaum wurde bereits für %s exportiert"
 
-#: ../gio/gdbusmessage.c:1248
+#: gio/gdbusmessage.c:1248
 msgid "type is INVALID"
 msgstr "Typ ist UNGÜLTIG"
 
-#: ../gio/gdbusmessage.c:1259
+#: gio/gdbusmessage.c:1259
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-Meldung: Kopfzeilenfeld PATH oder MEMBER fehlt"
 
-#: ../gio/gdbusmessage.c:1270
+#: gio/gdbusmessage.c:1270
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-Meldung: Kopfzeilenfeld REPLY_SERIAL fehlt"
 
-#: ../gio/gdbusmessage.c:1282
+#: gio/gdbusmessage.c:1282
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-Meldung: Kopfzeilenfeld REPLY_SERIAL oder ERROR_NAME fehlt"
 
-#: ../gio/gdbusmessage.c:1295
+#: gio/gdbusmessage.c:1295
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-Meldung: Kopfzeilenfeld PATH, INTERFACE oder MEMBER fehlt"
 
-#: ../gio/gdbusmessage.c:1303
+#: gio/gdbusmessage.c:1303
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -775,7 +761,7 @@
 "SIGNAL-Meldung: Das Kopfzeilenfeld PATH verwendet den reservierten Wert /org/"
 "freedesktop/DBus/Local"
 
-#: ../gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1311
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -783,21 +769,21 @@
 "SIGNAL-Meldung: Das Kopfzeilenfeld INTERFACE verwendet den reservierten Wert "
 "org.freedesktop.DBus.Local"
 
-#: ../gio/gdbusmessage.c:1359 ../gio/gdbusmessage.c:1419
+#: gio/gdbusmessage.c:1359 gio/gdbusmessage.c:1419
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu Byte sollte gelesen werden, aber nur %lu erhalten"
 msgstr[1] "%lu Bytes sollten gelesen werden, aber nur %lu erhalten"
 
-#: ../gio/gdbusmessage.c:1373
+#: gio/gdbusmessage.c:1373
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Ein NUL-Byte wurde nach der Zeichenkette »%s« erwartet, aber es wurde Byte "
 "%d gefunden"
 
-#: ../gio/gdbusmessage.c:1392
+#: gio/gdbusmessage.c:1392
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -807,17 +793,17 @@
 "Position %d gefunden (Länge der Zeichenkette ist %d). Die gültige UTF-8-"
 "Zeichenkette bis zu diesem Punkt war »%s«."
 
-#: ../gio/gdbusmessage.c:1595
+#: gio/gdbusmessage.c:1595
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Verarbeiteter Wert »%s« ist kein gültiger D-Bus-Objektpfad"
 
-#: ../gio/gdbusmessage.c:1617
+#: gio/gdbusmessage.c:1617
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur"
 
-#: ../gio/gdbusmessage.c:1664
+#: gio/gdbusmessage.c:1664
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -830,7 +816,7 @@
 "Array der Länge %u Bytes wurde erkannt. Maximale Länge ist 2<<26 Bytes (64 "
 "MiB)."
 
-#: ../gio/gdbusmessage.c:1684
+#: gio/gdbusmessage.c:1684
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -839,12 +825,12 @@
 "Es wurde ein Feld des Typs »a%c« gefunden. Erwartet wurde als Länge ein "
 "Vielfaches von %u Byte, aber es waren %u Byte Länge"
 
-#: ../gio/gdbusmessage.c:1851
+#: gio/gdbusmessage.c:1851
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« für Variante ist keine gültige D-Bus-Signatur"
 
-#: ../gio/gdbusmessage.c:1875
+#: gio/gdbusmessage.c:1875
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -852,7 +838,7 @@
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« aus "
 "dem D-Bus Wire-Format"
 
-#: ../gio/gdbusmessage.c:2057
+#: gio/gdbusmessage.c:2057
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -861,25 +847,25 @@
 "Ungültiger Wert für die Speicherreihenfolge. Es wird entweder 0x6c (»l«) "
 "oder 0x42 (»B«) erwartet, aber der Wert 0x%02x gefunden"
 
-#: ../gio/gdbusmessage.c:2070
+#: gio/gdbusmessage.c:2070
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Ungültige Version des Hauptprotokolls. Erwartet wurde 1, jedoch %d gefunden"
 
-#: ../gio/gdbusmessage.c:2126
+#: gio/gdbusmessage.c:2126
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signatur-Kopfzeilenfeld mit Signatur »%s« gefunden, aber Nachrichtenrumpf "
 "ist leer"
 
-#: ../gio/gdbusmessage.c:2140
+#: gio/gdbusmessage.c:2140
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur (für Rumpf)"
 
-#: ../gio/gdbusmessage.c:2170
+#: gio/gdbusmessage.c:2170
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -890,11 +876,11 @@
 "Kein Signatur-Kopfzeilenfeld in der Nachricht, aber der Nachrichtenrumpf ist "
 "%u Bytes groß"
 
-#: ../gio/gdbusmessage.c:2180
+#: gio/gdbusmessage.c:2180
 msgid "Cannot deserialize message: "
 msgstr "Meldung kann nicht deserialisiert werden: "
 
-#: ../gio/gdbusmessage.c:2521
+#: gio/gdbusmessage.c:2521
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -902,7 +888,7 @@
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« in "
 "das D-Bus Wire-Format"
 
-#: ../gio/gdbusmessage.c:2658
+#: gio/gdbusmessage.c:2658
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -910,18 +896,18 @@
 "Anzahl der Dateideskriptoren in Meldung (%d) und Kopfzeilenfeld (%d) ist "
 "unterschiedlich"
 
-#: ../gio/gdbusmessage.c:2666
+#: gio/gdbusmessage.c:2666
 msgid "Cannot serialize message: "
 msgstr "Meldung kann nicht serialisiert werden: "
 
-#: ../gio/gdbusmessage.c:2710
+#: gio/gdbusmessage.c:2710
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber es gibt keine Signatur im "
 "Kopfzeilenfeld"
 
-#: ../gio/gdbusmessage.c:2720
+#: gio/gdbusmessage.c:2720
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -930,42 +916,42 @@
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber die Signatur im "
 "Kopfzeilenfeld ist »%s«"
 
-#: ../gio/gdbusmessage.c:2736
+#: gio/gdbusmessage.c:2736
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Nachrichtenrumpf ist leer, aber die Signatur im Kopfzeilenfeld ist »(%s)«"
 
-#: ../gio/gdbusmessage.c:3289
+#: gio/gdbusmessage.c:3289
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fehlerrückmeldung mit Inhalt des Typs »%s«"
 
-#: ../gio/gdbusmessage.c:3297
+#: gio/gdbusmessage.c:3297
 msgid "Error return with empty body"
 msgstr "Fehlerrückmeldung mit leerem Inhalt"
 
-#: ../gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2066
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Hardware-Profil konnte nicht ermittelt werden: %s"
 
-#: ../gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2111
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "/var/lib/dbus/machine-id oder /etc/machine-id konnte nicht geladen werden: "
 
-#: ../gio/gdbusproxy.c:1612
+#: gio/gdbusproxy.c:1612
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Fehler beim Aufruf von StartServiceByName für %s: "
 
-#: ../gio/gdbusproxy.c:1635
+#: gio/gdbusproxy.c:1635
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unerwartete Antwort %d von der Methode StartServiceByName(»%s«)"
 
-#: ../gio/gdbusproxy.c:2726 ../gio/gdbusproxy.c:2860
+#: gio/gdbusproxy.c:2726 gio/gdbusproxy.c:2860
 msgid ""
 "Cannot invoke method; proxy is for a well-known name without an owner and "
 "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
@@ -974,30 +960,30 @@
 "bekannten Namen ohne Besitzer und der Proxy wurde mit dem Flag "
 "»G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START« erstellt"
 
-#: ../gio/gdbusserver.c:708
+#: gio/gdbusserver.c:708
 msgid "Abstract name space not supported"
 msgstr "Abstrakter Namensraum wird nicht unterstützt"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:795
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Nonce-Datei kann beim Erstellen eines Servers nicht angegeben werden"
 
-#: ../gio/gdbusserver.c:876
+#: gio/gdbusserver.c:876
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Fehler beim Schreiben der Nonce-Datei auf »%s«: %s"
 
-#: ../gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1047
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Die Zeichenkette »%s« ist keine gültige GUID für D-Bus"
 
-#: ../gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1087
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "An nicht unterstützter Übertragung »%s« kann nicht gelauscht werden"
 
-#: ../gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:95
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1020,54 +1006,54 @@
 "\n"
 "Mit »%s BEFEHL --help« erhalten Sie Hilfe zu jedem der Befehle.\n"
 
-#: ../gio/gdbus-tool.c:185 ../gio/gdbus-tool.c:252 ../gio/gdbus-tool.c:324
-#: ../gio/gdbus-tool.c:348 ../gio/gdbus-tool.c:834 ../gio/gdbus-tool.c:1171
-#: ../gio/gdbus-tool.c:1613
+#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
+#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
+#: gio/gdbus-tool.c:1613
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fehler: %s\n"
 
-#: ../gio/gdbus-tool.c:196 ../gio/gdbus-tool.c:265 ../gio/gdbus-tool.c:1629
+#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fehler beim Verarbeiten des XML-Codes der Inspektion: %s\n"
 
-#: ../gio/gdbus-tool.c:234
+#: gio/gdbus-tool.c:234
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Fehler: %s ist kein gültiger Name\n"
 
-#: ../gio/gdbus-tool.c:382
+#: gio/gdbus-tool.c:382
 msgid "Connect to the system bus"
 msgstr "Zum Systembus verbinden"
 
-#: ../gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:383
 msgid "Connect to the session bus"
 msgstr "Zum Sitzungsbus verbinden"
 
-#: ../gio/gdbus-tool.c:384
+#: gio/gdbus-tool.c:384
 msgid "Connect to given D-Bus address"
 msgstr "Zur angegebenen D-Bus-Adresse verbinden"
 
-#: ../gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:394
 msgid "Connection Endpoint Options:"
 msgstr "Optionen für Gegenstelle der Verbindung:"
 
-#: ../gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:395
 msgid "Options specifying the connection endpoint"
 msgstr "Optionen zur Gegenstelle der Verbindung"
 
-#: ../gio/gdbus-tool.c:417
+#: gio/gdbus-tool.c:417
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Keine Gegenstelle der Verbindung angegeben"
 
-#: ../gio/gdbus-tool.c:427
+#: gio/gdbus-tool.c:427
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Mehrere Gegenstellen der Verbindung angegeben"
 
-#: ../gio/gdbus-tool.c:497
+#: gio/gdbus-tool.c:497
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1075,7 +1061,7 @@
 "Warnung: Entsprechend den Inspektionsdaten existiert die Schnittstelle »%s« "
 "nicht\n"
 
-#: ../gio/gdbus-tool.c:506
+#: gio/gdbus-tool.c:506
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1084,169 +1070,164 @@
 "Warnung: Entsprechend den Inspektionsdaten existiert die Methode »%s« nicht "
 "in der Schnittstelle »%s«\n"
 
-#: ../gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:568
 msgid "Optional destination for signal (unique name)"
 msgstr "Optionales Ziel des Signals (eindeutiger Name)"
 
-#: ../gio/gdbus-tool.c:569
+#: gio/gdbus-tool.c:569
 msgid "Object path to emit signal on"
 msgstr "Objektpfad, auf den das Signal ausgegeben werden soll"
 
-#: ../gio/gdbus-tool.c:570
+#: gio/gdbus-tool.c:570
 msgid "Signal and interface name"
 msgstr "Signal und Schnittstellenname"
 
-#: ../gio/gdbus-tool.c:603
+#: gio/gdbus-tool.c:603
 msgid "Emit a signal."
 msgstr "Ein Signal ausgeben."
 
-#: ../gio/gdbus-tool.c:658 ../gio/gdbus-tool.c:965 ../gio/gdbus-tool.c:1715
-#: ../gio/gdbus-tool.c:1944 ../gio/gdbus-tool.c:2164
+#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
+#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fehler beim Verbinden: %s\n"
 
-#: ../gio/gdbus-tool.c:678
+#: gio/gdbus-tool.c:678
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fehler: %s ist kein gültiger eindeutiger Bus-Name.\n"
 
-#: ../gio/gdbus-tool.c:697 ../gio/gdbus-tool.c:1008 ../gio/gdbus-tool.c:1758
-#, c-format
+#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
 msgid "Error: Object path is not specified\n"
 msgstr "Fehler: Objektpfad wurde nicht angegeben\n"
 
-#: ../gio/gdbus-tool.c:720 ../gio/gdbus-tool.c:1028 ../gio/gdbus-tool.c:1778
-#: ../gio/gdbus-tool.c:2015
+#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
+#: gio/gdbus-tool.c:2015
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fehler: %s ist kein gültiger Objektpfad\n"
 
-#: ../gio/gdbus-tool.c:740
-#, c-format
+#: gio/gdbus-tool.c:740
 msgid "Error: Signal name is not specified\n"
 msgstr "Fehler: Signalname wurde nicht angegeben\n"
 
-#: ../gio/gdbus-tool.c:754
+#: gio/gdbus-tool.c:754
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Fehler: Signalname »%s« ist ungültig\n"
 
-#: ../gio/gdbus-tool.c:766
+#: gio/gdbus-tool.c:766
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fehler: %s ist kein gültiger Schnittstellenname\n"
 
-#: ../gio/gdbus-tool.c:772
+#: gio/gdbus-tool.c:772
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fehler: %s ist kein gültiger Mitgliedsname\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:809 ../gio/gdbus-tool.c:1140
+#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d: %s\n"
 
-#: ../gio/gdbus-tool.c:841
+#: gio/gdbus-tool.c:841
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Fehler beim Löschen der Verbindung: %s\n"
 
-#: ../gio/gdbus-tool.c:868
+#: gio/gdbus-tool.c:868
 msgid "Destination name to invoke method on"
 msgstr "Name des Ziels, für das die Methode aufgerufen werden soll"
 
-#: ../gio/gdbus-tool.c:869
+#: gio/gdbus-tool.c:869
 msgid "Object path to invoke method on"
 msgstr "Objektpfad, für den die Methode aufgerufen werden soll"
 
-#: ../gio/gdbus-tool.c:870
+#: gio/gdbus-tool.c:870
 msgid "Method and interface name"
 msgstr "Methode und Schnittstellenname"
 
-#: ../gio/gdbus-tool.c:871
+#: gio/gdbus-tool.c:871
 msgid "Timeout in seconds"
 msgstr "Zeitablauf in Sekunden"
 
-#: ../gio/gdbus-tool.c:910
+#: gio/gdbus-tool.c:910
 msgid "Invoke a method on a remote object."
 msgstr "Eine Methode für ein entferntes Objekt aufrufen."
 
-#: ../gio/gdbus-tool.c:982 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1969
-#, c-format
+#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
 msgid "Error: Destination is not specified\n"
 msgstr "Fehler: Ziel wurde nicht angegeben\n"
 
-#: ../gio/gdbus-tool.c:993 ../gio/gdbus-tool.c:1749 ../gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fehler: %s ist kein gültiger Bus-Name\n"
 
-#: ../gio/gdbus-tool.c:1043
-#, c-format
+#: gio/gdbus-tool.c:1043
 msgid "Error: Method name is not specified\n"
 msgstr "Fehler: Name der Methode wurde nicht angegeben\n"
 
-#: ../gio/gdbus-tool.c:1054
+#: gio/gdbus-tool.c:1054
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fehler: Name der Methode »%s« ist ungültig\n"
 
-#: ../gio/gdbus-tool.c:1132
+#: gio/gdbus-tool.c:1132
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d vom Typ »%s«: %s\n"
 
-#: ../gio/gdbus-tool.c:1576
+#: gio/gdbus-tool.c:1576
 msgid "Destination name to introspect"
 msgstr "Name des Ziels der Inspektion"
 
-#: ../gio/gdbus-tool.c:1577
+#: gio/gdbus-tool.c:1577
 msgid "Object path to introspect"
 msgstr "Zu inspizierender Objektpfad"
 
-#: ../gio/gdbus-tool.c:1578
+#: gio/gdbus-tool.c:1578
 msgid "Print XML"
 msgstr "XML drucken"
 
-#: ../gio/gdbus-tool.c:1579
+#: gio/gdbus-tool.c:1579
 msgid "Introspect children"
 msgstr "Unterelemente inspizieren"
 
-#: ../gio/gdbus-tool.c:1580
+#: gio/gdbus-tool.c:1580
 msgid "Only print properties"
 msgstr "Nur Eigenschaften ausgeben"
 
-#: ../gio/gdbus-tool.c:1667
+#: gio/gdbus-tool.c:1667
 msgid "Introspect a remote object."
 msgstr "Ein entferntes Objekt inspizieren."
 
-#: ../gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:1870
 msgid "Destination name to monitor"
 msgstr "Name des zu überwachenden Ziels"
 
-#: ../gio/gdbus-tool.c:1871
+#: gio/gdbus-tool.c:1871
 msgid "Object path to monitor"
 msgstr "Zu überwachender Objektpfad"
 
-#: ../gio/gdbus-tool.c:1896
+#: gio/gdbus-tool.c:1896
 msgid "Monitor a remote object."
 msgstr "Ein entferntes Objekt überwachen."
 
-#: ../gio/gdbus-tool.c:1954
-#, c-format
+#: gio/gdbus-tool.c:1954
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Fehler: eine Nicht-Message-Bus-Verbindung kann nicht überwacht werden\n"
 
-#: ../gio/gdbus-tool.c:2078
+#: gio/gdbus-tool.c:2078
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Zu aktivierender Dienst, bevor auf den anderen gewartet wird (allgemein "
 "bekannter Name)"
 
-#: ../gio/gdbus-tool.c:2081
+#: gio/gdbus-tool.c:2081
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1254,140 +1235,135 @@
 "Zeitspanne, die gewartet werden soll, bis mit einer Fehlermeldung "
 "abgebrochen wird (Sekunden); 0 für keine Zeitspanne (Voreinstellung)"
 
-#: ../gio/gdbus-tool.c:2129
+#: gio/gdbus-tool.c:2129
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION …] BUS-NAME"
 
-#: ../gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:2130
 msgid "Wait for a bus name to appear."
 msgstr "Name eines Busses, auf dessen Verfügbarkeit gewartet werden soll."
 
-#: ../gio/gdbus-tool.c:2206
-#, c-format
+#: gio/gdbus-tool.c:2206
 msgid "Error: A service to activate for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, der gestartet werden soll.\n"
 
-#: ../gio/gdbus-tool.c:2211
-#, c-format
+#: gio/gdbus-tool.c:2211
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, auf den gewartet werden soll.\n"
 
-#: ../gio/gdbus-tool.c:2216
-#, c-format
+#: gio/gdbus-tool.c:2216
 msgid "Error: Too many arguments.\n"
 msgstr "Fehler: Zu viele Argumente.\n"
 
-#: ../gio/gdbus-tool.c:2224 ../gio/gdbus-tool.c:2231
+#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fehler: %s ist kein gültiger, bekannter Bus-Name\n"
 
-#: ../gio/gdesktopappinfo.c:2023 ../gio/gdesktopappinfo.c:4633
+#: gio/gdesktopappinfo.c:2023 gio/gdesktopappinfo.c:4633
 msgid "Unnamed"
 msgstr "Unbenannt"
 
-#: ../gio/gdesktopappinfo.c:2433
+#: gio/gdesktopappinfo.c:2433
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop-Datei hat kein Exec-Feld angegeben"
 
-#: ../gio/gdesktopappinfo.c:2692
+#: gio/gdesktopappinfo.c:2692
 msgid "Unable to find terminal required for application"
 msgstr "Für die Anwendung benötigtes Terminal konnte nicht gefunden werden"
 
-#: ../gio/gdesktopappinfo.c:3202
+#: gio/gdesktopappinfo.c:3202
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Konfigurationsordner %s für Benutzeranwendungen konnte nicht erstellt "
 "werden: %s"
 
-#: ../gio/gdesktopappinfo.c:3206
+#: gio/gdesktopappinfo.c:3206
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "MIME-Konfigurationsordner %s des Benutzers konnte nicht erstellt werden: %s"
 
-#: ../gio/gdesktopappinfo.c:3446 ../gio/gdesktopappinfo.c:3470
+#: gio/gdesktopappinfo.c:3446 gio/gdesktopappinfo.c:3470
 msgid "Application information lacks an identifier"
 msgstr "Den Anwendungsinformationen fehlt ein Bezeichner"
 
-#: ../gio/gdesktopappinfo.c:3704
+#: gio/gdesktopappinfo.c:3704
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Benutzer-Desktop-Datei %s kann nicht erstellt werden"
 
-#: ../gio/gdesktopappinfo.c:3838
+#: gio/gdesktopappinfo.c:3838
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Benutzerdefinition für %s"
 
-#: ../gio/gdrive.c:417
+#: gio/gdrive.c:417
 msgid "drive doesn’t implement eject"
 msgstr "Laufwerk unterstützt Auswerfen nicht"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:495
+#: gio/gdrive.c:495
 msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr "Laufwerk unterstützt weder ein Auswerfen noch »eject_with_operation«"
 
-#: ../gio/gdrive.c:571
+#: gio/gdrive.c:571
 msgid "drive doesn’t implement polling for media"
 msgstr "Laufwerk unterstützt Prüfen auf Datenträger nicht"
 
-#: ../gio/gdrive.c:778
+#: gio/gdrive.c:778
 msgid "drive doesn’t implement start"
 msgstr "Laufwerk unterstützt keinen Startvorgang"
 
-#: ../gio/gdrive.c:880
+#: gio/gdrive.c:880
 msgid "drive doesn’t implement stop"
 msgstr "Laufwerk unterstützt keinen Stoppvorgang"
 
-#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317
-#: ../gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
 msgid "TLS support is not available"
 msgstr "TLS-Unterstützung ist nicht verfügbar"
 
-#: ../gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:419
 msgid "DTLS support is not available"
 msgstr "DTLS-Unterstützung ist nicht verfügbar"
 
-#: ../gio/gemblem.c:323
+#: gio/gemblem.c:323
 #, c-format
 msgid "Can’t handle version %d of GEmblem encoding"
 msgstr "Version %d der GEmblem-Kodierung kann nicht verarbeitet werden"
 
-#: ../gio/gemblem.c:333
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Ungültige Symbolanzahl (%d) in GEmblem-Kodierung"
 
-#: ../gio/gemblemedicon.c:362
+#: gio/gemblemedicon.c:362
 #, c-format
 msgid "Can’t handle version %d of GEmblemedIcon encoding"
 msgstr "Version %d der GEmblemedIcon-Kodierung kann nicht verarbeitet werden"
 
-#: ../gio/gemblemedicon.c:372
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Ungültige Symbolanzahl (%d) in GEmblemedIcon-Kodierung"
 
-#: ../gio/gemblemedicon.c:395
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Es wurde ein GEmblem für GEmblemedIcon erwartet"
 
-#: ../gio/gfile.c:1076 ../gio/gfile.c:1314 ../gio/gfile.c:1452
-#: ../gio/gfile.c:1690 ../gio/gfile.c:1745 ../gio/gfile.c:1803
-#: ../gio/gfile.c:1887 ../gio/gfile.c:1944 ../gio/gfile.c:2008
-#: ../gio/gfile.c:2063 ../gio/gfile.c:3738 ../gio/gfile.c:3793
-#: ../gio/gfile.c:4029 ../gio/gfile.c:4071 ../gio/gfile.c:4539
-#: ../gio/gfile.c:4950 ../gio/gfile.c:5035 ../gio/gfile.c:5125
-#: ../gio/gfile.c:5222 ../gio/gfile.c:5309 ../gio/gfile.c:5410
-#: ../gio/gfile.c:7988 ../gio/gfile.c:8078 ../gio/gfile.c:8162
-#: ../gio/win32/gwinhttpfile.c:437
+#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
+#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
+#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
+#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
+#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
+#: gio/gfile.c:5410 gio/gfile.c:7988 gio/gfile.c:8078 gio/gfile.c:8162
+#: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Vorgang wird nicht unterstützt"
 
@@ -1395,206 +1371,206 @@
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: ../gio/gfile.c:1575
+#: gio/gfile.c:1575
 msgid "Containing mount does not exist"
 msgstr "Enthaltender Einhängepunkt existiert nicht"
 
-#: ../gio/gfile.c:2622 ../gio/glocalfile.c:2389
+#: gio/gfile.c:2622 gio/glocalfile.c:2391
 msgid "Can’t copy over directory"
 msgstr "Es kann nicht über den Ordner kopiert werden"
 
-#: ../gio/gfile.c:2682
+#: gio/gfile.c:2682
 msgid "Can’t copy directory over directory"
 msgstr "Ordner kann nicht über Ordner kopiert werden"
 
-#: ../gio/gfile.c:2690
+#: gio/gfile.c:2690
 msgid "Target file exists"
 msgstr "Zieldatei existiert"
 
-#: ../gio/gfile.c:2709
+#: gio/gfile.c:2709
 msgid "Can’t recursively copy directory"
 msgstr "Ordner kann nicht rekursiv kopiert werden"
 
-#: ../gio/gfile.c:2984
+#: gio/gfile.c:2984
 msgid "Splice not supported"
 msgstr "Zusammenfügen wird nicht unterstützt"
 
-#: ../gio/gfile.c:2988 ../gio/gfile.c:3033
+#: gio/gfile.c:2988 gio/gfile.c:3033
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fehler beim Zusammenfügen der Datei: %s"
 
-#: ../gio/gfile.c:3149
+#: gio/gfile.c:3149
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopieren (reflink/clone) zwischen Einhängepunkten nicht unterstützt"
 
-#: ../gio/gfile.c:3153
+#: gio/gfile.c:3153
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopieren (reflink/clone) wird nicht unterstützt oder ist ungültig"
 
-#: ../gio/gfile.c:3158
+#: gio/gfile.c:3158
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Kopieren (reflink/clone) wird nicht unterstützt oder funktioniert nicht"
 
-#: ../gio/gfile.c:3221
+#: gio/gfile.c:3221
 msgid "Can’t copy special file"
 msgstr "Spezielle Datei kann nicht kopiert werden"
 
-#: ../gio/gfile.c:4019
+#: gio/gfile.c:4019
 msgid "Invalid symlink value given"
 msgstr "Ungültiger Wert für symbolische Verknüpfung angegeben"
 
-#: ../gio/gfile.c:4180
+#: gio/gfile.c:4180
 msgid "Trash not supported"
 msgstr "Papierkorb nicht unterstützt"
 
-#: ../gio/gfile.c:4292
+#: gio/gfile.c:4292
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Dateinamen dürfen kein »%c« enthalten"
 
-#: ../gio/gfile.c:6773 ../gio/gvolume.c:364
+#: gio/gfile.c:6773 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "Datenträger unterstützt Einhängen nicht"
 
-#: ../gio/gfile.c:6882
+#: gio/gfile.c:6882
 msgid "No application is registered as handling this file"
 msgstr "Es wurde keine Anwendung gefunden, die diese Datei verarbeiten kann"
 
-#: ../gio/gfileenumerator.c:212
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr "Datei-Enumerator ist geschlossen"
 
-#: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278
-#: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr "Datei-Enumerator hat noch einen ausstehenden Vorgang"
 
-#: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr "Datei-Enumerator ist bereits geschlossen"
 
-#: ../gio/gfileicon.c:236
+#: gio/gfileicon.c:236
 #, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Version %d der GFileIcon-Kodierung kann nicht verarbeitet werden"
 
-#: ../gio/gfileicon.c:246
+#: gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
 msgstr "Ungültige Eingangsdaten für GFileIcon"
 
-#: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394
-#: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164
-#: ../gio/gfileoutputstream.c:497
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
 msgid "Stream doesn’t support query_info"
 msgstr "Datenstrom unterstützt query_info nicht"
 
-#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
-#: ../gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "Suchen im Datenstrom nicht unterstützt"
 
-#: ../gio/gfileinputstream.c:369
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr "Abschneiden des Eingabedatenstroms nicht erlaubt"
 
-#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr "Abschneiden wird vom Datenstrom nicht unterstützt"
 
-#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1786
+#: gio/ghttpproxy.c:91 gio/gresolver.c:410 gio/gresolver.c:476
+#: glib/gconvert.c:1786
 msgid "Invalid hostname"
 msgstr "Ungültiger Rechnername"
 
-#: ../gio/ghttpproxy.c:143
+#: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
 msgstr "Ungültige Antwort vom HTTP-Proxy"
 
-#: ../gio/ghttpproxy.c:159
+#: gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
 msgstr "Verbindung zum HTTP-Proxy nicht zugelassen"
 
-#: ../gio/ghttpproxy.c:164
+#: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
 msgstr "Legitimierung am HTTP-Proxy ist fehlgeschlagen"
 
-#: ../gio/ghttpproxy.c:167
+#: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
 msgstr "Legitimierung ist erforderlich am HTTP-Proxy"
 
-#: ../gio/ghttpproxy.c:171
+#: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
 msgstr "Verbindung zum HTTP-Proxy ist fehlgeschlagen: %i"
 
-#: ../gio/ghttpproxy.c:269
+#: gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "HTTP Proxy-Server hat die Verbindung unerwartet geschlossen."
 
-#: ../gio/gicon.c:290
+#: gio/gicon.c:290
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Ungültige Symbolanzahl (%d)"
 
-#: ../gio/gicon.c:310
+#: gio/gicon.c:310
 #, c-format
 msgid "No type for class name %s"
 msgstr "Kein Typ für Klassenname %s"
 
-#: ../gio/gicon.c:320
+#: gio/gicon.c:320
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "GIcon-Schnittstelle wird vom Typ %s nicht unterstützt"
 
-#: ../gio/gicon.c:331
+#: gio/gicon.c:331
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Typ %s ist keine Klasse"
 
-#: ../gio/gicon.c:345
+#: gio/gicon.c:345
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Ungültige Versionsnummer: %s"
 
-#: ../gio/gicon.c:359
+#: gio/gicon.c:359
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Typ %s implementiert nicht from_tokens() der GIcon-Schnittstelle"
 
-#: ../gio/gicon.c:461
+#: gio/gicon.c:461
 msgid "Can’t handle the supplied version of the icon encoding"
 msgstr "Übergebene Version der Symbol-Kodierung kann nicht verarbeitet werden"
 
-#: ../gio/ginetaddressmask.c:182
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "Keine Adresse angegeben"
 
-#: ../gio/ginetaddressmask.c:190
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr "Länge %u ist zu groß für eine Adresse"
 
-#: ../gio/ginetaddressmask.c:223
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr "Für die Adresse sind Bits außerhalb der Präfix-Länge gesetzt"
 
-#: ../gio/ginetaddressmask.c:300
+#: gio/ginetaddressmask.c:300
 #, c-format
 msgid "Could not parse “%s” as IP address mask"
 msgstr "»%s« konnte nicht als IP-Adressmaske verarbeitet werden"
 
-#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220
-#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:220
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
 msgid "Not enough space for socket address"
 msgstr "Nicht genug Platz für eine Socket-Adresse"
 
-#: ../gio/ginetsocketaddress.c:235
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "Nicht unterstützte Socket-Adresse"
 
-#: ../gio/ginputstream.c:188
+#: gio/ginputstream.c:188
 msgid "Input stream doesn’t implement read"
 msgstr "Eingabedatenstrom unterstützt kein Lesen"
 
@@ -1604,125 +1580,122 @@
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: ../gio/ginputstream.c:1218 ../gio/giostream.c:310
-#: ../gio/goutputstream.c:1671
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:1671
 msgid "Stream has outstanding operation"
 msgstr "Datenstrom hat noch einen ausstehenden Vorgang"
 
-#: ../gio/gio-tool.c:160
+#: gio/gio-tool.c:160
 msgid "Copy with file"
 msgstr "Mit Datei kopieren"
 
-#: ../gio/gio-tool.c:164
+#: gio/gio-tool.c:164
 msgid "Keep with file when moved"
 msgstr "Zusammen mit Datei verschieben"
 
-#: ../gio/gio-tool.c:205
+#: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
 msgstr "»version« akzeptiert keine Argumente"
 
-#: ../gio/gio-tool.c:207 ../gio/gio-tool.c:223 ../glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
 msgid "Usage:"
 msgstr "Aufruf:"
 
-#: ../gio/gio-tool.c:210
+#: gio/gio-tool.c:210
 msgid "Print version information and exit."
 msgstr "Versionsinformationen ausgeben und beenden."
 
-#: ../gio/gio-tool.c:226
+#: gio/gio-tool.c:226
 msgid "Commands:"
 msgstr "Befehle:"
 
-#: ../gio/gio-tool.c:229
+#: gio/gio-tool.c:229
 msgid "Concatenate files to standard output"
 msgstr "Dateien aneinander hängen und auf der Standardausgabe ausgeben"
 
-#: ../gio/gio-tool.c:230
+#: gio/gio-tool.c:230
 msgid "Copy one or more files"
 msgstr "Eine oder mehrere Dateien kopieren"
 
-#: ../gio/gio-tool.c:231
+#: gio/gio-tool.c:231
 msgid "Show information about locations"
 msgstr "Informationen zu Orten anzeigen"
 
-#: ../gio/gio-tool.c:232
+#: gio/gio-tool.c:232
 msgid "List the contents of locations"
 msgstr "Den Inhalt der Orte auflisten"
 
-#: ../gio/gio-tool.c:233
+#: gio/gio-tool.c:233
 msgid "Get or set the handler for a mimetype"
 msgstr "Anwendung für MIME-Typ ermitteln oder festlegen"
 
-#: ../gio/gio-tool.c:234
+#: gio/gio-tool.c:234
 msgid "Create directories"
 msgstr "Ordner erstellen"
 
-#: ../gio/gio-tool.c:235
+#: gio/gio-tool.c:235
 msgid "Monitor files and directories for changes"
 msgstr "Dateien und Ordner auf Änderungen überwachen"
 
-#: ../gio/gio-tool.c:236
+#: gio/gio-tool.c:236
 msgid "Mount or unmount the locations"
 msgstr "Die Orte ein- oder aushängen"
 
-#: ../gio/gio-tool.c:237
+#: gio/gio-tool.c:237
 msgid "Move one or more files"
 msgstr "Eine oder mehrere Dateien verschieben"
 
-#: ../gio/gio-tool.c:238
+#: gio/gio-tool.c:238
 msgid "Open files with the default application"
 msgstr "Dateien mit der Standard-Anwendung öffnen"
 
-#: ../gio/gio-tool.c:239
+#: gio/gio-tool.c:239
 msgid "Rename a file"
 msgstr "Eine Datei umbenennen"
 
-#: ../gio/gio-tool.c:240
+#: gio/gio-tool.c:240
 msgid "Delete one or more files"
 msgstr "Eine oder mehrere Dateien löschen"
 
-#: ../gio/gio-tool.c:241
+#: gio/gio-tool.c:241
 msgid "Read from standard input and save"
 msgstr "Aus der Standardeingabe lesen und speichern"
 
-#: ../gio/gio-tool.c:242
+#: gio/gio-tool.c:242
 msgid "Set a file attribute"
 msgstr "Ein Dateiattribut festlegen"
 
-#: ../gio/gio-tool.c:243
+#: gio/gio-tool.c:243
 msgid "Move files or directories to the trash"
 msgstr "Dateien oder Ordner in den Papierkorb verschieben"
 
-#: ../gio/gio-tool.c:244
+#: gio/gio-tool.c:244
 msgid "Lists the contents of locations in a tree"
 msgstr "Den Inhalt der Orte in einer Baumstruktur auflisten"
 
-#: ../gio/gio-tool.c:246
+#: gio/gio-tool.c:246
 #, c-format
 msgid "Use %s to get detailed help.\n"
 msgstr "Verwenden Sie »%s«, um detaillierte Hilfe zu erhalten.\n"
 
-#: ../gio/gio-tool-cat.c:87
+#: gio/gio-tool-cat.c:87
 msgid "Error writing to stdout"
 msgstr "Fehler beim Schreiben in die Standardausgabe"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
-#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
-#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
-#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
-#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1235
-#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
-#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
-#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:113
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "ORT"
 
-#: ../gio/gio-tool-cat.c:138
+#: gio/gio-tool-cat.c:138
 msgid "Concatenate files and print to standard output."
 msgstr "Dateien aneinander hängen und auf der Standardausgabe ausgeben."
 
-#: ../gio/gio-tool-cat.c:140
+#: gio/gio-tool-cat.c:140
 msgid ""
 "gio cat works just like the traditional cat utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1732,59 +1705,56 @@
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/datei.txt« angeben."
 
-#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
-#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-mount.c:1285 ../gio/gio-tool-open.c:139
-#: ../gio/gio-tool-remove.c:72 ../gio/gio-tool-trash.c:136
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:139
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Keine Orte angegeben"
 
-#: ../gio/gio-tool-copy.c:42 ../gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Kein Zielordner"
 
-#: ../gio/gio-tool-copy.c:43 ../gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Fortschritt zeigen"
 
-#: ../gio/gio-tool-copy.c:44 ../gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Vor Überschreiben nachfragen"
 
-#: ../gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:45
 msgid "Preserve all attributes"
 msgstr "Alle Attribute übernehmen"
 
-#: ../gio/gio-tool-copy.c:46 ../gio/gio-tool-move.c:41
-#: ../gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Vorhandene Zieldateien sichern"
 
-#: ../gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:47
 msgid "Never follow symbolic links"
 msgstr "Niemals symbolischen Verknüpfungen folgen"
 
-#: ../gio/gio-tool-copy.c:72 ../gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s von %s übertragen (%s/s)"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "QUELLE"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "ZIEL"
 
-#: ../gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:103
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Eine oder mehrere Dateien von QUELLE nach ZIEL kopieren."
 
-#: ../gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:105
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1794,93 +1764,88 @@
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/datei.txt« angeben."
 
-#: ../gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:147
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "Das Ziel »%s« ist kein Ordner"
 
-#: ../gio/gio-tool-copy.c:192 ../gio/gio-tool-move.c:185
+#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s: Soll »%s« überschrieben werden? "
 
-#: ../gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:34
 msgid "List writable attributes"
 msgstr "Schreibbare Attribute auflisten"
 
-#: ../gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:35
 msgid "Get file system info"
 msgstr "Informationen zum Dateisystem erhalten"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
 msgid "The attributes to get"
 msgstr "Das einzulesende Attribut"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTE"
 
-#: ../gio/gio-tool-info.c:37 ../gio/gio-tool-list.c:38 ../gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Symbolischen Verknüpfungen nicht folgen"
 
-#: ../gio/gio-tool-info.c:75
-#, c-format
+#: gio/gio-tool-info.c:75
 msgid "attributes:\n"
 msgstr "Attribute:\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:127
 #, c-format
 msgid "display name: %s\n"
 msgstr "Anzeigename: %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:132
 #, c-format
 msgid "edit name: %s\n"
 msgstr "Name bearbeiten: %s\n"
 
-#: ../gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:138
 #, c-format
 msgid "name: %s\n"
 msgstr "Name: %s\n"
 
-#: ../gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "type: %s\n"
 msgstr "Typ: %s\n"
 
-#: ../gio/gio-tool-info.c:151
-#, c-format
+#: gio/gio-tool-info.c:151
 msgid "size: "
 msgstr "Größe: "
 
-#: ../gio/gio-tool-info.c:156
-#, c-format
+#: gio/gio-tool-info.c:156
 msgid "hidden\n"
 msgstr "verborgen\n"
 
-#: ../gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:159
 #, c-format
 msgid "uri: %s\n"
 msgstr "Adresse: %s\n"
 
-#: ../gio/gio-tool-info.c:228
-#, c-format
+#: gio/gio-tool-info.c:228
 msgid "Settable attributes:\n"
 msgstr "Setzbare Attribute:\n"
 
-#: ../gio/gio-tool-info.c:252
-#, c-format
+#: gio/gio-tool-info.c:252
 msgid "Writable attribute namespaces:\n"
 msgstr "Namensraum der schreibbaren Attribute:\n"
 
-#: ../gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:287
 msgid "Show information about locations."
 msgstr "Informationen zu Orten zeigen."
 
-#: ../gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:289
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1895,23 +1860,23 @@
 "anhand des Namensraums, z.B. »unix«, oder durch »*« angegeben werden,\n"
 "was auf alle Attribute passt."
 
-#: ../gio/gio-tool-list.c:36 ../gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Verborgene Dateien zeigen"
 
-#: ../gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:37
 msgid "Use a long listing format"
 msgstr "Langes Listenformat verwenden"
 
-#: ../gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:39
 msgid "Print full URIs"
 msgstr "Volle Adressen ausgeben"
 
-#: ../gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:170
 msgid "List the contents of the locations."
 msgstr "Den Inhalt der Orte auflisten."
 
-#: ../gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:172
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1924,19 +1889,19 @@
 "Dateiattribute werden mit dem GIO-Namen angegeben, z.B. standard::icon"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "MIMETYPE"
 msgstr "MIME-TYP"
 
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "HANDLER"
 msgstr "BEHANDLUNGSROUTINE"
 
-#: ../gio/gio-tool-mime.c:76
+#: gio/gio-tool-mime.c:76
 msgid "Get or set the handler for a mimetype."
 msgstr "Anwendung für MIME-Typ ermitteln oder festlegen."
 
-#: ../gio/gio-tool-mime.c:78
+#: gio/gio-tool-mime.c:78
 msgid ""
 "If no handler is given, lists registered and recommended applications\n"
 "for the mimetype. If a handler is given, it is set as the default\n"
@@ -1947,61 +1912,57 @@
 "routine angegeben ist, wird diese als Voreinstellung für den MIME-Typ "
 "gesetzt."
 
-#: ../gio/gio-tool-mime.c:100
+#: gio/gio-tool-mime.c:100
 msgid "Must specify a single mimetype, and maybe a handler"
 msgstr ""
 "Ein einzelner MIME-Typ und eventuell eine Behandlungsroutine müssen "
 "angegeben werden"
 
-#: ../gio/gio-tool-mime.c:116
+#: gio/gio-tool-mime.c:116
 #, c-format
 msgid "No default applications for “%s”\n"
 msgstr "Keine Vorgabeanwendungen für »%s«\n"
 
-#: ../gio/gio-tool-mime.c:122
+#: gio/gio-tool-mime.c:122
 #, c-format
 msgid "Default application for “%s”: %s\n"
 msgstr "Standardanwendung für »%s«: %s\n"
 
-#: ../gio/gio-tool-mime.c:127
-#, c-format
+#: gio/gio-tool-mime.c:127
 msgid "Registered applications:\n"
 msgstr "Registrierte Anwendungen:\n"
 
-#: ../gio/gio-tool-mime.c:129
-#, c-format
+#: gio/gio-tool-mime.c:129
 msgid "No registered applications\n"
 msgstr "Keine registrierten Anwendungen\n"
 
-#: ../gio/gio-tool-mime.c:140
-#, c-format
+#: gio/gio-tool-mime.c:140
 msgid "Recommended applications:\n"
 msgstr "Empfohlene Anwendungen:\n"
 
-#: ../gio/gio-tool-mime.c:142
-#, c-format
+#: gio/gio-tool-mime.c:142
 msgid "No recommended applications\n"
 msgstr "Keine empfohlenen Anwendungen\n"
 
-#: ../gio/gio-tool-mime.c:162
+#: gio/gio-tool-mime.c:162
 #, c-format
 msgid "Failed to load info for handler “%s”"
 msgstr "Information zur Anwendung »%s« kann nicht geladen werden"
 
-#: ../gio/gio-tool-mime.c:168
+#: gio/gio-tool-mime.c:168
 #, c-format
 msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
 msgstr "»%s« kann nicht als Vorgabeanwendung für »%s« gesetzt werden: %s\n"
 
-#: ../gio/gio-tool-mkdir.c:31
+#: gio/gio-tool-mkdir.c:31
 msgid "Create parent directories"
 msgstr "Elternordner erstellen"
 
-#: ../gio/gio-tool-mkdir.c:52
+#: gio/gio-tool-mkdir.c:52
 msgid "Create directories."
 msgstr "Ordner erstellen."
 
-#: ../gio/gio-tool-mkdir.c:54
+#: gio/gio-tool-mkdir.c:54
 msgid ""
 "gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2011,141 +1972,139 @@
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/Ordner« angeben."
 
-#: ../gio/gio-tool-monitor.c:37
+#: gio/gio-tool-monitor.c:37
 msgid "Monitor a directory (default: depends on type)"
 msgstr "Einen Ordner überwachen (Vorgabe: abhängig vom Typ)"
 
-#: ../gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:39
 msgid "Monitor a file (default: depends on type)"
 msgstr "Eine Datei überwachen (Vorgabe: abhängig vom Typ)"
 
-#: ../gio/gio-tool-monitor.c:41
+#: gio/gio-tool-monitor.c:41
 msgid "Monitor a file directly (notices changes made via hardlinks)"
 msgstr ""
 "Eine Datei direkt überwachen (erkennt über harte Verknüpfungen gemachte "
 "Änderungen)"
 
-#: ../gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:43
 msgid "Monitors a file directly, but doesn’t report changes"
 msgstr "Überwacht eine Datei direkt, aber berichtet nicht über Änderungen"
 
-#: ../gio/gio-tool-monitor.c:45
+#: gio/gio-tool-monitor.c:45
 msgid "Report moves and renames as simple deleted/created events"
 msgstr ""
 "Verschiebungen und Umbenennungen als einfache Lösch- oder Erzeugungsvorgänge "
 "melden"
 
-#: ../gio/gio-tool-monitor.c:47
+#: gio/gio-tool-monitor.c:47
 msgid "Watch for mount events"
 msgstr "Auf Einhängevorgänge überwachen"
 
-#: ../gio/gio-tool-monitor.c:208
+#: gio/gio-tool-monitor.c:208
 msgid "Monitor files or directories for changes."
 msgstr "Dateien und Ordner auf Änderungen überwachen."
 
-#: ../gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:63
 msgid "Mount as mountable"
 msgstr "Als einhängbar einbinden"
 
-#: ../gio/gio-tool-mount.c:63
+#: gio/gio-tool-mount.c:64
 msgid "Mount volume with device file"
 msgstr "Datenträger über Gerätedatei einhängen"
 
-#: ../gio/gio-tool-mount.c:63 ../gio/gio-tool-mount.c:66
+#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
 msgid "DEVICE"
 msgstr "GERÄT"
 
-#: ../gio/gio-tool-mount.c:64
+#: gio/gio-tool-mount.c:65
 msgid "Unmount"
 msgstr "Aushängen"
 
-#: ../gio/gio-tool-mount.c:65
+#: gio/gio-tool-mount.c:66
 msgid "Eject"
 msgstr "Auswerfen"
 
-#: ../gio/gio-tool-mount.c:66
+#: gio/gio-tool-mount.c:67
 msgid "Stop drive with device file"
 msgstr "Datenträger über Gerätedatei stoppen"
 
-#: ../gio/gio-tool-mount.c:67
+#: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Alle Einhängepunkte passend zum Namensschema aushängen"
 
-#: ../gio/gio-tool-mount.c:67
+#: gio/gio-tool-mount.c:68
 msgid "SCHEME"
 msgstr "SCHEMA"
 
-#: ../gio/gio-tool-mount.c:68
+#: gio/gio-tool-mount.c:69
 msgid "Ignore outstanding file operations when unmounting or ejecting"
 msgstr ""
 "Ausstehende Dateioperationen ignorieren, wenn ausgehängt oder ausgeworfen "
 "wird"
 
-#: ../gio/gio-tool-mount.c:69
+#: gio/gio-tool-mount.c:70
 msgid "Use an anonymous user when authenticating"
 msgstr "Nutzen Sie einen anonymen Nutzer bei der Legitimierung"
 
 #. Translator: List here is a verb as in 'List all mounts'
-#: ../gio/gio-tool-mount.c:71
+#: gio/gio-tool-mount.c:72
 msgid "List"
 msgstr "Auflisten"
 
-#: ../gio/gio-tool-mount.c:72
+#: gio/gio-tool-mount.c:73
 msgid "Monitor events"
 msgstr "Ereignisse überwachen"
 
-#: ../gio/gio-tool-mount.c:73
+#: gio/gio-tool-mount.c:74
 msgid "Show extra information"
 msgstr "Zusätzliche Informationen anzeigen"
 
-#: ../gio/gio-tool-mount.c:74
+#: gio/gio-tool-mount.c:75
 msgid "The numeric PIM when unlocking a VeraCrypt volume"
 msgstr "Die numerische PIM beim Entsperren eines VeraCrypt-Datenträgers"
 
-#: ../gio/gio-tool-mount.c:74
-#| msgctxt "GDateTime"
-#| msgid "PM"
+#: gio/gio-tool-mount.c:75
 msgid "PIM"
 msgstr "PIM"
 
-#: ../gio/gio-tool-mount.c:75
+#: gio/gio-tool-mount.c:76
 msgid "Mount a TCRYPT hidden volume"
 msgstr "Einen verborgenen TCRYPT-Datenträger einhängen"
 
-#: ../gio/gio-tool-mount.c:76
+#: gio/gio-tool-mount.c:77
 msgid "Mount a TCRYPT system volume"
 msgstr "Einen TCRYPT-Systemdatenträger einhängen"
 
-#: ../gio/gio-tool-mount.c:264 ../gio/gio-tool-mount.c:296
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
 msgid "Anonymous access denied"
 msgstr "Der anonyme Zugriff wurde verwehrt"
 
-#: ../gio/gio-tool-mount.c:524
+#: gio/gio-tool-mount.c:522
 msgid "No drive for device file"
 msgstr "Kein Laufwerk für Gerätedatei"
 
-#: ../gio/gio-tool-mount.c:989
+#: gio/gio-tool-mount.c:975
 #, c-format
 msgid "Mounted %s at %s\n"
 msgstr "»%s« wurde unter »%s« eingehängt\n"
 
-#: ../gio/gio-tool-mount.c:1044
+#: gio/gio-tool-mount.c:1027
 msgid "No volume for device file"
 msgstr "Kein Datenträger für Gerätedatei"
 
-#: ../gio/gio-tool-mount.c:1239
+#: gio/gio-tool-mount.c:1216
 msgid "Mount or unmount the locations."
 msgstr "Die Orte ein- oder aushängen."
 
-#: ../gio/gio-tool-move.c:42
+#: gio/gio-tool-move.c:42
 msgid "Don’t use copy and delete fallback"
 msgstr "Ersatz für Kopieren und Löschen nicht verwenden"
 
-#: ../gio/gio-tool-move.c:99
+#: gio/gio-tool-move.c:99
 msgid "Move one or more files from SOURCE to DEST."
 msgstr "Eine oder mehrere Dateien von QUELLE nach ZIEL verschieben."
 
-#: ../gio/gio-tool-move.c:101
+#: gio/gio-tool-move.c:101
 msgid ""
 "gio move is similar to the traditional mv utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2155,12 +2114,12 @@
 "jedoch werden GIO-Orte statt lokaler Dateien verwendet; z.B. können\n"
 "Sie als Ort etwas wie »smb://server/ressource/Datei.txt« angeben."
 
-#: ../gio/gio-tool-move.c:142
+#: gio/gio-tool-move.c:143
 #, c-format
 msgid "Target %s is not a directory"
 msgstr "Das Ziel »%s« ist kein Ordner"
 
-#: ../gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:118
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2168,164 +2127,162 @@
 "Dateien mit der Standard-Anwendung öffnen,\n"
 "die als Programm für diesen Dateityp eingestellt ist."
 
-#: ../gio/gio-tool-remove.c:31 ../gio/gio-tool-trash.c:31
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
 msgid "Ignore nonexistent files, never prompt"
 msgstr "Nicht vorhandene Dateien ignorieren und niemals nachfragen"
 
-#: ../gio/gio-tool-remove.c:52
+#: gio/gio-tool-remove.c:52
 msgid "Delete the given files."
 msgstr "Die gegebenen Dateien löschen."
 
-#: ../gio/gio-tool-rename.c:45
+#: gio/gio-tool-rename.c:45
 msgid "NAME"
 msgstr "NAME"
 
-#: ../gio/gio-tool-rename.c:50
+#: gio/gio-tool-rename.c:50
 msgid "Rename a file."
 msgstr "Eine Datei umbenennen."
 
-#: ../gio/gio-tool-rename.c:70
+#: gio/gio-tool-rename.c:70
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:190
-#: ../gio/gio-tool-set.c:137
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
 msgid "Too many arguments"
 msgstr "Zu viele Argumente"
 
-#: ../gio/gio-tool-rename.c:95
+#: gio/gio-tool-rename.c:95
 #, c-format
 msgid "Rename successful. New uri: %s\n"
 msgstr "Umbenennung erfolgreich. Neue Adresse: %s\n"
 
-#: ../gio/gio-tool-save.c:50
+#: gio/gio-tool-save.c:50
 msgid "Only create if not existing"
 msgstr "Nur erstellen, wenn nicht bereits vorhanden"
 
-#: ../gio/gio-tool-save.c:51
+#: gio/gio-tool-save.c:51
 msgid "Append to end of file"
 msgstr "An Dateiende anhängen"
 
-#: ../gio/gio-tool-save.c:52
+#: gio/gio-tool-save.c:52
 msgid "When creating, restrict access to the current user"
 msgstr "Beim Erstellen Zugriff auf den aktuellen Benutzer beschränken"
 
-#: ../gio/gio-tool-save.c:53
+#: gio/gio-tool-save.c:53
 msgid "When replacing, replace as if the destination did not exist"
 msgstr "Beim Ersetzen davon ausgehen, dass das Ziel nicht existiert"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:55
+#: gio/gio-tool-save.c:55
 msgid "Print new etag at end"
 msgstr "Neuen Etag am Ende drucken"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "The etag of the file being overwritten"
 msgstr "Der Etag der Datei, die überschrieben wird"
 
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "ETAG"
 msgstr "ETAG"
 
-#: ../gio/gio-tool-save.c:113
+#: gio/gio-tool-save.c:113
 msgid "Error reading from standard input"
 msgstr "Fehler beim Lesen von der Standardeingabe"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:139
-#, c-format
+#: gio/gio-tool-save.c:139
 msgid "Etag not available\n"
 msgstr "Etag ist nicht verfügbar\n"
 
-#: ../gio/gio-tool-save.c:163
+#: gio/gio-tool-save.c:163
 msgid "Read from standard input and save to DEST."
 msgstr "Aus der Standardeingabe lesen und in ZIEL speichern."
 
-#: ../gio/gio-tool-save.c:183
+#: gio/gio-tool-save.c:183
 msgid "No destination given"
 msgstr "Kein Ziel vorgegeben"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "Type of the attribute"
 msgstr "Typ des Attributs"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "TYPE"
 msgstr "TYP"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUT"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "VALUE"
 msgstr "WERT"
 
-#: ../gio/gio-tool-set.c:93
+#: gio/gio-tool-set.c:93
 msgid "Set a file attribute of LOCATION."
 msgstr "Ein Dateiattribut von ORT festlegen."
 
-#: ../gio/gio-tool-set.c:113
+#: gio/gio-tool-set.c:113
 msgid "Location not specified"
 msgstr "Kein Ort angegeben"
 
-#: ../gio/gio-tool-set.c:120
+#: gio/gio-tool-set.c:120
 msgid "Attribute not specified"
 msgstr "Kein Attribut angegeben"
 
-#: ../gio/gio-tool-set.c:130
+#: gio/gio-tool-set.c:130
 msgid "Value not specified"
 msgstr "Kein Wert angegeben"
 
-#: ../gio/gio-tool-set.c:180
+#: gio/gio-tool-set.c:180
 #, c-format
 msgid "Invalid attribute type “%s”"
 msgstr "Ungültiger Attributtyp »%s«"
 
-#: ../gio/gio-tool-trash.c:32
+#: gio/gio-tool-trash.c:32
 msgid "Empty the trash"
 msgstr "Den Papierkorb leeren"
 
-#: ../gio/gio-tool-trash.c:86
+#: gio/gio-tool-trash.c:86
 msgid "Move files or directories to the trash."
 msgstr "Dateien oder Ordner in den Papierkorb verschieben."
 
-#: ../gio/gio-tool-tree.c:33
+#: gio/gio-tool-tree.c:33
 msgid "Follow symbolic links, mounts and shortcuts"
 msgstr ""
 "Symbolischen Verknüpfungen, Einhängepunkten und Schnellzugriffen folgen"
 
-#: ../gio/gio-tool-tree.c:244
+#: gio/gio-tool-tree.c:244
 msgid "List contents of directories in a tree-like format."
 msgstr "Den Inhalt von Ordnern in einer Baumstruktur auflisten."
 
-#: ../gio/glib-compile-resources.c:143 ../gio/glib-compile-schemas.c:1505
+#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Element <%s> ist innerhalb <%s> nicht erlaubt"
 
-#: ../gio/glib-compile-resources.c:147
+#: gio/glib-compile-resources.c:147
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Element <%s> ist in der obersten Ebene nicht erlaubt"
 
-#: ../gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:237
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Datei %s tritt in der Ressource mehrfach auf"
 
-#: ../gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:248
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "»%s« konnte in keinem Quellordner gefunden werden"
 
-#: ../gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:259
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "»%s« konnte im aktuellen Ordner nicht gefunden werden"
 
-#: ../gio/glib-compile-resources.c:293
+#: gio/glib-compile-resources.c:293
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Unbekannte Verarbeitungsoption »%s«"
@@ -2334,38 +2291,38 @@
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: ../gio/glib-compile-resources.c:313 ../gio/glib-compile-resources.c:370
-#: ../gio/glib-compile-resources.c:427
+#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
+#: gio/glib-compile-resources.c:427
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr ""
 "%s-Vorverarbeitung wurde angefordert, aber %s ist nicht gesetzt und %s ist "
 "nicht in PATH enthalten"
 
-#: ../gio/glib-compile-resources.c:460
+#: gio/glib-compile-resources.c:460
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Fehler beim Lesen der Datei »%s«: %s"
 
-#: ../gio/glib-compile-resources.c:480
+#: gio/glib-compile-resources.c:480
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Fehler beim Komprimieren der Datei %s"
 
-#: ../gio/glib-compile-resources.c:541
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "Text könnte nicht innerhalb von <%s> erscheinen"
 
-#: ../gio/glib-compile-resources.c:736 ../gio/glib-compile-schemas.c:2071
+#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2138
 msgid "Show program version and exit"
 msgstr "Programm-Version anzeigen und beenden"
 
-#: ../gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:737
 msgid "Name of the output file"
 msgstr "Name der Ausgabedatei"
 
-#: ../gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:738
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2373,51 +2330,51 @@
 "Die Ordner, aus denen in FILE referenzierte Dateien gelesen werden sollen "
 "(Vorgabe ist der aktuelle Ordner)"
 
-#: ../gio/glib-compile-resources.c:738 ../gio/glib-compile-schemas.c:2072
-#: ../gio/glib-compile-schemas.c:2100
+#: gio/glib-compile-resources.c:738 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-schemas.c:2168
 msgid "DIRECTORY"
 msgstr "ORDNER"
 
-#: ../gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:739
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Ausgabe in dem Format generieren, welches durch die Dateiendung der "
 "Zieldatei vorgegeben wird"
 
-#: ../gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:740
 msgid "Generate source header"
 msgstr "Quellcode-Header generieren"
 
-#: ../gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:741
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Quellcode zum Verlinken der Ressourcendatei in Ihren Code verwenden"
 
-#: ../gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:742
 msgid "Generate dependency list"
 msgstr "Abhängigkeitsliste generieren"
 
-#: ../gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:743
 msgid "Name of the dependency file to generate"
 msgstr "Name der zu erzeugenden Abhängigkeitsdatei"
 
-#: ../gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:744
 msgid "Include phony targets in the generated dependency file"
 msgstr "Phony-Ziele in der erzeugten Abhängigkeitsdatei einschließen"
 
-#: ../gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:745
 msgid "Don’t automatically create and register resource"
 msgstr "Die Ressource nicht automatisch anlegen und registrieren"
 
-#: ../gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:746
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Keine Funktionen exportieren; als G_GNUC_INTERNAL deklarieren"
 
-#: ../gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:747
 msgid "C identifier name used for the generated source code"
 msgstr "C-Bezeichnername für den generierten Quellcode"
 
-#: ../gio/glib-compile-resources.c:773
+#: gio/glib-compile-resources.c:773
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2428,127 +2385,126 @@
 "haben,\n"
 "die Ressourcendateien die Erweiterung .gresource."
 
-#: ../gio/glib-compile-resources.c:795
-#, c-format
+#: gio/glib-compile-resources.c:795
 msgid "You should give exactly one file name\n"
 msgstr "Sie sollten genau einen Dateinamen angeben\n"
 
-#: ../gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:95
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr "Nick muss aus mindestens zwei Zeichen bestehen"
 
-#: ../gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:106
 #, c-format
 msgid "Invalid numeric value"
 msgstr "Ungültiger numerischer Wert"
 
-#: ../gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:114
 #, c-format
 msgid "<value nick='%s'/> already specified"
 msgstr "<value nick='%s'/> bereits angegeben"
 
 # Hier scheinen im Original die spitzen Klammern zu fehlen
-#: ../gio/glib-compile-schemas.c:122
+#: gio/glib-compile-schemas.c:122
 #, c-format
 msgid "value='%s' already specified"
 msgstr "<value='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:136
+#: gio/glib-compile-schemas.c:136
 #, c-format
 msgid "flags values must have at most 1 bit set"
 msgstr "Für Flag-Werte darf höchstens 1 Bit gesetzt sein"
 
-#: ../gio/glib-compile-schemas.c:161
+#: gio/glib-compile-schemas.c:161
 #, c-format
 msgid "<%s> must contain at least one <value>"
 msgstr "<%s> muss mindestens ein <value> enthalten"
 
-#: ../gio/glib-compile-schemas.c:315
+#: gio/glib-compile-schemas.c:317
 #, c-format
 msgid "<%s> is not contained in the specified range"
 msgstr "<%s> ist im angegebenen Bereich nicht enthalten"
 
-#: ../gio/glib-compile-schemas.c:327
+#: gio/glib-compile-schemas.c:329
 #, c-format
 msgid "<%s> is not a valid member of the specified enumerated type"
 msgstr "<%s> ist kein gültiges Element des angegebenen Aufzählungstyps"
 
-#: ../gio/glib-compile-schemas.c:333
+#: gio/glib-compile-schemas.c:335
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
 msgstr "<%s> enthält eine Zeichenkette, die nicht den angegebenen Flag-Typ hat"
 
-#: ../gio/glib-compile-schemas.c:339
+#: gio/glib-compile-schemas.c:341
 #, c-format
 msgid "<%s> contains a string not in <choices>"
 msgstr "<%s> enthält eine Zeichenkette, die nicht in <choices> enthalten ist"
 
-#: ../gio/glib-compile-schemas.c:373
+#: gio/glib-compile-schemas.c:375
 msgid "<range/> already specified for this key"
 msgstr "<range/> wurde für diesen Schlüssel bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:391
+#: gio/glib-compile-schemas.c:393
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
 msgstr "<range> ist für Schlüssel des Typs »%s« nicht erlaubt"
 
-#: ../gio/glib-compile-schemas.c:408
+#: gio/glib-compile-schemas.c:410
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
 msgstr "<range> angebenenes Minimum ist größer als das Maximum"
 
-#: ../gio/glib-compile-schemas.c:433
+#: gio/glib-compile-schemas.c:435
 #, c-format
 msgid "unsupported l10n category: %s"
 msgstr "Nicht unterstützte l10n-Kategorie: %s"
 
-#: ../gio/glib-compile-schemas.c:441
+#: gio/glib-compile-schemas.c:443
 msgid "l10n requested, but no gettext domain given"
 msgstr "l10n wurde angefordert, aber keine Gettext-Domain angegeben"
 
-#: ../gio/glib-compile-schemas.c:453
+#: gio/glib-compile-schemas.c:455
 msgid "translation context given for value without l10n enabled"
 msgstr ""
 "Übersetzungskontext wurde für den Wert angegeben, ohne dass l10n aktiviert "
 "ist"
 
-#: ../gio/glib-compile-schemas.c:475
+#: gio/glib-compile-schemas.c:477
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
 msgstr "Der <default>-Wert des Typs »%s« konnte nicht ausgewertet werden: "
 
-#: ../gio/glib-compile-schemas.c:492
+#: gio/glib-compile-schemas.c:494
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
 "<choices> kann nicht für Schlüssel angegeben werden, die als Aufzählungstyp "
 "markiert sind"
 
-#: ../gio/glib-compile-schemas.c:501
+#: gio/glib-compile-schemas.c:503
 msgid "<choices> already specified for this key"
 msgstr "<choices> wurde für diesen Schlüssel bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:513
+#: gio/glib-compile-schemas.c:515
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
 msgstr "<choices> ist für Schlüssel des Typs »%s« nicht erlaubt"
 
-#: ../gio/glib-compile-schemas.c:529
+#: gio/glib-compile-schemas.c:531
 #, c-format
 msgid "<choice value='%s'/> already given"
 msgstr "<choice value='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:544
+#: gio/glib-compile-schemas.c:546
 #, c-format
 msgid "<choices> must contain at least one <choice>"
 msgstr "<choices> muss mindestens ein <choice> enthalten"
 
-#: ../gio/glib-compile-schemas.c:558
+#: gio/glib-compile-schemas.c:560
 msgid "<aliases> already specified for this key"
 msgstr "<aliases> wurde für diesen Schlüssel bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:562
+#: gio/glib-compile-schemas.c:564
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
@@ -2556,7 +2512,7 @@
 "<aliases> kann nur für Schlüssel mit Aufzählungs- oder Flag-Typ oder nach "
 "<choices> angebenden werden"
 
-#: ../gio/glib-compile-schemas.c:581
+#: gio/glib-compile-schemas.c:583
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
@@ -2565,43 +2521,43 @@
 "<alias value='%s'/> wurde angegeben, wobei »%s« bereits ein Element des "
 "Aufzählungstyps ist"
 
-#: ../gio/glib-compile-schemas.c:587
+#: gio/glib-compile-schemas.c:589
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
 msgstr ""
 "<alias value='%s'/> wurde angegeben, während <choice value='%s'/> bereits "
 "angegeben war"
 
-#: ../gio/glib-compile-schemas.c:595
+#: gio/glib-compile-schemas.c:597
 #, c-format
 msgid "<alias value='%s'/> already specified"
 msgstr "<alias value='%s'> bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:605
+#: gio/glib-compile-schemas.c:607
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
 msgstr "Alias-Ziel »%s« ist kein Aufzählungstyp"
 
-#: ../gio/glib-compile-schemas.c:606
+#: gio/glib-compile-schemas.c:608
 #, c-format
 msgid "alias target “%s” is not in <choices>"
 msgstr "Alias-Ziel »%s« ist nicht in <choices>"
 
-#: ../gio/glib-compile-schemas.c:621
+#: gio/glib-compile-schemas.c:623
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
 msgstr "<aliases> muss mindestens einen <alias> enthalten"
 
-#: ../gio/glib-compile-schemas.c:788
+#: gio/glib-compile-schemas.c:798
 msgid "Empty names are not permitted"
 msgstr "Leere Namen sind nicht zulässig"
 
-#: ../gio/glib-compile-schemas.c:798
+#: gio/glib-compile-schemas.c:808
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
 msgstr "Ungültiger Name »%s«: Namen müssen mit einem Kleinbuchstaben beginnen"
 
-#: ../gio/glib-compile-schemas.c:810
+#: gio/glib-compile-schemas.c:820
 #, c-format
 msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
@@ -2610,39 +2566,39 @@
 "Ungültiger Name »%s«: ungültiges Zeichen »%c«; nur Kleinbuchstaben, Ziffern "
 "und Bindestriche »-« sind zulässig"
 
-#: ../gio/glib-compile-schemas.c:819
+#: gio/glib-compile-schemas.c:829
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr ""
 "Ungültiger Name »%s«: Zwei aufeinander folgende Bindestriche »--« sind nicht "
 "zulässig."
 
-#: ../gio/glib-compile-schemas.c:828
+#: gio/glib-compile-schemas.c:838
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr ""
 "Ungültiger Name »%s«: das letzte Zeichen darf kein Bindestrich »-« sein."
 
-#: ../gio/glib-compile-schemas.c:836
+#: gio/glib-compile-schemas.c:846
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "Ungültiger Name »%s«: maximale Länge ist 1024"
 
-#: ../gio/glib-compile-schemas.c:908
+#: gio/glib-compile-schemas.c:918
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:934
+#: gio/glib-compile-schemas.c:944
 msgid "Cannot add keys to a “list-of” schema"
 msgstr "Schlüssel können nicht zum Schema »list-of« hinzugefügt werden"
 
-#: ../gio/glib-compile-schemas.c:945
+#: gio/glib-compile-schemas.c:955
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:963
+#: gio/glib-compile-schemas.c:973
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2651,7 +2607,7 @@
 "<key name='%s'> verdeckt <key name='%s'> in <schema id='%s'>; verwenden Sie "
 "<override>, um den Wert anzupassen"
 
-#: ../gio/glib-compile-schemas.c:974
+#: gio/glib-compile-schemas.c:984
 #, c-format
 msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
@@ -2660,57 +2616,57 @@
 "Genau eines von »type«, »enum« oder »flags« muss als Attribut für <key> "
 "angegeben werden"
 
-#: ../gio/glib-compile-schemas.c:993
+#: gio/glib-compile-schemas.c:1003
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> (noch) nicht definiert."
 
-#: ../gio/glib-compile-schemas.c:1008
+#: gio/glib-compile-schemas.c:1018
 #, c-format
 msgid "Invalid GVariant type string “%s”"
 msgstr "Ungültige GVariant-Typzeichenkette »%s«"
 
-#: ../gio/glib-compile-schemas.c:1038
+#: gio/glib-compile-schemas.c:1048
 msgid "<override> given but schema isn’t extending anything"
 msgstr "<override> angegeben, aber das Schema erweitert nichts"
 
-#: ../gio/glib-compile-schemas.c:1051
+#: gio/glib-compile-schemas.c:1061
 #, c-format
 msgid "No <key name='%s'> to override"
 msgstr "Kein <key name='%s'> zum Überschreiben"
 
-#: ../gio/glib-compile-schemas.c:1059
+#: gio/glib-compile-schemas.c:1069
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:1132
+#: gio/glib-compile-schemas.c:1142
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> wurde bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:1144
+#: gio/glib-compile-schemas.c:1154
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> erweitert noch nicht vorhandenes Schema »%s«"
 
-#: ../gio/glib-compile-schemas.c:1160
+#: gio/glib-compile-schemas.c:1170
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr ""
 "<schema id='%s'> ist eine Liste des noch nicht vorhandenen Schemas »%s«"
 
-#: ../gio/glib-compile-schemas.c:1168
+#: gio/glib-compile-schemas.c:1178
 #, c-format
 msgid "Cannot be a list of a schema with a path"
 msgstr "Darf keine Liste von Schemata mit einem Pfad sein"
 
-#: ../gio/glib-compile-schemas.c:1178
+#: gio/glib-compile-schemas.c:1188
 #, c-format
 msgid "Cannot extend a schema with a path"
 msgstr "Ein Schema darf nicht um einen Pfad erweitert werden"
 
-#: ../gio/glib-compile-schemas.c:1188
+#: gio/glib-compile-schemas.c:1198
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
@@ -2718,7 +2674,7 @@
 "<schema id='%s'> ist eine Liste, welche <schema id='%s'> erweitert, das "
 "keine Liste ist"
 
-#: ../gio/glib-compile-schemas.c:1198
+#: gio/glib-compile-schemas.c:1208
 #, c-format
 msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
@@ -2727,18 +2683,18 @@
 "<schema id='%s' list-of='%s'> erweitert <schema id='%s' list-of='%s'>, aber "
 "»%s« erweitert »%s« nicht"
 
-#: ../gio/glib-compile-schemas.c:1215
+#: gio/glib-compile-schemas.c:1225
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
 msgstr ""
 "Ein Pfad, falls angegeben, muss mit einem Schrägstrich beginnen und enden"
 
-#: ../gio/glib-compile-schemas.c:1222
+#: gio/glib-compile-schemas.c:1232
 #, c-format
 msgid "The path of a list must end with “:/”"
 msgstr "Der Pfad einer Liste muss mit »:/« enden"
 
-#: ../gio/glib-compile-schemas.c:1231
+#: gio/glib-compile-schemas.c:1241
 #, c-format
 msgid ""
 "Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
@@ -2747,72 +2703,85 @@
 "Warnung: Schema »%s« hat den Pfad »%s«. Mit »/apps/«, »/desktop/« oder »/"
 "system/« beginnende Pfade gelten jecoh als veraltet."
 
-#: ../gio/glib-compile-schemas.c:1261
+#: gio/glib-compile-schemas.c:1271
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> bereits angegeben"
 
-#: ../gio/glib-compile-schemas.c:1411 ../gio/glib-compile-schemas.c:1427
+#: gio/glib-compile-schemas.c:1421 gio/glib-compile-schemas.c:1437
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Nur ein <%s>-Element ist innerhalb von <%s> erlaubt"
 
-#: ../gio/glib-compile-schemas.c:1509
+#: gio/glib-compile-schemas.c:1519
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Element <%s> ist in der obersten Ebene nicht erlaubt"
 
-#: ../gio/glib-compile-schemas.c:1527
+#: gio/glib-compile-schemas.c:1537
 msgid "Element <default> is required in <key>"
 msgstr "Element <default> wird in <key> benötigt"
 
-#: ../gio/glib-compile-schemas.c:1617
+#: gio/glib-compile-schemas.c:1627
 #, c-format
 msgid "Text may not appear inside <%s>"
 msgstr "Text darf nicht innerhalb von <%s> erscheinen"
 
-#: ../gio/glib-compile-schemas.c:1685
+#: gio/glib-compile-schemas.c:1695
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
 msgstr "Warnung: nicht definierte Referenz zu <schema id='%s'/>"
 
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1824 ../gio/glib-compile-schemas.c:1898
-#: ../gio/glib-compile-schemas.c:1974
+#: gio/glib-compile-schemas.c:1834 gio/glib-compile-schemas.c:1910
+#: gio/glib-compile-schemas.c:2025
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr "--strict wurde angegeben; Abbruch.\n"
 
-#: ../gio/glib-compile-schemas.c:1834
+#: gio/glib-compile-schemas.c:1844
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr "Die gesamte Datei wurde ignoriert.\n"
 
-#: ../gio/glib-compile-schemas.c:1894
+#: gio/glib-compile-schemas.c:1906
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr "Diese Datei wird ignoriert.\n"
 
-#: ../gio/glib-compile-schemas.c:1934
+#: gio/glib-compile-schemas.c:1959
 #, c-format
 msgid "No such key “%s” in schema “%s” as specified in override file “%s”"
 msgstr ""
 "Kein Schlüssel »%s« in Schema »%s« wie angegeben in überschreibender Datei "
 "»%s«"
 
-#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
-#: ../gio/glib-compile-schemas.c:2026
+#: gio/glib-compile-schemas.c:1965 gio/glib-compile-schemas.c:1990
+#: gio/glib-compile-schemas.c:2050 gio/glib-compile-schemas.c:2079
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr "; Überschreiben dieses Schlüssels wird ignoriert.\n"
 
-#: ../gio/glib-compile-schemas.c:1944 ../gio/glib-compile-schemas.c:2002
-#: ../gio/glib-compile-schemas.c:2030
+#: gio/glib-compile-schemas.c:1969 gio/glib-compile-schemas.c:1994
+#: gio/glib-compile-schemas.c:2054 gio/glib-compile-schemas.c:2083
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr " und --strict wurde angegeben; Abbruch.\n"
 
-#: ../gio/glib-compile-schemas.c:1960
+# Das habe ich nicht wirklich verstanden, bitte sorgfältig gegenlesen.
+#: gio/glib-compile-schemas.c:1984
+#, c-format
+#| msgid ""
+#| "error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+#| "%s."
+msgid ""
+"cannot provide per-desktop overrides for localised key “%s” in schema "
+"“%s” (override file “%s”)"
+msgstr ""
+"Desktop-bezogenes Überschreiben kann für lokalisierten Schlüssel »%s« im "
+"Schema »%s« (überschreibende Datei »%s«) nicht bereitgestellt werden"
+
+#: gio/glib-compile-schemas.c:2011
 #, c-format
 msgid ""
 "error parsing key “%s” in schema “%s” as specified in override file “%s”: %s."
@@ -2820,12 +2789,12 @@
 "Fehler beim Verarbeiten des Schlüssels »%s« in Schema »%s« wie angegeben in "
 "überschreibender Datei »%s«: %s."
 
-#: ../gio/glib-compile-schemas.c:1970
+#: gio/glib-compile-schemas.c:2021
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr "Überschreiben dieses Schlüssels wird ignoriert.\n"
 
-#: ../gio/glib-compile-schemas.c:1988
+#: gio/glib-compile-schemas.c:2040
 #, c-format
 msgid ""
 "override for key “%s” in schema “%s” in override file “%s” is outside the "
@@ -2834,7 +2803,7 @@
 "Überschreiben für Schlüssel »%s« in Schema »%s« in überschreibender Datei "
 "»%s« liegt außerhalb des im Schema angegebenen Bereichs"
 
-#: ../gio/glib-compile-schemas.c:2016
+#: gio/glib-compile-schemas.c:2069
 #, c-format
 msgid ""
 "override for key “%s” in schema “%s” in override file “%s” is not in the "
@@ -2843,23 +2812,23 @@
 "Überschreiben für Schlüssel »%s« in Schema »%s« in überschreibender Datei "
 "»%s« befindet sich nicht in der Liste gültiger Auswahlmöglichkeiten"
 
-#: ../gio/glib-compile-schemas.c:2072
+#: gio/glib-compile-schemas.c:2139
 msgid "where to store the gschemas.compiled file"
 msgstr "Speicherort der Datei »gschemas.compiled«"
 
-#: ../gio/glib-compile-schemas.c:2073
+#: gio/glib-compile-schemas.c:2140
 msgid "Abort on any errors in schemas"
 msgstr "Abbruch wegen einiger Fehler in Schemata"
 
-#: ../gio/glib-compile-schemas.c:2074
+#: gio/glib-compile-schemas.c:2141
 msgid "Do not write the gschema.compiled file"
 msgstr "Die Datei »gschema.compiled« nicht schreiben"
 
-#: ../gio/glib-compile-schemas.c:2075
+#: gio/glib-compile-schemas.c:2142
 msgid "Do not enforce key name restrictions"
 msgstr "Keine Einschränkungen für Schlüsselnamen erzwingen"
 
-#: ../gio/glib-compile-schemas.c:2103
+#: gio/glib-compile-schemas.c:2171
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2869,32 +2838,32 @@
 "Schemadateien müssen die Erweiterung .gschema.xml haben,\n"
 "die Zwischenspeicherdatei die Erweiterung gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:2124
+#: gio/glib-compile-schemas.c:2192
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr "Sie sollten genau einen Ordnernamen angeben\n"
 
-#: ../gio/glib-compile-schemas.c:2166
+#: gio/glib-compile-schemas.c:2234
 #, c-format
 msgid "No schema files found: "
 msgstr "Keine Schema-Dateien gefunden: "
 
-#: ../gio/glib-compile-schemas.c:2169
+#: gio/glib-compile-schemas.c:2237
 #, c-format
 msgid "doing nothing.\n"
 msgstr "Nichts wird getan.\n"
 
-#: ../gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-schemas.c:2240
 #, c-format
 msgid "removed existing output file.\n"
 msgstr "Vorhandene Ausgabedatei wurde entfernt.\n"
 
-#: ../gio/glocalfile.c:544 ../gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:544 gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Ungültiger Dateiname %s"
 
-#: ../gio/glocalfile.c:1006
+#: gio/glocalfile.c:1006
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "Fehler beim Einlesen der Dateisystem-Information für %s: %s"
@@ -2903,328 +2872,328 @@
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: ../gio/glocalfile.c:1145
+#: gio/glocalfile.c:1145
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "Enthaltender Einhängepunkt für Datei %s wurde nicht gefunden"
 
-#: ../gio/glocalfile.c:1168
+#: gio/glocalfile.c:1168
 msgid "Can’t rename root directory"
 msgstr "Wurzelordner kann nicht umbenannt werden"
 
-#: ../gio/glocalfile.c:1186 ../gio/glocalfile.c:1209
+#: gio/glocalfile.c:1186 gio/glocalfile.c:1209
 #, c-format
 msgid "Error renaming file %s: %s"
 msgstr "Fehler beim Umbenennen der Datei %s: %s"
 
-#: ../gio/glocalfile.c:1193
+#: gio/glocalfile.c:1193
 msgid "Can’t rename file, filename already exists"
 msgstr "Datei kann nicht umbenannt werden, da der Dateiname bereits existiert"
 
-#: ../gio/glocalfile.c:1206 ../gio/glocalfile.c:2265 ../gio/glocalfile.c:2293
-#: ../gio/glocalfile.c:2450 ../gio/glocalfileoutputstream.c:551
+#: gio/glocalfile.c:1206 gio/glocalfile.c:2267 gio/glocalfile.c:2295
+#: gio/glocalfile.c:2452 gio/glocalfileoutputstream.c:551
 msgid "Invalid filename"
 msgstr "Ungültiger Dateiname"
 
-#: ../gio/glocalfile.c:1374 ../gio/glocalfile.c:1389
+#: gio/glocalfile.c:1374 gio/glocalfile.c:1389
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "Fehler beim Öffnen der Datei »%s«: %s"
 
-#: ../gio/glocalfile.c:1514
+#: gio/glocalfile.c:1514
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "Fehler beim Entfernen der Datei »%s«: %s"
 
-#: ../gio/glocalfile.c:1924
+#: gio/glocalfile.c:1925
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Fehler beim Verschieben der Datei %s in den Papierkorb: %s"
 
-#: ../gio/glocalfile.c:1947
+#: gio/glocalfile.c:1948
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Papierkorb-Ordner %s konnte nicht angelegt werden: %s"
 
-#: ../gio/glocalfile.c:1969
+#: gio/glocalfile.c:1970
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr ""
 "Oberster Ordner konnte zum Verschieben von %s in den Papierkorb nicht "
 "gefunden werden"
 
-#: ../gio/glocalfile.c:1978
+#: gio/glocalfile.c:1979
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr ""
 "Papierkorbaktionen zwischen systeminternen Einhängepunkten werden nicht "
 "unterstützt"
 
-#: ../gio/glocalfile.c:2062 ../gio/glocalfile.c:2082
+#: gio/glocalfile.c:2063 gio/glocalfile.c:2083
 #, c-format
 msgid "Unable to find or create trash directory for %s"
 msgstr "Papierkorb-Ordner konnte für %s nicht gefunden oder angelegt werden"
 
-#: ../gio/glocalfile.c:2117
+#: gio/glocalfile.c:2118
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Löschprotokoll-Datei für %s konnte nicht angelegt werden: %s"
 
-#: ../gio/glocalfile.c:2176
+#: gio/glocalfile.c:2178
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 "Datei %s kann nicht über Dateisystemgrenzen hinweg in den Papierkorb "
 "verschoben werden"
 
-#: ../gio/glocalfile.c:2180 ../gio/glocalfile.c:2236
+#: gio/glocalfile.c:2182 gio/glocalfile.c:2238
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Datei %s kann nicht in den Papierkorb verschoben werden: %s"
 
-#: ../gio/glocalfile.c:2242
+#: gio/glocalfile.c:2244
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Datei %s kann nicht in den Papierkorb verschoben werden"
 
-#: ../gio/glocalfile.c:2268
+#: gio/glocalfile.c:2270
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Fehler beim Erstellen des Ordners »%s«: %s"
 
-#: ../gio/glocalfile.c:2297
+#: gio/glocalfile.c:2299
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Das Dateisystem unterstützt keine symbolische Verknüpfungen"
 
-#: ../gio/glocalfile.c:2300
+#: gio/glocalfile.c:2302
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Fehler beim Erstellen der symbolischen Verknüpfung %s: %s"
 
-#: ../gio/glocalfile.c:2306 ../glib/gfileutils.c:2138
+#: gio/glocalfile.c:2308 glib/gfileutils.c:2138
 msgid "Symbolic links not supported"
 msgstr "Symbolische Verknüpfungen nicht unterstützt"
 
-#: ../gio/glocalfile.c:2361 ../gio/glocalfile.c:2396 ../gio/glocalfile.c:2453
+#: gio/glocalfile.c:2363 gio/glocalfile.c:2398 gio/glocalfile.c:2455
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Fehler beim Verschieben der Datei %s: %s"
 
-#: ../gio/glocalfile.c:2384
+#: gio/glocalfile.c:2386
 msgid "Can’t move directory over directory"
 msgstr "Ordner kann nicht über Ordner verschoben werden"
 
-#: ../gio/glocalfile.c:2410 ../gio/glocalfileoutputstream.c:935
-#: ../gio/glocalfileoutputstream.c:949 ../gio/glocalfileoutputstream.c:964
-#: ../gio/glocalfileoutputstream.c:981 ../gio/glocalfileoutputstream.c:995
+#: gio/glocalfile.c:2412 gio/glocalfileoutputstream.c:935
+#: gio/glocalfileoutputstream.c:949 gio/glocalfileoutputstream.c:964
+#: gio/glocalfileoutputstream.c:981 gio/glocalfileoutputstream.c:995
 msgid "Backup file creation failed"
 msgstr "Erstellen der Sicherungsdatei gescheitert"
 
-#: ../gio/glocalfile.c:2429
+#: gio/glocalfile.c:2431
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fehler beim Entfernen der Zieldatei: %s"
 
-#: ../gio/glocalfile.c:2443
+#: gio/glocalfile.c:2445
 msgid "Move between mounts not supported"
 msgstr "Verschieben zwischen Einhängepunkten nicht unterstützt"
 
-#: ../gio/glocalfile.c:2634
+#: gio/glocalfile.c:2636
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Konnte die Festplattenbelegung von %s nicht bestimmen: %s"
 
-#: ../gio/glocalfileinfo.c:745
+#: gio/glocalfileinfo.c:745
 msgid "Attribute value must be non-NULL"
 msgstr "Attributwert darf nicht NULL sein"
 
-#: ../gio/glocalfileinfo.c:752
+#: gio/glocalfileinfo.c:752
 msgid "Invalid attribute type (string expected)"
 msgstr "Ungültiger Attributtyp (»string« erwartet)"
 
-#: ../gio/glocalfileinfo.c:759
+#: gio/glocalfileinfo.c:759
 msgid "Invalid extended attribute name"
 msgstr "Ungültiger erweiterter Attributname"
 
-#: ../gio/glocalfileinfo.c:799
+#: gio/glocalfileinfo.c:799
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Fehler beim Setzen des erweiterten Attributs »%s«: %s"
 
-#: ../gio/glocalfileinfo.c:1619
+#: gio/glocalfileinfo.c:1629
 msgid " (invalid encoding)"
 msgstr " (ungültige Kodierung)"
 
-#: ../gio/glocalfileinfo.c:1783 ../gio/glocalfileoutputstream.c:813
+#: gio/glocalfileinfo.c:1793 gio/glocalfileoutputstream.c:813
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Fehler beim Holen der Informationen für Datei »%s«: %s"
 
-#: ../gio/glocalfileinfo.c:2045
+#: gio/glocalfileinfo.c:2057
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Fehler beim Holen der Informationen für Dateideskriptor: %s"
 
-#: ../gio/glocalfileinfo.c:2090
+#: gio/glocalfileinfo.c:2102
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Ungültiger Attributtyp (»uint32« erwartet)"
 
-#: ../gio/glocalfileinfo.c:2108
+#: gio/glocalfileinfo.c:2120
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Ungültiger Attributtyp (»uint64« erwartet)"
 
-#: ../gio/glocalfileinfo.c:2127 ../gio/glocalfileinfo.c:2146
+#: gio/glocalfileinfo.c:2139 gio/glocalfileinfo.c:2158
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Ungültiger Attributtyp (»byte string« erwartet)"
 
-#: ../gio/glocalfileinfo.c:2191
+#: gio/glocalfileinfo.c:2205
 msgid "Cannot set permissions on symlinks"
 msgstr ""
 "Zugriffsrechte für symbolische Verknüpfungen können nicht gesetzt werden"
 
-#: ../gio/glocalfileinfo.c:2207
+#: gio/glocalfileinfo.c:2221
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Fehler beim Setzen der Zugriffsrechte: %s"
 
-#: ../gio/glocalfileinfo.c:2258
+#: gio/glocalfileinfo.c:2272
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Fehler beim Setzen des Besitzers: %s"
 
-#: ../gio/glocalfileinfo.c:2281
+#: gio/glocalfileinfo.c:2295
 msgid "symlink must be non-NULL"
 msgstr "Symbolische Verknüpfung darf nicht NULL sein"
 
-#: ../gio/glocalfileinfo.c:2291 ../gio/glocalfileinfo.c:2310
-#: ../gio/glocalfileinfo.c:2321
+#: gio/glocalfileinfo.c:2305 gio/glocalfileinfo.c:2324
+#: gio/glocalfileinfo.c:2335
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Fehler beim Setzen der symbolischen Verknüpfung: %s"
 
-#: ../gio/glocalfileinfo.c:2300
+#: gio/glocalfileinfo.c:2314
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Fehler beim Setzen der symbolischen Verknüpfung: Datei ist keine symbolische "
 "Verknüpfung"
 
-#: ../gio/glocalfileinfo.c:2426
+#: gio/glocalfileinfo.c:2440
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Fehler beim Setzen der Zugriffsrechte oder der Zugriffszeit: %s"
 
-#: ../gio/glocalfileinfo.c:2449
+#: gio/glocalfileinfo.c:2463
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux-Kontext darf nicht NULL sein"
 
-#: ../gio/glocalfileinfo.c:2464
+#: gio/glocalfileinfo.c:2478
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Fehler beim Setzen des SELinux-Kontexts: %s"
 
-#: ../gio/glocalfileinfo.c:2471
+#: gio/glocalfileinfo.c:2485
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux ist auf diesem System nicht aktiviert"
 
-#: ../gio/glocalfileinfo.c:2563
+#: gio/glocalfileinfo.c:2577
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Setzen des Attributs %s nicht unterstützt"
 
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:696
+#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:696
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Fehler beim Lesen aus Datei: %s"
 
-#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
-#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:458 ../gio/glocalfileoutputstream.c:1013
+#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
+#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
+#: gio/glocalfileoutputstream.c:458 gio/glocalfileoutputstream.c:1013
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Fehler beim Suchen in Datei: %s"
 
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:248
-#: ../gio/glocalfileoutputstream.c:342
+#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:248
+#: gio/glocalfileoutputstream.c:342
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Fehler beim Schließen der Datei: %s"
 
-#: ../gio/glocalfilemonitor.c:852
+#: gio/glocalfilemonitor.c:854
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "Vorgegebener Überwachungstyp für lokale Dateien konnte nicht gefunden werden"
 
-#: ../gio/glocalfileoutputstream.c:196 ../gio/glocalfileoutputstream.c:228
-#: ../gio/glocalfileoutputstream.c:717
+#: gio/glocalfileoutputstream.c:196 gio/glocalfileoutputstream.c:228
+#: gio/glocalfileoutputstream.c:717
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Fehler beim Schreiben in Datei: %s"
 
-#: ../gio/glocalfileoutputstream.c:275
+#: gio/glocalfileoutputstream.c:275
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Fehler beim Entfernen der alten Sicherungsverknüpfung: %s"
 
-#: ../gio/glocalfileoutputstream.c:289 ../gio/glocalfileoutputstream.c:302
+#: gio/glocalfileoutputstream.c:289 gio/glocalfileoutputstream.c:302
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Fehler beim Erzeugen der Sicherungskopie: %s"
 
-#: ../gio/glocalfileoutputstream.c:320
+#: gio/glocalfileoutputstream.c:320
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Fehler beim Umbenennen der temporären Datei: %s"
 
-#: ../gio/glocalfileoutputstream.c:504 ../gio/glocalfileoutputstream.c:1064
+#: gio/glocalfileoutputstream.c:504 gio/glocalfileoutputstream.c:1064
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Fehler beim Abschneiden der Datei: %s"
 
-#: ../gio/glocalfileoutputstream.c:557 ../gio/glocalfileoutputstream.c:795
-#: ../gio/glocalfileoutputstream.c:1045 ../gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:795
+#: gio/glocalfileoutputstream.c:1045 gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Fehler beim Öffnen der Datei »%s«: %s"
 
-#: ../gio/glocalfileoutputstream.c:826
+#: gio/glocalfileoutputstream.c:826
 msgid "Target file is a directory"
 msgstr "Zieldatei ist ein Ordner"
 
-#: ../gio/glocalfileoutputstream.c:831
+#: gio/glocalfileoutputstream.c:831
 msgid "Target file is not a regular file"
 msgstr "Zieldatei ist keine reguläre Datei"
 
-#: ../gio/glocalfileoutputstream.c:843
+#: gio/glocalfileoutputstream.c:843
 msgid "The file was externally modified"
 msgstr "Die Datei wurde extern verändert"
 
-#: ../gio/glocalfileoutputstream.c:1029
+#: gio/glocalfileoutputstream.c:1029
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Fehler beim Entfernen der alten Datei: %s"
 
-#: ../gio/gmemoryinputstream.c:474 ../gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr "Ungültiger GSeekType übergeben"
 
-#: ../gio/gmemoryinputstream.c:484
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "Ungültige Suchanfrage"
 
-#: ../gio/gmemoryinputstream.c:508
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "GMemoryInputStream konnte nicht abgeschnitten werden"
 
-#: ../gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
 msgstr "Größe des Speicherausgabestroms ist nicht änderbar"
 
-#: ../gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
 msgstr "Größe des Speicherausgabestroms konnte nicht geändert werden"
 
-#: ../gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:673
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3232,32 +3201,32 @@
 "Für den Schreibvorgang erforderliche Speichermenge ist größer als der "
 "verfügbare Adressbereich"
 
-#: ../gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr "Angeforderte Suche vor dem Beginn des Datenstroms"
 
-#: ../gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr "Angeforderte Suche nach dem Ende des Datenstroms"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:399
+#: gio/gmount.c:399
 msgid "mount doesn’t implement “unmount”"
 msgstr "Einhängepunkt unterstützt Aushängen nicht"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:475
+#: gio/gmount.c:475
 msgid "mount doesn’t implement “eject”"
 msgstr "Einhängepunkt unterstützt Auswerfen nicht"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:553
+#: gio/gmount.c:553
 msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr ""
 "Einhängepunkt unterstützt nicht das Aushängen oder »unmount_with_operation«"
@@ -3265,108 +3234,107 @@
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:638
+#: gio/gmount.c:638
 msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr "Einhängepunkt unterstützt Auswerfen oder »eject_with_operation« nicht"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:726
+#: gio/gmount.c:726
 msgid "mount doesn’t implement “remount”"
 msgstr "Einhängepunkt unterstützt erneutes Einhängen nicht"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:808
+#: gio/gmount.c:808
 msgid "mount doesn’t implement content type guessing"
 msgstr "Einhängepunkt unterstützt Erraten des Inhaltstyps nicht"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:895
+#: gio/gmount.c:895
 msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "Einhängepunkt unterstützt synchrones Erraten des Inhaltstyps nicht"
 
-#: ../gio/gnetworkaddress.c:378
+#: gio/gnetworkaddress.c:378
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Rechnername »%s« enthält »[«, aber nicht »]«"
 
-#: ../gio/gnetworkmonitorbase.c:211 ../gio/gnetworkmonitorbase.c:315
+#: gio/gnetworkmonitorbase.c:211 gio/gnetworkmonitorbase.c:315
 msgid "Network unreachable"
 msgstr "Das Netzwerk ist nicht erreichbar"
 
-#: ../gio/gnetworkmonitorbase.c:249 ../gio/gnetworkmonitorbase.c:279
+#: gio/gnetworkmonitorbase.c:249 gio/gnetworkmonitorbase.c:279
 msgid "Host unreachable"
 msgstr "Rechner ist nicht erreichbar"
 
-#: ../gio/gnetworkmonitornetlink.c:97 ../gio/gnetworkmonitornetlink.c:109
-#: ../gio/gnetworkmonitornetlink.c:128
+#: gio/gnetworkmonitornetlink.c:97 gio/gnetworkmonitornetlink.c:109
+#: gio/gnetworkmonitornetlink.c:128
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "Netzwerkmonitor konnte nicht erstellt werden: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:118
+#: gio/gnetworkmonitornetlink.c:118
 msgid "Could not create network monitor: "
 msgstr "Netzwerkmonitor konnte nicht erstellt werden: "
 
-#: ../gio/gnetworkmonitornetlink.c:176
+#: gio/gnetworkmonitornetlink.c:176
 msgid "Could not get network status: "
 msgstr "Netzwerkstatus konnte nicht ermittelt werden: "
 
-#: ../gio/gnetworkmonitornm.c:322
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Die Version von NetworkManager ist zu alt"
 
-#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560
+#: gio/goutputstream.c:212 gio/goutputstream.c:560
 msgid "Output stream doesn’t implement write"
 msgstr "Ausgabedatenstrom unterstützt kein Schreiben"
 
-#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1224
+#: gio/goutputstream.c:521 gio/goutputstream.c:1224
 msgid "Source stream is already closed"
 msgstr "Quelldatenstrom ist bereits geschlossen"
 
-#: ../gio/gresolver.c:342 ../gio/gthreadedresolver.c:116
-#: ../gio/gthreadedresolver.c:126
+#: gio/gresolver.c:342 gio/gthreadedresolver.c:116 gio/gthreadedresolver.c:126
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fehler beim Auflösen von »%s«: %s"
 
-#: ../gio/gresolver.c:729 ../gio/gresolver.c:781
+#: gio/gresolver.c:729 gio/gresolver.c:781
 msgid "Invalid domain"
 msgstr "Ungültige Domain"
 
-#: ../gio/gresource.c:621 ../gio/gresource.c:880 ../gio/gresource.c:919
-#: ../gio/gresource.c:1043 ../gio/gresource.c:1115 ../gio/gresource.c:1188
-#: ../gio/gresource.c:1258 ../gio/gresourcefile.c:476
-#: ../gio/gresourcefile.c:599 ../gio/gresourcefile.c:736
+#: gio/gresource.c:622 gio/gresource.c:881 gio/gresource.c:920
+#: gio/gresource.c:1044 gio/gresource.c:1116 gio/gresource.c:1189
+#: gio/gresource.c:1259 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
 #, c-format
 msgid "The resource at “%s” does not exist"
 msgstr "Die Ressource auf »%s« existiert nicht"
 
-#: ../gio/gresource.c:786
+#: gio/gresource.c:787
 #, c-format
 msgid "The resource at “%s” failed to decompress"
 msgstr "Die Ressource auf »%s« konnte nicht entpackt werden"
 
-#: ../gio/gresourcefile.c:732
+#: gio/gresourcefile.c:732
 #, c-format
 msgid "The resource at “%s” is not a directory"
 msgstr "Die Ressource auf »%s« ist ein Ordner"
 
-#: ../gio/gresourcefile.c:940
+#: gio/gresourcefile.c:940
 msgid "Input stream doesn’t implement seek"
 msgstr "Eingabedatenstrom unterstützt kein Suchen"
 
-#: ../gio/gresource-tool.c:494
+#: gio/gresource-tool.c:501
 msgid "List sections containing resources in an elf FILE"
 msgstr "Sektionen einer ELF-Datei auflisten, welche Ressourcen enthält"
 
-#: ../gio/gresource-tool.c:500
+#: gio/gresource-tool.c:507
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3376,16 +3344,15 @@
 "Falls SEKTION angegeben ist, nur die Ressourcen dieser Sektion auflisten\n"
 "Falls PFAD angegeben ist, nur die betreffenden Ressourcen auflisten"
 
-#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520
 msgid "FILE [PATH]"
 msgstr "DATEI [PFAD]"
 
-#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514
-#: ../gio/gresource-tool.c:521
+#: gio/gresource-tool.c:511 gio/gresource-tool.c:521 gio/gresource-tool.c:528
 msgid "SECTION"
 msgstr "SEKTION"
 
-#: ../gio/gresource-tool.c:509
+#: gio/gresource-tool.c:516
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3397,15 +3364,15 @@
 "Falls PFAD angegeben ist, nur die betreffenden Ressourcen auflisten\n"
 "Details enthalten Sektion, Größe und Kompression"
 
-#: ../gio/gresource-tool.c:519
+#: gio/gresource-tool.c:526
 msgid "Extract a resource file to stdout"
 msgstr "Eine Ressourcendatei in stdout auspacken"
 
-#: ../gio/gresource-tool.c:520
+#: gio/gresource-tool.c:527
 msgid "FILE PATH"
 msgstr "DATEIPFAD"
 
-#: ../gio/gresource-tool.c:534
+#: gio/gresource-tool.c:541
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3433,7 +3400,7 @@
 "Rufen Sie »gresource help BEFEHL« auf, um detaillierte Hilfe zu erhalten.\n"
 "\n"
 
-#: ../gio/gresource-tool.c:548
+#: gio/gresource-tool.c:555
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3448,20 +3415,20 @@
 "%s\n"
 "\n"
 
-#: ../gio/gresource-tool.c:555
+#: gio/gresource-tool.c:562
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKTION   Ein (optionaler) Name einer ELF-Sektion\n"
 
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:703
+#: gio/gresource-tool.c:566 gio/gsettings-tool.c:703
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  BEFEHL    Der (optionale) zu erklärende Befehl\n"
 
-#: ../gio/gresource-tool.c:565
+#: gio/gresource-tool.c:572
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 "  DATEI     Eine ELF-Datei (ein Binary oder eine gemeinsame Bibliothek)\n"
 
-#: ../gio/gresource-tool.c:568
+#: gio/gresource-tool.c:575
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3469,93 +3436,85 @@
 "  DATEI     Eine ELF-Datei (ein Binary oder eine gemeinsame Bibliothek)\n"
 "            oder eine kompilierte Ressourcendatei\n"
 
-#: ../gio/gresource-tool.c:572
+#: gio/gresource-tool.c:579
 msgid "[PATH]"
 msgstr "[PFAD]"
 
-#: ../gio/gresource-tool.c:574
+#: gio/gresource-tool.c:581
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 "  PFAD      Ein (optionaler) Ressourcenpfad (kann unvollständig sein)\n"
 
-#: ../gio/gresource-tool.c:575
+#: gio/gresource-tool.c:582
 msgid "PATH"
 msgstr "PFAD"
 
-#: ../gio/gresource-tool.c:577
+#: gio/gresource-tool.c:584
 msgid "  PATH      A resource path\n"
 msgstr "  PFAD      Ein Ressourcenpfad\n"
 
-#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:908
+#: gio/gsettings-tool.c:51 gio/gsettings-tool.c:72 gio/gsettings-tool.c:908
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Kein derartiges Schema »%s«\n"
 
-#: ../gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:57
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr ""
 "Schema »%s« ist nicht verschiebbar (Pfad darf nicht angegeben werden)\n"
 
-#: ../gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:78
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Schema »%s« ist verschiebbar (Pfad muss angegeben werden)\n"
 
-#: ../gio/gsettings-tool.c:92
-#, c-format
+#: gio/gsettings-tool.c:92
 msgid "Empty path given.\n"
 msgstr "Leerer Pfad angegeben.\n"
 
-#: ../gio/gsettings-tool.c:98
-#, c-format
+#: gio/gsettings-tool.c:98
 msgid "Path must begin with a slash (/)\n"
 msgstr "Pfad muss mit einem Schrägstrich beginnen (/)\n"
 
-#: ../gio/gsettings-tool.c:104
-#, c-format
+#: gio/gsettings-tool.c:104
 msgid "Path must end with a slash (/)\n"
 msgstr "Pfad muss mit einem Schrägstrich enden (/)\n"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
+#: gio/gsettings-tool.c:110
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 "Pfad darf nicht zwei aufeinander folgende Schrägstriche enthalten (//)\n"
 
-#: ../gio/gsettings-tool.c:538
-#, c-format
+#: gio/gsettings-tool.c:538
 msgid "The provided value is outside of the valid range\n"
 msgstr "Der angegebene Wert liegt außerhalb des gültigen Bereichs\n"
 
-#: ../gio/gsettings-tool.c:545
-#, c-format
+#: gio/gsettings-tool.c:545
 msgid "The key is not writable\n"
 msgstr "Der Schlüssel ist nicht schreibbar\n"
 
-#: ../gio/gsettings-tool.c:581
+#: gio/gsettings-tool.c:581
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Installierte (nicht verschiebbare) Schemata auflisten"
 
-#: ../gio/gsettings-tool.c:587
+#: gio/gsettings-tool.c:587
 msgid "List the installed relocatable schemas"
 msgstr "Installierte (verschiebbare) Schemata auflisten"
 
-#: ../gio/gsettings-tool.c:593
+#: gio/gsettings-tool.c:593
 msgid "List the keys in SCHEMA"
 msgstr "Schlüssel in SCHEMA auflisten"
 
-#: ../gio/gsettings-tool.c:594 ../gio/gsettings-tool.c:600
-#: ../gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:594 gio/gsettings-tool.c:600 gio/gsettings-tool.c:643
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PFAD]"
 
-#: ../gio/gsettings-tool.c:599
+#: gio/gsettings-tool.c:599
 msgid "List the children of SCHEMA"
 msgstr "Unterelemente von SCHEMA auflisten"
 
-#: ../gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:605
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3563,49 +3522,48 @@
 "Schlüssel und Werte rekursiv auflisten\n"
 "Falls kein Schema angegeben, alle Schlüssel auflisten\n"
 
-#: ../gio/gsettings-tool.c:607
+#: gio/gsettings-tool.c:607
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PFAD]]"
 
-#: ../gio/gsettings-tool.c:612
+#: gio/gsettings-tool.c:612
 msgid "Get the value of KEY"
 msgstr "Den Wert von SCHLÜSSEL ermitteln"
 
-#: ../gio/gsettings-tool.c:613 ../gio/gsettings-tool.c:619
-#: ../gio/gsettings-tool.c:625 ../gio/gsettings-tool.c:637
-#: ../gio/gsettings-tool.c:649
+#: gio/gsettings-tool.c:613 gio/gsettings-tool.c:619 gio/gsettings-tool.c:625
+#: gio/gsettings-tool.c:637 gio/gsettings-tool.c:649
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PFAD] SCHLÜSSEL"
 
-#: ../gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:618
 msgid "Query the range of valid values for KEY"
 msgstr "Den Bereich gültiger Werte für SCHLÜSSEL abfragen"
 
-#: ../gio/gsettings-tool.c:624
+#: gio/gsettings-tool.c:624
 msgid "Query the description for KEY"
 msgstr "Die Beschreibung für SCHLÜSSEL abfragen"
 
-#: ../gio/gsettings-tool.c:630
+#: gio/gsettings-tool.c:630
 msgid "Set the value of KEY to VALUE"
 msgstr "Den Wert von SCHLÜSSEL auf WERT setzen"
 
-#: ../gio/gsettings-tool.c:631
+#: gio/gsettings-tool.c:631
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PFAD] SCHLÜSSEL WERT"
 
-#: ../gio/gsettings-tool.c:636
+#: gio/gsettings-tool.c:636
 msgid "Reset KEY to its default value"
 msgstr "SCHLÜSSEL auf Vorgabewert setzen"
 
-#: ../gio/gsettings-tool.c:642
+#: gio/gsettings-tool.c:642
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Alle Schlüssel in SCHEMA auf deren Vorgaben zurücksetzen"
 
-#: ../gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:648
 msgid "Check if KEY is writable"
 msgstr "Prüfen, ob SCHLÜSSEL schreibgeschützt ist"
 
-#: ../gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:654
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3616,11 +3574,11 @@
 "in SCHEMA überwacht.\n"
 "Drücken Sie ^C, um die Überwachung zu beenden.\n"
 
-#: ../gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:657
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PFAD] [SCHLÜSSEL]"
 
-#: ../gio/gsettings-tool.c:669
+#: gio/gsettings-tool.c:669
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3670,7 +3628,7 @@
 "erhalten.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:693
+#: gio/gsettings-tool.c:693
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3685,11 +3643,11 @@
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:699
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR Ein Ordner zum Suchen nach zusätzlichen Schemas\n"
 
-#: ../gio/gsettings-tool.c:707
+#: gio/gsettings-tool.c:707
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3697,281 +3655,275 @@
 "  SCHEMA      Die Kennung des Schemas\n"
 "  SCHLÜSSEL   Der Name des Schlüssels\n"
 
-#: ../gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:712
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  SCHLÜSSEL Der (optionale) Schlüssel innerhalb des Schemas\n"
 
-#: ../gio/gsettings-tool.c:716
+#: gio/gsettings-tool.c:716
 msgid "  KEY       The key within the schema\n"
 msgstr "  SCHLÜSSEL Der Schlüssel innerhalb des Schemas\n"
 
-#: ../gio/gsettings-tool.c:720
+#: gio/gsettings-tool.c:720
 msgid "  VALUE     The value to set\n"
 msgstr "  WERT      Der zu setzende Wert\n"
 
-#: ../gio/gsettings-tool.c:775
+#: gio/gsettings-tool.c:775
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Schemata von »%s« konnten nicht geladen werden: %s\n"
 
-#: ../gio/gsettings-tool.c:787
-#, c-format
+#: gio/gsettings-tool.c:787
 msgid "No schemas installed\n"
 msgstr "Keine Schemata installiert\n"
 
-#: ../gio/gsettings-tool.c:866
-#, c-format
+#: gio/gsettings-tool.c:866
 msgid "Empty schema name given\n"
 msgstr "Leerer Schema-Name wurde angegeben\n"
 
-#: ../gio/gsettings-tool.c:921
+#: gio/gsettings-tool.c:921
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Kein derartiger Schlüssel »%s«\n"
 
-#: ../gio/gsocket.c:384
+#: gio/gsocket.c:384
 msgid "Invalid socket, not initialized"
 msgstr "Ungültiger Socket, wurde nicht initialisiert"
 
-#: ../gio/gsocket.c:391
+#: gio/gsocket.c:391
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ungültiger Socket, Initialisierung schlug fehl wegen: %s"
 
-#: ../gio/gsocket.c:399
+#: gio/gsocket.c:399
 msgid "Socket is already closed"
 msgstr "Der Socket ist bereits geschlossen"
 
-#: ../gio/gsocket.c:414 ../gio/gsocket.c:3034 ../gio/gsocket.c:4244
-#: ../gio/gsocket.c:4302
+#: gio/gsocket.c:414 gio/gsocket.c:3034 gio/gsocket.c:4244 gio/gsocket.c:4302
 msgid "Socket I/O timed out"
 msgstr "Zeitüberschreitung bei Ein-/Ausgabeoperation des Sockets"
 
-#: ../gio/gsocket.c:549
+#: gio/gsocket.c:549
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket wird erstellt von Dateideskriptor: %s"
 
-#: ../gio/gsocket.c:578 ../gio/gsocket.c:632 ../gio/gsocket.c:639
+#: gio/gsocket.c:578 gio/gsocket.c:632 gio/gsocket.c:639
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Socket kann nicht angelegt werden: %s"
 
-#: ../gio/gsocket.c:632
+#: gio/gsocket.c:632
 msgid "Unknown family was specified"
 msgstr "Eine unbekannte Familie wurde angegeben"
 
-#: ../gio/gsocket.c:639
+#: gio/gsocket.c:639
 msgid "Unknown protocol was specified"
 msgstr "Ein unbekanntes Protokoll wurde angegeben"
 
-#: ../gio/gsocket.c:1130
+#: gio/gsocket.c:1130
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Nicht-Datagramm-Socket "
 "ausgeführt werden."
 
-#: ../gio/gsocket.c:1147
+#: gio/gsocket.c:1147
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Socket mit gesetzter "
 "Zeitüberschreitung ausgeführt werden."
 
-#: ../gio/gsocket.c:1954
+#: gio/gsocket.c:1954
 #, c-format
 msgid "could not get local address: %s"
 msgstr "Lokale Adresse konnte nicht gelesen werden: %s"
 
-#: ../gio/gsocket.c:2000
+#: gio/gsocket.c:2000
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "Entfernte Adresse konnte nicht gelesen werden: %s"
 
-#: ../gio/gsocket.c:2066
+#: gio/gsocket.c:2066
 #, c-format
 msgid "could not listen: %s"
 msgstr "Es konnte nicht gelauscht werden: %s"
 
-#: ../gio/gsocket.c:2168
+#: gio/gsocket.c:2168
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Fehler beim Binden an Adresse: %s"
 
-#: ../gio/gsocket.c:2226 ../gio/gsocket.c:2263 ../gio/gsocket.c:2373
-#: ../gio/gsocket.c:2398 ../gio/gsocket.c:2471 ../gio/gsocket.c:2529
-#: ../gio/gsocket.c:2547
+#: gio/gsocket.c:2226 gio/gsocket.c:2263 gio/gsocket.c:2373 gio/gsocket.c:2398
+#: gio/gsocket.c:2471 gio/gsocket.c:2529 gio/gsocket.c:2547
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fehler beim Beitreten zur Multicast-Gruppe: %s"
 
-#: ../gio/gsocket.c:2227 ../gio/gsocket.c:2264 ../gio/gsocket.c:2374
-#: ../gio/gsocket.c:2399 ../gio/gsocket.c:2472 ../gio/gsocket.c:2530
-#: ../gio/gsocket.c:2548
+#: gio/gsocket.c:2227 gio/gsocket.c:2264 gio/gsocket.c:2374 gio/gsocket.c:2399
+#: gio/gsocket.c:2472 gio/gsocket.c:2530 gio/gsocket.c:2548
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fehler beim Verlassen der Multicast-Gruppe: %s"
 
-#: ../gio/gsocket.c:2228
+#: gio/gsocket.c:2228
 msgid "No support for source-specific multicast"
 msgstr "Quellen-spezifisches Multicast wird nicht unterstützt"
 
-#: ../gio/gsocket.c:2375
+#: gio/gsocket.c:2375
 msgid "Unsupported socket family"
 msgstr "Nicht unterstützte Socket-Familie"
 
-#: ../gio/gsocket.c:2400
+#: gio/gsocket.c:2400
 msgid "source-specific not an IPv4 address"
 msgstr "Quellen-spezifisch ist keine IPv4-Adresse"
 
-#: ../gio/gsocket.c:2418 ../gio/gsocket.c:2447 ../gio/gsocket.c:2497
+#: gio/gsocket.c:2418 gio/gsocket.c:2447 gio/gsocket.c:2497
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Schnittstelle nicht gefunden: %s"
 
-#: ../gio/gsocket.c:2434
+#: gio/gsocket.c:2434
 #, c-format
 msgid "Interface name too long"
 msgstr "Schnittstellenname ist zu lang"
 
-#: ../gio/gsocket.c:2473
+#: gio/gsocket.c:2473
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Quellen-spezifisches IPv4-Multicast wird nicht unterstützt"
 
-#: ../gio/gsocket.c:2531
+#: gio/gsocket.c:2531
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Quellen-spezifisches IPv6-Multicast wird nicht unterstützt"
 
-#: ../gio/gsocket.c:2740
+#: gio/gsocket.c:2740
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fehler bei Annahme der Verbindung: %s"
 
-#: ../gio/gsocket.c:2864
+#: gio/gsocket.c:2864
 msgid "Connection in progress"
 msgstr "Verbindungsvorgang läuft"
 
-#: ../gio/gsocket.c:2913
+#: gio/gsocket.c:2913
 msgid "Unable to get pending error: "
 msgstr "Ausstehender Fehler konnte nicht erhalten werden: "
 
-#: ../gio/gsocket.c:3097
+#: gio/gsocket.c:3097
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fehler beim Erhalt von Daten: %s"
 
-#: ../gio/gsocket.c:3292
+#: gio/gsocket.c:3292
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fehler beim Senden von Daten: %s"
 
-#: ../gio/gsocket.c:3479
+#: gio/gsocket.c:3479
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Socket kann nicht heruntergefahren werden: %s"
 
-#: ../gio/gsocket.c:3560
+#: gio/gsocket.c:3560
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fehler beim Schließen des Sockets: %s"
 
-#: ../gio/gsocket.c:4237
+#: gio/gsocket.c:4237
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Es wird auf eine Socket-Bedingung gewartet: %s"
 
-#: ../gio/gsocket.c:4711 ../gio/gsocket.c:4791 ../gio/gsocket.c:4969
+#: gio/gsocket.c:4711 gio/gsocket.c:4791 gio/gsocket.c:4969
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fehler beim Senden der Nachricht: %s"
 
-#: ../gio/gsocket.c:4735
+#: gio/gsocket.c:4735
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage wird unter Windows nicht unterstützt"
 
-#: ../gio/gsocket.c:5188 ../gio/gsocket.c:5261 ../gio/gsocket.c:5487
+#: gio/gsocket.c:5188 gio/gsocket.c:5261 gio/gsocket.c:5487
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fehler beim Empfang der Nachricht: %s"
 
-#: ../gio/gsocket.c:5759
+#: gio/gsocket.c:5759
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Socket-Berechtigungen konnten nicht gelesen werden: %s"
 
-#: ../gio/gsocket.c:5768
+#: gio/gsocket.c:5768
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials ist für dieses Betriebssystem nicht implementiert"
 
-#: ../gio/gsocketclient.c:176
+#: gio/gsocketclient.c:176
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Verbindung zum Proxy-Server %s konnte nicht aufgebaut werden: "
 
-#: ../gio/gsocketclient.c:190
+#: gio/gsocketclient.c:190
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Verbindung mit %s ist gescheitert: "
 
-#: ../gio/gsocketclient.c:192
+#: gio/gsocketclient.c:192
 msgid "Could not connect: "
 msgstr "Verbindung ist gescheitert: "
 
-#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599
+#: gio/gsocketclient.c:1027 gio/gsocketclient.c:1599
 msgid "Unknown error on connect"
 msgstr "Unbekannter Fehler bei Verbindungsversuch"
 
-#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535
+#: gio/gsocketclient.c:1081 gio/gsocketclient.c:1535
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Nicht-TCP-Verbindung über Proxy wird nicht unterstützt."
 
-#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561
+#: gio/gsocketclient.c:1110 gio/gsocketclient.c:1561
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy-Protokoll »%s« wird nicht unterstützt."
 
-#: ../gio/gsocketlistener.c:225
+#: gio/gsocketlistener.c:225
 msgid "Listener is already closed"
 msgstr "Lauscher ist bereits geschlossen"
 
-#: ../gio/gsocketlistener.c:271
+#: gio/gsocketlistener.c:271
 msgid "Added socket is closed"
 msgstr "Der hinzugefügte Socket ist geschlossen"
 
-#: ../gio/gsocks4aproxy.c:118
+#: gio/gsocks4aproxy.c:118
 #, c-format
 msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "SOCKSv4 unterstützt die IPv6-Adresse »%s« nicht"
 
-#: ../gio/gsocks4aproxy.c:136
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
 msgstr "Benutzername ist zu lang für das SOCKSv4-Protokoll"
 
-#: ../gio/gsocks4aproxy.c:153
+#: gio/gsocks4aproxy.c:153
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv4 protocol"
 msgstr "Rechnername »%s« ist zu lang für das SOCKSv4-Protokoll"
 
-#: ../gio/gsocks4aproxy.c:179
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
 msgstr "Der Server ist kein SOCKSv4-Proxy-Server."
 
-#: ../gio/gsocks4aproxy.c:186
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Verbindung durch SOCKSv4-Server wurde abgewiesen"
 
-#: ../gio/gsocks5proxy.c:153 ../gio/gsocks5proxy.c:324
-#: ../gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:324 gio/gsocks5proxy.c:334
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Der Server ist kein SOCKSv5-Proxy-Server."
 
-#: ../gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Der SOCKSv5-Proxy erfordert Legitimierung."
 
-#: ../gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:177
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
@@ -3979,109 +3931,109 @@
 "Der SOCKSv5 erfordert eine Legitimierungsmethode, die durch GLib nicht "
 "unterstützt wird."
 
-#: ../gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:206
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "Benutzername oder Passwort ist zu lang für das SOCKSv5-Protokoll."
 
-#: ../gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:236
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 "SOCKSv5-Legitimierung scheiterte wegen falschen Benutzernamens oder "
 "Passworts."
 
-#: ../gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:286
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "Rechnername »%s« ist zu lang für das SOCKSv5-Protokoll"
 
-#: ../gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "Der SOCKSv5-Proxy-Server verwendet einen unbekannten Adresstyp."
 
-#: ../gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:355
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "Interner Fehler des SOCKSv5-Proxy-Servers."
 
-#: ../gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:361
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "SOCKSv5-Verbindung ist aufgrund des Regelwerks nicht erlaubt."
 
-#: ../gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:368
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Rechner ist über den SOCKSv5-Server nicht erreichbar."
 
-#: ../gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:374
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "Das Netzwerk ist durch den SOCKSv5-Proxy nicht erreichbar."
 
-#: ../gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:380
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Verbindung wurde durch SOCKSv5-Proxy abgewiesen."
 
-#: ../gio/gsocks5proxy.c:386
+#: gio/gsocks5proxy.c:386
 msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5-Proxy unterstützt den Befehl »connect« nicht."
 
-#: ../gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:392
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "SOCKSv5-Proxy unterstützt den angegebenen Adresstyp nicht."
 
-#: ../gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:398
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unbekannter Fehler im SOCKSv5-Proxy."
 
-#: ../gio/gthemedicon.c:518
+#: gio/gthemedicon.c:518
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "Version %d der GThemedIcon-Kodierung kann nicht verarbeitet werden"
 
-#: ../gio/gthreadedresolver.c:118
+#: gio/gthreadedresolver.c:118
 msgid "No valid addresses were found"
 msgstr "Es wurden keine gültigen Adressen gefunden"
 
-#: ../gio/gthreadedresolver.c:213
+#: gio/gthreadedresolver.c:213
 #, c-format
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Fehler beim Rückwärtsauflösen von »%s«: %s"
 
-#: ../gio/gthreadedresolver.c:549 ../gio/gthreadedresolver.c:628
-#: ../gio/gthreadedresolver.c:726 ../gio/gthreadedresolver.c:776
+#: gio/gthreadedresolver.c:549 gio/gthreadedresolver.c:628
+#: gio/gthreadedresolver.c:726 gio/gthreadedresolver.c:776
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Kein DNS-Datensatz des angeforderten Typs für »%s«"
 
-#: ../gio/gthreadedresolver.c:554 ../gio/gthreadedresolver.c:731
+#: gio/gthreadedresolver.c:554 gio/gthreadedresolver.c:731
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "»%s« kann vorübergehend nicht aufgelöst werden"
 
-#: ../gio/gthreadedresolver.c:559 ../gio/gthreadedresolver.c:736
-#: ../gio/gthreadedresolver.c:844
+#: gio/gthreadedresolver.c:559 gio/gthreadedresolver.c:736
+#: gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Fehler beim Auflösen von »%s«"
 
-#: ../gio/gtlscertificate.c:250
+#: gio/gtlscertificate.c:250
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "PEM-enkodierter geheimer Schlüssel konnte nicht entschlüsselt werden"
 
-#: ../gio/gtlscertificate.c:255
+#: gio/gtlscertificate.c:255
 msgid "No PEM-encoded private key found"
 msgstr "Kein PEM-enkodierter geheimer Schlüssel gefunden"
 
-#: ../gio/gtlscertificate.c:265
+#: gio/gtlscertificate.c:265
 msgid "Could not parse PEM-encoded private key"
 msgstr "PEM-enkodierter geheimer Schlüssel konnte nicht verarbeitet werden"
 
-#: ../gio/gtlscertificate.c:290
+#: gio/gtlscertificate.c:290
 msgid "No PEM-encoded certificate found"
 msgstr "Kein PEM-enkodiertes Zertifikat gefunden"
 
-#: ../gio/gtlscertificate.c:299
+#: gio/gtlscertificate.c:299
 msgid "Could not parse PEM-encoded certificate"
 msgstr "PEM-enkodiertes Zertifikat konnte nicht verarbeitet werden"
 
-#: ../gio/gtlspassword.c:111
+#: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
 "is locked out."
@@ -4091,7 +4043,7 @@
 
 #. Translators: This is not the 'This is the last chance' string. It is
 #. * displayed when more than one attempt is allowed.
-#: ../gio/gtlspassword.c:115
+#: gio/gtlspassword.c:115
 msgid ""
 "Several passwords entered have been incorrect, and your access will be "
 "locked out after further failures."
@@ -4099,308 +4051,307 @@
 "Passwörter wurden mehrfach inkorrekt eingegeben, daher wird Ihr Zugriff nach "
 "weiteren Fehleingaben gesperrt."
 
-#: ../gio/gtlspassword.c:117
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
 msgstr "Das eingegebene Passwort ist ungültig."
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:563
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:563
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "1 Kontrollnachricht wird erwartet, %d wurde erhalten"
 msgstr[1] "1 Kontrollnachricht wird erwartet, %d wurden erhalten"
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:575
 msgid "Unexpected type of ancillary data"
 msgstr "Unerwartete Art von Zusatzdaten"
 
-#: ../gio/gunixconnection.c:200
+#: gio/gunixconnection.c:200
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Ein Dateideskriptor wird erwartet, aber %d wurde erhalten\n"
 msgstr[1] "Ein Dateideskriptor wird erwartet, aber %d wurden erhalten\n"
 
-#: ../gio/gunixconnection.c:219
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
 msgstr "Ungültiger Dateideskriptor wurde erhalten"
 
-#: ../gio/gunixconnection.c:355
+#: gio/gunixconnection.c:355
 msgid "Error sending credentials: "
 msgstr "Fehler beim Senden der Anmeldedaten: "
 
-#: ../gio/gunixconnection.c:504
+#: gio/gunixconnection.c:504
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Fehler bei der Überprüfung, ob SO_PASSCRED für Socket aktiviert ist: %s"
 
-#: ../gio/gunixconnection.c:520
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Fehler beim Aktivieren von SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:549
+#: gio/gunixconnection.c:549
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Erwartet wurde der Empfang eines einzelnen Bytes als Anmeldedaten, jedoch "
 "null Bytes gelesen"
 
-#: ../gio/gunixconnection.c:589
+#: gio/gunixconnection.c:589
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Kontrollnachricht wurde nicht erwartet, %d wurde erhalten"
 
-#: ../gio/gunixconnection.c:614
+#: gio/gunixconnection.c:614
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fehler beim Deaktivieren von SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
+#: gio/gunixinputstream.c:372 gio/gunixinputstream.c:393
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Fehler beim Lesen aus dem Dateideskriptor: %s"
 
-#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
-#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
+#: gio/gunixinputstream.c:426 gio/gunixoutputstream.c:411
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Fehler beim Schließen des Dateideskriptors: %s"
 
-#: ../gio/gunixmounts.c:2593 ../gio/gunixmounts.c:2646
+#: gio/gunixmounts.c:2589 gio/gunixmounts.c:2642
 msgid "Filesystem root"
 msgstr "Wurzelordner des Dateisystems"
 
-#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
+#: gio/gunixoutputstream.c:358 gio/gunixoutputstream.c:378
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Fehler beim Schreiben in den Dateideskriptor: %s"
 
-#: ../gio/gunixsocketaddress.c:243
+#: gio/gunixsocketaddress.c:243
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Abstrakte Unix Domänen-Socket-Adresse wird auf diesem System nicht "
 "unterstützt"
 
-#: ../gio/gvolume.c:438
+#: gio/gvolume.c:438
 msgid "volume doesn’t implement eject"
 msgstr "Datenträger unterstützt Auswerfen nicht"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:515
+#: gio/gvolume.c:515
 msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr "Datenträger unterstützt weder Auswerfen noch »eject_with_operation«"
 
-#: ../gio/gwin32inputstream.c:185
+#: gio/gwin32inputstream.c:185
 #, c-format
 msgid "Error reading from handle: %s"
 msgstr "Fehler beim Lesen aus dem Handler: %s"
 
-#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, c-format
 msgid "Error closing handle: %s"
 msgstr "Fehler beim Schließen des Handlers: %s"
 
-#: ../gio/gwin32outputstream.c:172
+#: gio/gwin32outputstream.c:172
 #, c-format
 msgid "Error writing to handle: %s"
 msgstr "Fehler beim Schreiben in das Handle: %s"
 
-#: ../gio/gzlibcompressor.c:394 ../gio/gzlibdecompressor.c:347
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "Nicht genügend freier Speicher"
 
-#: ../gio/gzlibcompressor.c:401 ../gio/gzlibdecompressor.c:354
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "Interner Fehler: %s"
 
-#: ../gio/gzlibcompressor.c:414 ../gio/gzlibdecompressor.c:368
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr "Weitere Eingaben erforderlich"
 
-#: ../gio/gzlibdecompressor.c:340
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "Ungültige komprimierte Daten"
 
-#: ../gio/tests/gdbus-daemon.c:18
+#: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
 msgstr "Adresse, an der gelauscht werden soll"
 
-#: ../gio/tests/gdbus-daemon.c:19
+#: gio/tests/gdbus-daemon.c:19
 msgid "Ignored, for compat with GTestDbus"
 msgstr "Ignoriert (für Kompatibilität mit GTestDbus)"
 
-#: ../gio/tests/gdbus-daemon.c:20
+#: gio/tests/gdbus-daemon.c:20
 msgid "Print address"
 msgstr "Adresse ausgeben"
 
-#: ../gio/tests/gdbus-daemon.c:21
+#: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
 msgstr "Adresse im Shell-Modus ausgeben"
 
-#: ../gio/tests/gdbus-daemon.c:28
+#: gio/tests/gdbus-daemon.c:28
 msgid "Run a dbus service"
 msgstr "Einen D-Bus-Dienst ausführen"
 
-#: ../gio/tests/gdbus-daemon.c:42
-#, c-format
+#: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
 msgstr "Falsche Argumente\n"
 
-#: ../glib/gbookmarkfile.c:754
+#: glib/gbookmarkfile.c:754
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Unerwartetes Attribut »%s« des Elements »%s«"
 
-#: ../glib/gbookmarkfile.c:765 ../glib/gbookmarkfile.c:836
-#: ../glib/gbookmarkfile.c:846 ../glib/gbookmarkfile.c:953
+#: glib/gbookmarkfile.c:765 glib/gbookmarkfile.c:836 glib/gbookmarkfile.c:846
+#: glib/gbookmarkfile.c:955
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Attribut »%s« des Elements »%s« konnte nicht gefunden werden"
 
-#: ../glib/gbookmarkfile.c:1123 ../glib/gbookmarkfile.c:1188
-#: ../glib/gbookmarkfile.c:1252 ../glib/gbookmarkfile.c:1262
+#: glib/gbookmarkfile.c:1164 glib/gbookmarkfile.c:1229
+#: glib/gbookmarkfile.c:1293 glib/gbookmarkfile.c:1303
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Unerwarteter Tag »%s«; Tag »%s« wird erwartet"
 
-#: ../glib/gbookmarkfile.c:1148 ../glib/gbookmarkfile.c:1162
-#: ../glib/gbookmarkfile.c:1230
+#: glib/gbookmarkfile.c:1189 glib/gbookmarkfile.c:1203
+#: glib/gbookmarkfile.c:1271 glib/gbookmarkfile.c:1317
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Unerwarteter Tag »%s« innerhalb von »%s«"
 
-#: ../glib/gbookmarkfile.c:1757
+#: glib/gbookmarkfile.c:1813
 msgid "No valid bookmark file found in data dirs"
 msgstr "Es wurde keine gültige Lesezeichendatei in den Datenordnern gefunden"
 
-#: ../glib/gbookmarkfile.c:1958
+#: glib/gbookmarkfile.c:2014
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Es existiert bereits ein Lesezeichen für die Adresse »%s«"
 
-#: ../glib/gbookmarkfile.c:2004 ../glib/gbookmarkfile.c:2162
-#: ../glib/gbookmarkfile.c:2247 ../glib/gbookmarkfile.c:2327
-#: ../glib/gbookmarkfile.c:2412 ../glib/gbookmarkfile.c:2495
-#: ../glib/gbookmarkfile.c:2573 ../glib/gbookmarkfile.c:2652
-#: ../glib/gbookmarkfile.c:2694 ../glib/gbookmarkfile.c:2791
-#: ../glib/gbookmarkfile.c:2912 ../glib/gbookmarkfile.c:3102
-#: ../glib/gbookmarkfile.c:3178 ../glib/gbookmarkfile.c:3346
-#: ../glib/gbookmarkfile.c:3435 ../glib/gbookmarkfile.c:3524
-#: ../glib/gbookmarkfile.c:3640
+#: glib/gbookmarkfile.c:2060 glib/gbookmarkfile.c:2218
+#: glib/gbookmarkfile.c:2303 glib/gbookmarkfile.c:2383
+#: glib/gbookmarkfile.c:2468 glib/gbookmarkfile.c:2551
+#: glib/gbookmarkfile.c:2629 glib/gbookmarkfile.c:2708
+#: glib/gbookmarkfile.c:2750 glib/gbookmarkfile.c:2847
+#: glib/gbookmarkfile.c:2968 glib/gbookmarkfile.c:3158
+#: glib/gbookmarkfile.c:3234 glib/gbookmarkfile.c:3402
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3580
+#: glib/gbookmarkfile.c:3696
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Es konnte kein Lesezeichen für die Adresse »%s« gefunden werden."
 
-#: ../glib/gbookmarkfile.c:2336
+#: glib/gbookmarkfile.c:2392
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Es ist kein MIME-Typ im Lesezeichen für die Adresse »%s« definiert."
 
-#: ../glib/gbookmarkfile.c:2421
+#: glib/gbookmarkfile.c:2477
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "Es konnte keine »privat«-Markierung für das Lesezeichen für die Adresse »%s« "
 "gefunden werden."
 
-#: ../glib/gbookmarkfile.c:2800
+#: glib/gbookmarkfile.c:2856
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr ""
 "Es wurden keine Gruppen für das Lesezeichen für die Adresse »%s« festgelegt."
 
-#: ../glib/gbookmarkfile.c:3199 ../glib/gbookmarkfile.c:3356
+#: glib/gbookmarkfile.c:3255 glib/gbookmarkfile.c:3412
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 "Es wurde keine Anwendung namens »%s« gefunden, die ein Lesezeichen für »%s« "
 "registriert hat."
 
-#: ../glib/gbookmarkfile.c:3379
+#: glib/gbookmarkfile.c:3435
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
 "Die Befehlszeile »%s« konnte nicht mit der Adresse »%s« verknüpft werden."
 
-#: ../glib/gconvert.c:473
+#: glib/gconvert.c:473
 msgid "Unrepresentable character in conversion input"
 msgstr "Nicht darstellbares Zeichen in Umwandlungsausgabe"
 
-#: ../glib/gconvert.c:500 ../glib/gutf8.c:865 ../glib/gutf8.c:1077
-#: ../glib/gutf8.c:1214 ../glib/gutf8.c:1318
+#: glib/gconvert.c:500 glib/gutf8.c:865 glib/gutf8.c:1077 glib/gutf8.c:1214
+#: glib/gutf8.c:1318
 msgid "Partial character sequence at end of input"
 msgstr "Bruchstückhafte Zeichenfolge am Eingabeende"
 
-#: ../glib/gconvert.c:769
+#: glib/gconvert.c:769
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Notnagel »%s« kann nicht in Kodierung »%s« umgewandelt werden"
 
-#: ../glib/gconvert.c:940
+#: glib/gconvert.c:940
 msgid "Embedded NUL byte in conversion input"
 msgstr "Eingebettetes NUL-Byte in Umwandlungseingabe"
 
-#: ../glib/gconvert.c:961
+#: glib/gconvert.c:961
 msgid "Embedded NUL byte in conversion output"
 msgstr "Eingebettetes NUL-Byte in Umwandlungsausgabe"
 
-#: ../glib/gconvert.c:1649
+#: glib/gconvert.c:1649
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 "Die Adresse »%s« ist keine absolute Adresse, die das »file«-Schema verwendet"
 
-#: ../glib/gconvert.c:1659
+#: glib/gconvert.c:1659
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "Die lokale Adresse »%s« darf kein »#« enthalten"
 
-#: ../glib/gconvert.c:1676
+#: glib/gconvert.c:1676
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "Die Adresse »%s« ist ungültig"
 
-#: ../glib/gconvert.c:1688
+#: glib/gconvert.c:1688
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "Der Rechnername der Adresse »%s« ist ungültig"
 
 # CHECK
-#: ../glib/gconvert.c:1704
+#: glib/gconvert.c:1704
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "Die Adresse »%s« enthält ungültige Escape-Zeichen"
 
-#: ../glib/gconvert.c:1776
+#: glib/gconvert.c:1776
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Der Pfadname »%s« ist kein absoluter Pfad"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:213
+#: glib/gdatetime.c:213
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %e. %b %Y %T %Z"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:216
+#: glib/gdatetime.c:216
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d.%m.%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:219
+#: glib/gdatetime.c:219
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:222
+#: glib/gdatetime.c:222
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S"
@@ -4421,62 +4372,62 @@
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: ../glib/gdatetime.c:261
+#: glib/gdatetime.c:261
 msgctxt "full month name"
 msgid "January"
 msgstr "Januar"
 
-#: ../glib/gdatetime.c:263
+#: glib/gdatetime.c:263
 msgctxt "full month name"
 msgid "February"
 msgstr "Februar"
 
-#: ../glib/gdatetime.c:265
+#: glib/gdatetime.c:265
 msgctxt "full month name"
 msgid "March"
 msgstr "März"
 
-#: ../glib/gdatetime.c:267
+#: glib/gdatetime.c:267
 msgctxt "full month name"
 msgid "April"
 msgstr "April"
 
-#: ../glib/gdatetime.c:269
+#: glib/gdatetime.c:269
 msgctxt "full month name"
 msgid "May"
 msgstr "Mai"
 
-#: ../glib/gdatetime.c:271
+#: glib/gdatetime.c:271
 msgctxt "full month name"
 msgid "June"
 msgstr "Juni"
 
-#: ../glib/gdatetime.c:273
+#: glib/gdatetime.c:273
 msgctxt "full month name"
 msgid "July"
 msgstr "Juli"
 
-#: ../glib/gdatetime.c:275
+#: glib/gdatetime.c:275
 msgctxt "full month name"
 msgid "August"
 msgstr "August"
 
-#: ../glib/gdatetime.c:277
+#: glib/gdatetime.c:277
 msgctxt "full month name"
 msgid "September"
 msgstr "September"
 
-#: ../glib/gdatetime.c:279
+#: glib/gdatetime.c:279
 msgctxt "full month name"
 msgid "October"
 msgstr "Oktober"
 
-#: ../glib/gdatetime.c:281
+#: glib/gdatetime.c:281
 msgctxt "full month name"
 msgid "November"
 msgstr "November"
 
-#: ../glib/gdatetime.c:283
+#: glib/gdatetime.c:283
 msgctxt "full month name"
 msgid "December"
 msgstr "Dezember"
@@ -4498,132 +4449,132 @@
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: ../glib/gdatetime.c:315
+#: glib/gdatetime.c:315
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "Jan"
 
-#: ../glib/gdatetime.c:317
+#: glib/gdatetime.c:317
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "Feb"
 
-#: ../glib/gdatetime.c:319
+#: glib/gdatetime.c:319
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "Mär"
 
-#: ../glib/gdatetime.c:321
+#: glib/gdatetime.c:321
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "Apr"
 
-#: ../glib/gdatetime.c:323
+#: glib/gdatetime.c:323
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "Mai"
 
-#: ../glib/gdatetime.c:325
+#: glib/gdatetime.c:325
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "Jun"
 
-#: ../glib/gdatetime.c:327
+#: glib/gdatetime.c:327
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "Jul"
 
-#: ../glib/gdatetime.c:329
+#: glib/gdatetime.c:329
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "Aug"
 
-#: ../glib/gdatetime.c:331
+#: glib/gdatetime.c:331
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "Sep"
 
-#: ../glib/gdatetime.c:333
+#: glib/gdatetime.c:333
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "Okt"
 
-#: ../glib/gdatetime.c:335
+#: glib/gdatetime.c:335
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "Nov"
 
-#: ../glib/gdatetime.c:337
+#: glib/gdatetime.c:337
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "Dez"
 
-#: ../glib/gdatetime.c:352
+#: glib/gdatetime.c:352
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "Montag"
 
-#: ../glib/gdatetime.c:354
+#: glib/gdatetime.c:354
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "Dienstag"
 
-#: ../glib/gdatetime.c:356
+#: glib/gdatetime.c:356
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "Mittwoch"
 
-#: ../glib/gdatetime.c:358
+#: glib/gdatetime.c:358
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "Donnerstag"
 
-#: ../glib/gdatetime.c:360
+#: glib/gdatetime.c:360
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "Freitag"
 
-#: ../glib/gdatetime.c:362
+#: glib/gdatetime.c:362
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "Samstag"
 
-#: ../glib/gdatetime.c:364
+#: glib/gdatetime.c:364
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "Sonntag"
 
-#: ../glib/gdatetime.c:379
+#: glib/gdatetime.c:379
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "Mo"
 
-#: ../glib/gdatetime.c:381
+#: glib/gdatetime.c:381
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "Di"
 
-#: ../glib/gdatetime.c:383
+#: glib/gdatetime.c:383
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "Mi"
 
-#: ../glib/gdatetime.c:385
+#: glib/gdatetime.c:385
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "Do"
 
-#: ../glib/gdatetime.c:387
+#: glib/gdatetime.c:387
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "Fr"
 
-#: ../glib/gdatetime.c:389
+#: glib/gdatetime.c:389
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "Sa"
 
-#: ../glib/gdatetime.c:391
+#: glib/gdatetime.c:391
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "So"
@@ -4645,62 +4596,62 @@
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: ../glib/gdatetime.c:455
+#: glib/gdatetime.c:455
 msgctxt "full month name with day"
 msgid "January"
 msgstr "Januar"
 
-#: ../glib/gdatetime.c:457
+#: glib/gdatetime.c:457
 msgctxt "full month name with day"
 msgid "February"
 msgstr "Februar"
 
-#: ../glib/gdatetime.c:459
+#: glib/gdatetime.c:459
 msgctxt "full month name with day"
 msgid "March"
 msgstr "März"
 
-#: ../glib/gdatetime.c:461
+#: glib/gdatetime.c:461
 msgctxt "full month name with day"
 msgid "April"
 msgstr "April"
 
-#: ../glib/gdatetime.c:463
+#: glib/gdatetime.c:463
 msgctxt "full month name with day"
 msgid "May"
 msgstr "Mai"
 
-#: ../glib/gdatetime.c:465
+#: glib/gdatetime.c:465
 msgctxt "full month name with day"
 msgid "June"
 msgstr "Juni"
 
-#: ../glib/gdatetime.c:467
+#: glib/gdatetime.c:467
 msgctxt "full month name with day"
 msgid "July"
 msgstr "Juli"
 
-#: ../glib/gdatetime.c:469
+#: glib/gdatetime.c:469
 msgctxt "full month name with day"
 msgid "August"
 msgstr "August"
 
-#: ../glib/gdatetime.c:471
+#: glib/gdatetime.c:471
 msgctxt "full month name with day"
 msgid "September"
 msgstr "September"
 
-#: ../glib/gdatetime.c:473
+#: glib/gdatetime.c:473
 msgctxt "full month name with day"
 msgid "October"
 msgstr "Oktober"
 
-#: ../glib/gdatetime.c:475
+#: glib/gdatetime.c:475
 msgctxt "full month name with day"
 msgid "November"
 msgstr "November"
 
-#: ../glib/gdatetime.c:477
+#: glib/gdatetime.c:477
 msgctxt "full month name with day"
 msgid "December"
 msgstr "Dezember"
@@ -4722,198 +4673,197 @@
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: ../glib/gdatetime.c:542
+#: glib/gdatetime.c:542
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "Jan"
 
-#: ../glib/gdatetime.c:544
+#: glib/gdatetime.c:544
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "Feb"
 
-#: ../glib/gdatetime.c:546
+#: glib/gdatetime.c:546
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "Mär"
 
-#: ../glib/gdatetime.c:548
+#: glib/gdatetime.c:548
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "Apr"
 
-#: ../glib/gdatetime.c:550
+#: glib/gdatetime.c:550
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "Mai"
 
-#: ../glib/gdatetime.c:552
+#: glib/gdatetime.c:552
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "Jun"
 
-#: ../glib/gdatetime.c:554
+#: glib/gdatetime.c:554
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "Jul"
 
-#: ../glib/gdatetime.c:556
+#: glib/gdatetime.c:556
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "Aug"
 
-#: ../glib/gdatetime.c:558
+#: glib/gdatetime.c:558
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "Sep"
 
-#: ../glib/gdatetime.c:560
+#: glib/gdatetime.c:560
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "Okt"
 
-#: ../glib/gdatetime.c:562
+#: glib/gdatetime.c:562
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "Nov"
 
-#: ../glib/gdatetime.c:564
+#: glib/gdatetime.c:564
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "Dez"
 
 #. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:581
+#: glib/gdatetime.c:581
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "a. m."
 
 #. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:584
+#: glib/gdatetime.c:584
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "p. m."
 
-#: ../glib/gdir.c:155
+#: glib/gdir.c:155
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "Fehler beim Öffnen des Ordners »%s«: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gfileutils.c:808
+#: glib/gfileutils.c:716 glib/gfileutils.c:808
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "%lu Byte konnte nicht zugeordnet werden, um Datei »%s« zu lesen"
 msgstr[1] "%lu Bytes konnten nicht zugeordnet werden, um Datei »%s« zu lesen"
 
-#: ../glib/gfileutils.c:733
+#: glib/gfileutils.c:733
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Fehler beim Lesen der Datei »%s«: %s"
 
-#: ../glib/gfileutils.c:769
+#: glib/gfileutils.c:769
 #, c-format
 msgid "File “%s” is too large"
 msgstr "Datei »%s« ist zu groß"
 
-#: ../glib/gfileutils.c:833
+#: glib/gfileutils.c:833
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Aus der Datei »%s« konnte nicht gelesen werden: %s"
 
-#: ../glib/gfileutils.c:881 ../glib/gfileutils.c:953
+#: glib/gfileutils.c:881 glib/gfileutils.c:953
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Datei »%s« konnte nicht geöffnet werden: %s"
 
-#: ../glib/gfileutils.c:893
+#: glib/gfileutils.c:893
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 "Attribute der Datei »%s« konnten nicht ermittelt werden: fstat() "
 "gescheitert: %s"
 
-#: ../glib/gfileutils.c:923
+#: glib/gfileutils.c:923
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Datei »%s« konnte nicht geöffnet werden: fdopen() gescheitert: %s"
 
-#: ../glib/gfileutils.c:1022
+#: glib/gfileutils.c:1022
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 "Datei »%s« konnte nicht in »%s« umbenannt werden: g_rename() ist "
 "gescheitert: %s"
 
-#: ../glib/gfileutils.c:1057 ../glib/gfileutils.c:1575
+#: glib/gfileutils.c:1057 glib/gfileutils.c:1575
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Datei »%s« konnte nicht angelegt werden: %s"
 
-#: ../glib/gfileutils.c:1084
+#: glib/gfileutils.c:1084
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Schreiben der Datei »%s« schlug fehl: write() ist gescheitert: %s"
 
-#: ../glib/gfileutils.c:1127
+#: glib/gfileutils.c:1127
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr ""
 "Datei »%s« konnte nicht geschrieben werden: fsync() ist gescheitert: %s"
 
-#: ../glib/gfileutils.c:1262
+#: glib/gfileutils.c:1262
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Die vorhandene Datei »%s« konnte nicht entfernt werden: g_unlink() ist "
 "gescheitert: %s"
 
-#: ../glib/gfileutils.c:1541
+#: glib/gfileutils.c:1541
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Vorlage »%s« ungültig, sollte kein »%s« enthalten"
 
-#: ../glib/gfileutils.c:1554
+#: glib/gfileutils.c:1554
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Vorlage »%s« enthält nicht XXXXXX"
 
-#: ../glib/gfileutils.c:2116
+#: glib/gfileutils.c:2116
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Die symbolische Verknüpfung »%s« konnte nicht gelesen werden: %s"
 
-#: ../glib/giochannel.c:1389
+#: glib/giochannel.c:1389
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Konverter von »%s« in »%s« konnte nicht geöffnet werden: %s"
 
-#: ../glib/giochannel.c:1734
+#: glib/giochannel.c:1734
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Raw-read in g_io_channel_read_line_string nicht möglich"
 
-#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039
-#: ../glib/giochannel.c:2126
+#: glib/giochannel.c:1781 glib/giochannel.c:2039 glib/giochannel.c:2126
 msgid "Leftover unconverted data in read buffer"
 msgstr "Nicht konvertierte Daten befinden sich noch im Lesepuffer"
 
-#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939
+#: glib/giochannel.c:1862 glib/giochannel.c:1939
 msgid "Channel terminates in a partial character"
 msgstr "Kanal endet mit einem Teilzeichen"
 
-#: ../glib/giochannel.c:1925
+#: glib/giochannel.c:1925
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Raw-read in g_io_channel_read_to_end nicht möglich"
 
-#: ../glib/gkeyfile.c:788
+#: glib/gkeyfile.c:788
 msgid "Valid key file could not be found in search dirs"
 msgstr "Es wurde keine gültige Schlüsselwertedatei in den Suchordnern gefunden"
 
-#: ../glib/gkeyfile.c:825
+#: glib/gkeyfile.c:825
 msgid "Not a regular file"
 msgstr "Keine reguläre Datei"
 
-#: ../glib/gkeyfile.c:1270
+#: glib/gkeyfile.c:1270
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -4921,45 +4871,45 @@
 "Die Schlüsselwertedatei enthält die Zeile »%s«, welche kein zulässiges "
 "Schlüssel-Wert-Paar, keine Gruppe und kein Kommentar ist."
 
-#: ../glib/gkeyfile.c:1327
+#: glib/gkeyfile.c:1327
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Ungültiger Gruppenname: %s"
 
-#: ../glib/gkeyfile.c:1349
+#: glib/gkeyfile.c:1349
 msgid "Key file does not start with a group"
 msgstr "Die Schlüsselwertedatei beginnt nicht mit einer Gruppe"
 
-#: ../glib/gkeyfile.c:1375
+#: glib/gkeyfile.c:1375
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Ungültiger Schlüsselname: %s"
 
-#: ../glib/gkeyfile.c:1402
+#: glib/gkeyfile.c:1402
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Die Schlüsselwertedatei enthält die nicht unterstützte Kodierung »%s«"
 
-#: ../glib/gkeyfile.c:1645 ../glib/gkeyfile.c:1818 ../glib/gkeyfile.c:3271
-#: ../glib/gkeyfile.c:3334 ../glib/gkeyfile.c:3464 ../glib/gkeyfile.c:3594
-#: ../glib/gkeyfile.c:3738 ../glib/gkeyfile.c:3967 ../glib/gkeyfile.c:4034
+#: glib/gkeyfile.c:1645 glib/gkeyfile.c:1818 glib/gkeyfile.c:3271
+#: glib/gkeyfile.c:3334 glib/gkeyfile.c:3464 glib/gkeyfile.c:3594
+#: glib/gkeyfile.c:3738 glib/gkeyfile.c:3967 glib/gkeyfile.c:4034
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Die Schlüsselwertedatei enthält nicht die Gruppe »%s«"
 
-#: ../glib/gkeyfile.c:1773
+#: glib/gkeyfile.c:1773
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Die Schlüsselwertedatei hat keinen Schlüssel »%s« in der Gruppe »%s«"
 
-#: ../glib/gkeyfile.c:1935 ../glib/gkeyfile.c:2051
+#: glib/gkeyfile.c:1935 glib/gkeyfile.c:2051
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« mit dem Wert »%s«, der "
 "nicht in UTF-8 kodiert ist"
 
-#: ../glib/gkeyfile.c:1955 ../glib/gkeyfile.c:2071 ../glib/gkeyfile.c:2513
+#: glib/gkeyfile.c:1955 glib/gkeyfile.c:2071 glib/gkeyfile.c:2513
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -4967,7 +4917,7 @@
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« mit einem Wert, der nicht "
 "interpretiert werden konnte."
 
-#: ../glib/gkeyfile.c:2731 ../glib/gkeyfile.c:3100
+#: glib/gkeyfile.c:2731 glib/gkeyfile.c:3100
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -4976,87 +4926,87 @@
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« in der Gruppe »%s« mit "
 "einem Wert, der nicht interpretiert werden konnte."
 
-#: ../glib/gkeyfile.c:2809 ../glib/gkeyfile.c:2886
+#: glib/gkeyfile.c:2809 glib/gkeyfile.c:2886
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "Der Schlüssel »%s« in der Gruppe »%s« enthält den Wert »%s«, obwohl %s "
 "erwartet wurde"
 
-#: ../glib/gkeyfile.c:4274
+#: glib/gkeyfile.c:4274
 msgid "Key file contains escape character at end of line"
 msgstr "Die Schlüsselwertedatei enthält ein Escape-Zeichen am Zeilenende"
 
 # CHECK
-#: ../glib/gkeyfile.c:4296
+#: glib/gkeyfile.c:4296
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Die Schlüsselwertedatei enthält das ungültige Escape-Zeichen »%s«"
 
-#: ../glib/gkeyfile.c:4440
+#: glib/gkeyfile.c:4440
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Der Wert »%s« konnte nicht als Zahl interpretiert werden."
 
-#: ../glib/gkeyfile.c:4454
+#: glib/gkeyfile.c:4454
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Ganzzahliger Wert »%s« ist außerhalb des Wertebereiches"
 
-#: ../glib/gkeyfile.c:4487
+#: glib/gkeyfile.c:4487
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Der Wert »%s« konnte nicht als Gleitkommazahl interpretiert werden."
 
-#: ../glib/gkeyfile.c:4526
+#: glib/gkeyfile.c:4526
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
 "Der Wert »%s« konnte nicht als boolescher Ausdruck interpretiert werden."
 
-#: ../glib/gmappedfile.c:129
+#: glib/gmappedfile.c:129
 #, c-format
 msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 msgstr ""
 "Attribute der Datei »%s%s%s%s« konnten nicht ermittelt werden: fstat() "
 "gescheitert: %s"
 
-#: ../glib/gmappedfile.c:195
+#: glib/gmappedfile.c:195
 #, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "»%s%s%s%s« konnte nicht abgebildet werden: mmap() ist gescheitert: %s"
 
-#: ../glib/gmappedfile.c:262
+#: glib/gmappedfile.c:262
 #, c-format
 msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "Datei »%s« konnte nicht geöffnet werden: open() ist gescheitert: %s"
 
-#: ../glib/gmarkup.c:397 ../glib/gmarkup.c:439
+#: glib/gmarkup.c:397 glib/gmarkup.c:439
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Fehler in Zeile %d, Zeichen %d: "
 
-#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
+#: glib/gmarkup.c:461 glib/gmarkup.c:544
 #, c-format
 msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
 msgstr "Ungültiger UTF-8-kodierter Text im Namen – »%s« ist nicht gültig"
 
-#: ../glib/gmarkup.c:472
+#: glib/gmarkup.c:472
 #, c-format
 msgid "“%s” is not a valid name"
 msgstr "»%s« ist kein gültiger Name"
 
-#: ../glib/gmarkup.c:488
+#: glib/gmarkup.c:488
 #, c-format
 msgid "“%s” is not a valid name: “%c”"
 msgstr "»%s« ist kein gültiger Name: »%c«"
 
-#: ../glib/gmarkup.c:598
+#: glib/gmarkup.c:610
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Fehler in Zeile %d: %s"
 
-#: ../glib/gmarkup.c:675
+#: glib/gmarkup.c:687
 #, c-format
 msgid ""
 "Failed to parse “%-.*s”, which should have been a digit inside a character "
@@ -5065,7 +5015,7 @@
 "»%-.*s«, was eine Zahl in einer Zeichenreferenz (wie &#234;) sein sollte, "
 "konnte nicht analysiert werden – vielleicht ist die Zahl zu groß"
 
-#: ../glib/gmarkup.c:687
+#: glib/gmarkup.c:699
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
 "ampersand character without intending to start an entity — escape ampersand "
@@ -5075,24 +5025,24 @@
 "&-Zeichen benutzt, ohne eine Entität beginnen zu wollen – umschreiben Sie "
 "das »&« als &amp;"
 
-#: ../glib/gmarkup.c:713
+#: glib/gmarkup.c:725
 #, c-format
 msgid "Character reference “%-.*s” does not encode a permitted character"
 msgstr "Zeichenreferenz »%-.*s« kodiert kein zulässiges Zeichen"
 
-#: ../glib/gmarkup.c:751
+#: glib/gmarkup.c:763
 msgid ""
 "Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
 "Leere Entität »&;« gefunden; gültige Entitäten sind &amp; &quot; &lt; &gt; "
 "&apos;"
 
-#: ../glib/gmarkup.c:759
+#: glib/gmarkup.c:771
 #, c-format
 msgid "Entity name “%-.*s” is not known"
 msgstr "Entitätenname »%-.*s« ist unbekannt"
 
-#: ../glib/gmarkup.c:764
+#: glib/gmarkup.c:776
 msgid ""
 "Entity did not end with a semicolon; most likely you used an ampersand "
 "character without intending to start an entity — escape ampersand as &amp;"
@@ -5101,11 +5051,11 @@
 "Zeichen benutzt, ohne eine Entität beginnen zu wollen – umschreiben Sie das "
 "»&« als &amp;"
 
-#: ../glib/gmarkup.c:1170
+#: glib/gmarkup.c:1182
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument muss mit einem Element beginnen (e.g. <book>)"
 
-#: ../glib/gmarkup.c:1210
+#: glib/gmarkup.c:1222
 #, c-format
 msgid ""
 "“%s” is not a valid character following a “<” character; it may not begin an "
@@ -5114,7 +5064,7 @@
 "»%s« ist kein gültiges Zeichen nach einem »<«-Zeichen; es darf keinen "
 "Elementnamen beginnen"
 
-#: ../glib/gmarkup.c:1252
+#: glib/gmarkup.c:1264
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” character to end the empty-element tag "
@@ -5123,7 +5073,7 @@
 "Seltsames Zeichen »%s«, »>« erwartet um Start-Tag des leeren Elements »%s« "
 "abzuschließen"
 
-#: ../glib/gmarkup.c:1333
+#: glib/gmarkup.c:1345
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
@@ -5131,7 +5081,7 @@
 "Seltsames Zeichen »%s«, »=« wird nach dem Attributnamen »%s« des Elements "
 "»%s« erwartet"
 
-#: ../glib/gmarkup.c:1374
+#: glib/gmarkup.c:1386
 #, c-format
 msgid ""
 "Odd character “%s”, expected a “>” or “/” character to end the start tag of "
@@ -5142,7 +5092,7 @@
 "»/« erwartet, um das Start-Tag des Elements »%s« abzuschließen; vielleicht "
 "haben Sie ein ungültiges Zeichen in einem Attributnamen benutzt"
 
-#: ../glib/gmarkup.c:1418
+#: glib/gmarkup.c:1430
 #, c-format
 msgid ""
 "Odd character “%s”, expected an open quote mark after the equals sign when "
@@ -5152,7 +5102,7 @@
 "Elements »%s« wurde ein Anführungszeichen nach dem Gleichheitszeichen "
 "erwartet"
 
-#: ../glib/gmarkup.c:1551
+#: glib/gmarkup.c:1563
 #, c-format
 msgid ""
 "“%s” is not a valid character following the characters “</”; “%s” may not "
@@ -5161,7 +5111,7 @@
 "»%s« ist kein gültiges Zeichen, wenn es auf die Zeichen »</« folgt; »%s« "
 "darf keinen Elementnamen beginnen"
 
-#: ../glib/gmarkup.c:1587
+#: glib/gmarkup.c:1599
 #, c-format
 msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
@@ -5170,26 +5120,26 @@
 "»%s« ist kein gültiges Zeichen, wenn es auf den schließenden Elementnamen "
 "»%s« folgt; das erlaubte Zeichen ist »>«"
 
-#: ../glib/gmarkup.c:1598
+#: glib/gmarkup.c:1610
 #, c-format
 msgid "Element “%s” was closed, no element is currently open"
 msgstr "Element »%s« wurde geschlossen, kein Element ist derzeit offen"
 
-#: ../glib/gmarkup.c:1607
+#: glib/gmarkup.c:1619
 #, c-format
 msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr ""
 "Element »%s« wurde geschlossen, aber das derzeit offene Element ist »%s«"
 
-#: ../glib/gmarkup.c:1760
+#: glib/gmarkup.c:1772
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument ist leer oder enthält nur Leerraum"
 
-#: ../glib/gmarkup.c:1774
+#: glib/gmarkup.c:1786
 msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "Dokument endete unerwartet nach einer offenen spitzen Klammer »<«"
 
-#: ../glib/gmarkup.c:1782 ../glib/gmarkup.c:1827
+#: glib/gmarkup.c:1794 glib/gmarkup.c:1839
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open — “%s” was the last "
@@ -5198,7 +5148,7 @@
 "Dokument endete unerwartet mit noch offenen Elementen – »%s« war das letzte "
 "offene Element"
 
-#: ../glib/gmarkup.c:1790
+#: glib/gmarkup.c:1802
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -5207,19 +5157,19 @@
 "Dokument endete unerwartet, es wurde eine spitze Klammer »>«, die das Tag <"
 "%s/> schließt, erwartet"
 
-#: ../glib/gmarkup.c:1796
+#: glib/gmarkup.c:1808
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokument endete unerwartet innerhalb eines Elementnamens"
 
-#: ../glib/gmarkup.c:1802
+#: glib/gmarkup.c:1814
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokument endete unerwartet innerhalb eines Attributnamens"
 
-#: ../glib/gmarkup.c:1807
+#: glib/gmarkup.c:1819
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokument endete unerwartet innerhalb eines Element-öffnenden Tags."
 
-#: ../glib/gmarkup.c:1813
+#: glib/gmarkup.c:1825
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -5227,322 +5177,329 @@
 "Dokument endete unerwartet nach dem Gleichheitszeichen, das einem "
 "Attributnamen folgt; kein Attributwert"
 
-#: ../glib/gmarkup.c:1820
+#: glib/gmarkup.c:1832
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokument endete unerwartet innerhalb eines Attributwertes"
 
-#: ../glib/gmarkup.c:1836
+#: glib/gmarkup.c:1849
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr ""
 "Dokument endete unerwartet innerhalb eines schließenden Tags für das Element "
 "»%s«"
 
-#: ../glib/gmarkup.c:1842
+#: glib/gmarkup.c:1853
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr ""
+"Dokument endete unerwartet innerhalb eines schließenden Tags für ein "
+"ungeöffnetes Element"
+
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
 "Dokument endete unerwartet innerhalb eines Kommentars oder "
 "Verarbeitungsanweisung"
 
-#: ../glib/goption.c:861
+#: glib/goption.c:861
 msgid "[OPTION…]"
 msgstr "[OPTION …]"
 
-#: ../glib/goption.c:977
+#: glib/goption.c:977
 msgid "Help Options:"
 msgstr "Hilfeoptionen:"
 
-#: ../glib/goption.c:978
+#: glib/goption.c:978
 msgid "Show help options"
 msgstr "Hilfeoptionen anzeigen"
 
-#: ../glib/goption.c:984
+#: glib/goption.c:984
 msgid "Show all help options"
 msgstr "Alle Hilfeoptionen anzeigen"
 
-#: ../glib/goption.c:1047
+#: glib/goption.c:1047
 msgid "Application Options:"
 msgstr "Anwendungsoptionen:"
 
-#: ../glib/goption.c:1049
+#: glib/goption.c:1049
 msgid "Options:"
 msgstr "Optionen:"
 
-#: ../glib/goption.c:1113 ../glib/goption.c:1183
+#: glib/goption.c:1113 glib/goption.c:1183
 #, c-format
 msgid "Cannot parse integer value “%s” for %s"
 msgstr "»%s« konnte nicht als ganzzahliger Wert für %s interpretiert werden"
 
-#: ../glib/goption.c:1123 ../glib/goption.c:1191
+#: glib/goption.c:1123 glib/goption.c:1191
 #, c-format
 msgid "Integer value “%s” for %s out of range"
 msgstr "Ganzzahliger Wert »%s« für %s ist außerhalb des Bereiches"
 
-#: ../glib/goption.c:1148
+#: glib/goption.c:1148
 #, c-format
 msgid "Cannot parse double value “%s” for %s"
 msgstr "»%s« konnte nicht als »double«-Wert für %s interpretiert werden"
 
-#: ../glib/goption.c:1156
+#: glib/goption.c:1156
 #, c-format
 msgid "Double value “%s” for %s out of range"
 msgstr "»double«-Wert »%s« für %s ist außerhalb des Bereiches"
 
-#: ../glib/goption.c:1448 ../glib/goption.c:1527
+#: glib/goption.c:1448 glib/goption.c:1527
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Fehler beim Verarbeiten der Option: %s"
 
-#: ../glib/goption.c:1558 ../glib/goption.c:1671
+#: glib/goption.c:1558 glib/goption.c:1671
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Für %s wird ein Argument benötigt"
 
-#: ../glib/goption.c:2132
+#: glib/goption.c:2132
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unbekannte Option %s"
 
-#: ../glib/gregex.c:257
+#: glib/gregex.c:257
 msgid "corrupted object"
 msgstr "Beschädigtes Objekt"
 
-#: ../glib/gregex.c:259
+#: glib/gregex.c:259
 msgid "internal error or corrupted object"
 msgstr "Interner Fehler oder beschädigtes Objekt"
 
-#: ../glib/gregex.c:261
+#: glib/gregex.c:261
 msgid "out of memory"
 msgstr "Nicht genügend freier Speicher"
 
-#: ../glib/gregex.c:266
+#: glib/gregex.c:266
 msgid "backtracking limit reached"
 msgstr "Rückverfolgungsgrenze wurde erreicht"
 
-#: ../glib/gregex.c:278 ../glib/gregex.c:286
+#: glib/gregex.c:278 glib/gregex.c:286
 msgid "the pattern contains items not supported for partial matching"
 msgstr ""
 "Der Ausdruck enthält Elemente, die teilweise Übereinstimmung nicht "
 "unterstützen"
 
-#: ../glib/gregex.c:280
+#: glib/gregex.c:280
 msgid "internal error"
 msgstr "Interner Fehler"
 
-#: ../glib/gregex.c:288
+#: glib/gregex.c:288
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 "Rückreferenzen als Bedingungen werden für teilweise Übereinstimmung nicht "
 "unterstützt"
 
-#: ../glib/gregex.c:297
+#: glib/gregex.c:297
 msgid "recursion limit reached"
 msgstr "Rekursionslimit wurde erreicht"
 
-#: ../glib/gregex.c:299
+#: glib/gregex.c:299
 msgid "invalid combination of newline flags"
 msgstr "Ungültige Kombination von newline-Markierungen"
 
-#: ../glib/gregex.c:301
+#: glib/gregex.c:301
 msgid "bad offset"
 msgstr "fehlerhafter Versatz"
 
-#: ../glib/gregex.c:303
+#: glib/gregex.c:303
 msgid "short utf8"
 msgstr "Kurzes UTF-8"
 
-#: ../glib/gregex.c:305
+#: glib/gregex.c:305
 msgid "recursion loop"
 msgstr "Rekursionsschleife"
 
-#: ../glib/gregex.c:309
+#: glib/gregex.c:309
 msgid "unknown error"
 msgstr "Unbekannter Fehler"
 
-#: ../glib/gregex.c:329
+#: glib/gregex.c:329
 msgid "\\ at end of pattern"
 msgstr "\\ am Ende des Ausdrucks"
 
-#: ../glib/gregex.c:332
+#: glib/gregex.c:332
 msgid "\\c at end of pattern"
 msgstr "\\c am Ende des Ausdrucks"
 
-#: ../glib/gregex.c:335
+#: glib/gregex.c:335
 msgid "unrecognized character following \\"
 msgstr "Unbekanntes Zeichen nach \\"
 
 # CHECK
-#: ../glib/gregex.c:338
+#: glib/gregex.c:338
 msgid "numbers out of order in {} quantifier"
 msgstr "Ziffern wirkungslos in {}-Quantifizierer"
 
-#: ../glib/gregex.c:341
+#: glib/gregex.c:341
 msgid "number too big in {} quantifier"
 msgstr "Ziffer zu groß in {}-Quantifizierer"
 
-#: ../glib/gregex.c:344
+#: glib/gregex.c:344
 msgid "missing terminating ] for character class"
 msgstr "Terminierendes ] für Zeichenklasse fehlt"
 
-#: ../glib/gregex.c:347
+#: glib/gregex.c:347
 msgid "invalid escape sequence in character class"
 msgstr "Ungültige Escape-Sequenz in Zeichenklasse"
 
 # CHECK
-#: ../glib/gregex.c:350
+#: glib/gregex.c:350
 msgid "range out of order in character class"
 msgstr "Bereich wirkungslos in Zeichenklasse"
 
-#: ../glib/gregex.c:353
+#: glib/gregex.c:353
 msgid "nothing to repeat"
 msgstr "Nichts zum Wiederholen"
 
-#: ../glib/gregex.c:357
+#: glib/gregex.c:357
 msgid "unexpected repeat"
 msgstr "Unerwartete Wiederholung"
 
-#: ../glib/gregex.c:360
+#: glib/gregex.c:360
 msgid "unrecognized character after (? or (?-"
 msgstr "Unbekanntes Zeichen nach (? oder (?-"
 
-#: ../glib/gregex.c:363
+#: glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX-benannte Klassen werden nur innerhalb einer Klasse unterstützt"
 
-#: ../glib/gregex.c:366
+#: glib/gregex.c:366
 msgid "missing terminating )"
 msgstr "Abschließende ) fehlt"
 
-#: ../glib/gregex.c:369
+#: glib/gregex.c:369
 msgid "reference to non-existent subpattern"
 msgstr "Referenz auf nicht existierenden Unterausdruck"
 
-#: ../glib/gregex.c:372
+#: glib/gregex.c:372
 msgid "missing ) after comment"
 msgstr "fehlende ) nach Kommentar"
 
-#: ../glib/gregex.c:375
+#: glib/gregex.c:375
 msgid "regular expression is too large"
 msgstr "Regulärer Ausdruck zu groß"
 
-#: ../glib/gregex.c:378
+#: glib/gregex.c:378
 msgid "failed to get memory"
 msgstr "Fehler beim Holen von Speicher"
 
-#: ../glib/gregex.c:382
+#: glib/gregex.c:382
 msgid ") without opening ("
 msgstr ") ohne öffnende ("
 
-#: ../glib/gregex.c:386
+#: glib/gregex.c:386
 msgid "code overflow"
 msgstr "Code-Überlauf"
 
-#: ../glib/gregex.c:390
+#: glib/gregex.c:390
 msgid "unrecognized character after (?<"
 msgstr "Unbekanntes Zeichen nach (?<"
 
-#: ../glib/gregex.c:393
+#: glib/gregex.c:393
 msgid "lookbehind assertion is not fixed length"
 msgstr "Rückblickende Annahme hat keine feste Länge"
 
-#: ../glib/gregex.c:396
+#: glib/gregex.c:396
 msgid "malformed number or name after (?("
 msgstr "Falsch formatierte Zahl oder Name nach (?("
 
-#: ../glib/gregex.c:399
+#: glib/gregex.c:399
 msgid "conditional group contains more than two branches"
 msgstr "Bedingte Gruppe enthält mehr als zwei Verzweigungen"
 
-#: ../glib/gregex.c:402
+#: glib/gregex.c:402
 msgid "assertion expected after (?("
 msgstr "Annahme erwartet nach (?("
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:409
+#: glib/gregex.c:409
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "auf (?R oder (?[+-]Ziffern muss ) folgen"
 
-#: ../glib/gregex.c:412
+#: glib/gregex.c:412
 msgid "unknown POSIX class name"
 msgstr "Unbekannter POSIX-Klassenname"
 
-#: ../glib/gregex.c:415
+#: glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX-Elementverknüpfungen nicht unterstützt"
 
-#: ../glib/gregex.c:418
+#: glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
 msgstr "Wert in \\x{…}-Sequenz ist zu groß"
 
-#: ../glib/gregex.c:421
+#: glib/gregex.c:421
 msgid "invalid condition (?(0)"
 msgstr "Ungültige Bedingung (?(0)"
 
-#: ../glib/gregex.c:424
+#: glib/gregex.c:424
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C nicht erlaubt in rückblickender Annahme"
 
-#: ../glib/gregex.c:431
+#: glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr ""
 "Escape-Sequenzen \\L, \\l, \\N{name}, \\U, und \\u werden nicht unterstützt"
 
-#: ../glib/gregex.c:434
+#: glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
 msgstr "Rekursive Aufrufe könnten unendlich oft aufgerufen werden"
 
-#: ../glib/gregex.c:438
+#: glib/gregex.c:438
 msgid "unrecognized character after (?P"
 msgstr "Unbekanntes Zeichen nach (?P"
 
-#: ../glib/gregex.c:441
+#: glib/gregex.c:441
 msgid "missing terminator in subpattern name"
 msgstr "Terminierung im Namen des Unterausdrucks fehlt"
 
-#: ../glib/gregex.c:444
+#: glib/gregex.c:444
 msgid "two named subpatterns have the same name"
 msgstr "Zwei benannte Unterausdrücke haben den gleichen Namen"
 
-#: ../glib/gregex.c:447
+#: glib/gregex.c:447
 msgid "malformed \\P or \\p sequence"
 msgstr "Fehlerhafte \\P- oder \\p-Sequenz"
 
-#: ../glib/gregex.c:450
+#: glib/gregex.c:450
 msgid "unknown property name after \\P or \\p"
 msgstr "Unbekannte Eigenschaftsname nach \\P oder \\p"
 
-#: ../glib/gregex.c:453
+#: glib/gregex.c:453
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "Name des Unterausdrucks ist zu lang (maximal 32 Zeichen)"
 
-#: ../glib/gregex.c:456
+#: glib/gregex.c:456
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "Zu viele benannte Unterausdrücke (maximal 10.000)"
 
-#: ../glib/gregex.c:459
+#: glib/gregex.c:459
 msgid "octal value is greater than \\377"
 msgstr "Oktaler Wert ist größer als \\377"
 
-#: ../glib/gregex.c:463
+#: glib/gregex.c:463
 msgid "overran compiling workspace"
 msgstr "Überlauf beim Kompilieren des Arbeitsbereichs"
 
-#: ../glib/gregex.c:467
+#: glib/gregex.c:467
 msgid "previously-checked referenced subpattern not found"
 msgstr ""
 "Bereits geprüfter, referenzierter Unterausdruck konnte nicht gefunden werden"
 
-#: ../glib/gregex.c:470
+#: glib/gregex.c:470
 msgid "DEFINE group contains more than one branch"
 msgstr "DEFINE-Gruppe enthält mehr als eine Verzweigung"
 
-#: ../glib/gregex.c:473
+#: glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
 msgstr "Inkonsistente NEWLINE-Optionen"
 
-#: ../glib/gregex.c:476
+#: glib/gregex.c:476
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -5550,292 +5507,291 @@
 "Auf \\g folgt kein eingeklammerter, in eckigen Klammern eingeklammerter oder "
 "zitierter Name oder eine Zahl oder eine einfache Zahl"
 
-#: ../glib/gregex.c:480
+#: glib/gregex.c:480
 msgid "a numbered reference must not be zero"
 msgstr "Eine nummerierte Referenz darf nicht Null sein"
 
-#: ../glib/gregex.c:483
+#: glib/gregex.c:483
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "Ein Argument ist für (*ACCEPT), (*FAIL), oder (*COMMIT) nicht erlaubt"
 
-#: ../glib/gregex.c:486
+#: glib/gregex.c:486
 msgid "(*VERB) not recognized"
 msgstr "(*VERB) nicht erkannt"
 
-#: ../glib/gregex.c:489
+#: glib/gregex.c:489
 msgid "number is too big"
 msgstr "Zahl ist zu groß"
 
-#: ../glib/gregex.c:492
+#: glib/gregex.c:492
 msgid "missing subpattern name after (?&"
 msgstr "Name des Unterausdrucks nach (?& fehlt"
 
-#: ../glib/gregex.c:495
+#: glib/gregex.c:495
 msgid "digit expected after (?+"
 msgstr "Ziffer erwartet nach (?+"
 
-#: ../glib/gregex.c:498
+#: glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr "] ist ein ungültiges Datenzeichen im JavaScript-Kompatibilitätsmodus"
 
-#: ../glib/gregex.c:501
+#: glib/gregex.c:501
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr ""
 "Verschiedene Namen für Unterausdrücke der gleichen Nummer sind nicht erlaubt"
 
-#: ../glib/gregex.c:504
+#: glib/gregex.c:504
 msgid "(*MARK) must have an argument"
 msgstr "(*MARK) benötigt ein Argument"
 
-#: ../glib/gregex.c:507
+#: glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
 msgstr "Auf \\c muss ein ASCII-Zeichen folgen"
 
-#: ../glib/gregex.c:510
+#: glib/gregex.c:510
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 "Auf \\k folgt kein eingeklammerter, in eckigen Klammern eingeklammerter oder "
 "zitierter Name"
 
-#: ../glib/gregex.c:513
+#: glib/gregex.c:513
 msgid "\\N is not supported in a class"
 msgstr "\\N wird in einer Klasse nicht unterstützt"
 
-#: ../glib/gregex.c:516
+#: glib/gregex.c:516
 msgid "too many forward references"
 msgstr "Zu viele Vorwärtsreferenzen"
 
-#: ../glib/gregex.c:519
+#: glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "Name ist zu lang in (*MARK), (*PRUNE), (*SKIP), oder (*THEN)"
 
-#: ../glib/gregex.c:522
+#: glib/gregex.c:522
 msgid "character value in \\u.... sequence is too large"
 msgstr "Zeichenwert in \\u....-Sequenz ist zu groß"
 
-#: ../glib/gregex.c:745 ../glib/gregex.c:1983
+#: glib/gregex.c:745 glib/gregex.c:1983
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Fehler beim Anwenden des regulären Ausdrucks %s: %s"
 
-#: ../glib/gregex.c:1316
+#: glib/gregex.c:1316
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "PCRE-Bibliothek wurde ohne UTF8-Unterstützung kompiliert"
 
-#: ../glib/gregex.c:1320
+#: glib/gregex.c:1320
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr ""
 "PCRE-Bibliothek wurde ohne Unterstützung für UTF8-Eigenschaften kompiliert"
 
-#: ../glib/gregex.c:1328
+#: glib/gregex.c:1328
 msgid "PCRE library is compiled with incompatible options"
 msgstr ""
 "PCRE-Bibliothek wurde mit Unterstützung für nicht-kompatible Optionen "
 "kompiliert"
 
-#: ../glib/gregex.c:1357
+#: glib/gregex.c:1357
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Fehler beim Optimieren des regulären Ausdrucks %s: %s"
 
-#: ../glib/gregex.c:1437
+#: glib/gregex.c:1437
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Fehler beim Kompilieren des regulären Ausdrucks %s an Zeichen %d: %s"
 
-#: ../glib/gregex.c:2419
+#: glib/gregex.c:2419
 msgid "hexadecimal digit or “}” expected"
 msgstr "Hexadezimalzahl oder »}« erwartet"
 
-#: ../glib/gregex.c:2435
+#: glib/gregex.c:2435
 msgid "hexadecimal digit expected"
 msgstr "Hexadezimalzahl erwartet"
 
-#: ../glib/gregex.c:2475
+#: glib/gregex.c:2475
 msgid "missing “<” in symbolic reference"
 msgstr "Fehlendes »<» in symbolischer Referenz"
 
-#: ../glib/gregex.c:2484
+#: glib/gregex.c:2484
 msgid "unfinished symbolic reference"
 msgstr "Unvollendete symbolische Referenz"
 
-#: ../glib/gregex.c:2491
+#: glib/gregex.c:2491
 msgid "zero-length symbolic reference"
 msgstr "Symbolische Referenz der Länge 0"
 
-#: ../glib/gregex.c:2502
+#: glib/gregex.c:2502
 msgid "digit expected"
 msgstr "Ziffer erwartet"
 
-#: ../glib/gregex.c:2520
+#: glib/gregex.c:2520
 msgid "illegal symbolic reference"
 msgstr "Illegale symbolische Referenz"
 
-#: ../glib/gregex.c:2582
+#: glib/gregex.c:2582
 msgid "stray final “\\”"
 msgstr "Verirrtes abschließendes »\\«"
 
-#: ../glib/gregex.c:2586
+#: glib/gregex.c:2586
 msgid "unknown escape sequence"
 msgstr "Unbekannte Escape-Sequenz"
 
-#: ../glib/gregex.c:2596
+#: glib/gregex.c:2596
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Fehler beim Verarbeiten des Ersetzungstextes »%s« an Zeichen %lu: %s"
 
-#: ../glib/gshell.c:94
+#: glib/gshell.c:94
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Zitierter Text beginnt nicht mit einem Anführungszeichen"
 
-#: ../glib/gshell.c:184
+#: glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 "Unbalanciertes Anführungszeichen in Befehlszeile oder anderem Text in "
 "Shellquotes"
 
-#: ../glib/gshell.c:580
+#: glib/gshell.c:580
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Text endete nach einem »\\«-Zeichen. (Der Text war »%s«)"
 
-#: ../glib/gshell.c:587
+#: glib/gshell.c:587
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "Text endete, bevor ein passendes Anführungszeichen für %c gefunden wurde. "
 "(Der Text war »%s«)"
 
-#: ../glib/gshell.c:599
+#: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Text war leer (oder enthielt nur Leerraum)"
 
-#: ../glib/gspawn.c:292
+#: glib/gspawn.c:302
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Daten vom Kindprozess konnten nicht gelesen werden (%s)"
 
-#: ../glib/gspawn.c:440
+#: glib/gspawn.c:450
 #, c-format
 msgid "Unexpected error in select() reading data from a child process (%s)"
 msgstr ""
 "Unerwarteter Fehler in select() beim Lesen von Daten eines Kindprozesses (%s)"
 
-#: ../glib/gspawn.c:525
+#: glib/gspawn.c:535
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unerwarteter Fehler in waitpid() (%s)"
 
-#: ../glib/gspawn.c:1033 ../glib/gspawn-win32.c:1318
+#: glib/gspawn.c:1043 glib/gspawn-win32.c:1318
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Der Kindprozess wurde mit Status %ld beendet"
 
-#: ../glib/gspawn.c:1041
+#: glib/gspawn.c:1051
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: ../glib/gspawn.c:1048
+#: glib/gspawn.c:1058
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: ../glib/gspawn.c:1055
+#: glib/gspawn.c:1065
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Der Kindprozess wurde gewaltsam beendet"
 
-#: ../glib/gspawn.c:1350 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347
+#: glib/gspawn.c:1360 glib/gspawn-win32.c:339 glib/gspawn-win32.c:347
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lesen aus Weiterleitung zum Kind (%s) gescheitert"
 
-#: ../glib/gspawn.c:1586
+#: glib/gspawn.c:1596
 #, c-format
-msgid "Failed to spawn child process \"%s\" (%s)"
+msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Abspalten des Kindprozesses »%s« gescheitert (%s)"
 
-#: ../glib/gspawn.c:1625
+#: glib/gspawn.c:1635
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Abspalten gescheitert (%s)"
 
-#: ../glib/gspawn.c:1774 ../glib/gspawn-win32.c:370
+#: glib/gspawn.c:1784 glib/gspawn-win32.c:370
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "In Ordner »%s« (%s) konnte nicht gewechselt werden"
 
-#: ../glib/gspawn.c:1784
+#: glib/gspawn.c:1794
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Kindprozess »%s« konnte nicht ausgeführt werden (%s)"
 
-#: ../glib/gspawn.c:1794
+#: glib/gspawn.c:1804
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Umleiten der Ausgabe oder Eingabe des Kindprozesses (%s) gescheitert"
 
-#: ../glib/gspawn.c:1803
+#: glib/gspawn.c:1813
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Abspalten des Kindprozesses gescheitert (%s)"
 
-#: ../glib/gspawn.c:1811
+#: glib/gspawn.c:1821
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unbekannter Fehler beim Ausführen des Kindprozesses »%s«"
 
-#: ../glib/gspawn.c:1835
+#: glib/gspawn.c:1845
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Es konnten nicht genug Daten von Kind-Programmkennungsweiterleitung (%s) "
 "gelesen werden"
 
-#: ../glib/gspawn-win32.c:283
+#: glib/gspawn-win32.c:283
 msgid "Failed to read data from child process"
 msgstr "Daten konnten nicht vom Kindprozess gelesen werden"
 
-#: ../glib/gspawn-win32.c:300
+#: glib/gspawn-win32.c:300
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
 "Weiterleitung für Kommunikation mit Kindprozess (%s) konnte nicht erzeugt "
 "werden"
 
-#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:381
-#: ../glib/gspawn-win32.c:500
+#: glib/gspawn-win32.c:376 glib/gspawn-win32.c:381 glib/gspawn-win32.c:500
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Kindprozess konnte nicht ausgeführt werden (%s)"
 
-#: ../glib/gspawn-win32.c:450
+#: glib/gspawn-win32.c:450
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Ungültiger Programmname: %s"
 
-#: ../glib/gspawn-win32.c:460 ../glib/gspawn-win32.c:714
+#: glib/gspawn-win32.c:460 glib/gspawn-win32.c:714
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Ungültige Zeichenkette im Argumentsvektor bei %d: %s"
 
-#: ../glib/gspawn-win32.c:471 ../glib/gspawn-win32.c:729
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:729
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Ungültige Zeichenkette in der Umgebung: %s"
 
-#: ../glib/gspawn-win32.c:710
+#: glib/gspawn-win32.c:710
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Ungültiger Arbeitsordner: %s"
 
-#: ../glib/gspawn-win32.c:772
+#: glib/gspawn-win32.c:772
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Hilfsprogramm (%s) konnte nicht ausgeführt werden"
 
-#: ../glib/gspawn-win32.c:1045
+#: glib/gspawn-win32.c:1045
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5843,170 +5799,170 @@
 "Unerwarteter Fehler in g_io_channel_win32_poll() beim Lesen aus dem "
 "Kindprozess"
 
-#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
+#: glib/gstrfuncs.c:3247 glib/gstrfuncs.c:3348
 msgid "Empty string is not a number"
 msgstr "Leere Zeichenkette ist keine Zahl"
 
-#: ../glib/gstrfuncs.c:3271
+#: glib/gstrfuncs.c:3271
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "»%s« ist keine vorzeichenbehaftete Zahl"
 
-#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
+#: glib/gstrfuncs.c:3281 glib/gstrfuncs.c:3384
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Zahl »%s« ist außerhalb des zulässigen Bereichs [%s, %s]"
 
-#: ../glib/gstrfuncs.c:3374
+#: glib/gstrfuncs.c:3374
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "»%s« ist keine vorzeichenlose Zahl"
 
-#: ../glib/gutf8.c:811
+#: glib/gutf8.c:811
 msgid "Failed to allocate memory"
 msgstr "Fehler beim Anfordern von Speicher"
 
-#: ../glib/gutf8.c:944
+#: glib/gutf8.c:944
 msgid "Character out of range for UTF-8"
 msgstr "Zeichen außerhalb des Bereiches für UTF-8"
 
-#: ../glib/gutf8.c:1045 ../glib/gutf8.c:1054 ../glib/gutf8.c:1184
-#: ../glib/gutf8.c:1193 ../glib/gutf8.c:1332 ../glib/gutf8.c:1429
+#: glib/gutf8.c:1045 glib/gutf8.c:1054 glib/gutf8.c:1184 glib/gutf8.c:1193
+#: glib/gutf8.c:1332 glib/gutf8.c:1429
 msgid "Invalid sequence in conversion input"
 msgstr "Ungültige Folge in Umwandlungseingabe"
 
-#: ../glib/gutf8.c:1343 ../glib/gutf8.c:1440
+#: glib/gutf8.c:1343 glib/gutf8.c:1440
 msgid "Character out of range for UTF-16"
 msgstr "Zeichen außerhalb des Bereiches für UTF-16"
 
-#: ../glib/gutils.c:2244
+#: glib/gutils.c:2244
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
-#: ../glib/gutils.c:2245 ../glib/gutils.c:2451
+#: glib/gutils.c:2245 glib/gutils.c:2451
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gutils.c:2246 ../glib/gutils.c:2456
+#: glib/gutils.c:2246 glib/gutils.c:2456
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gutils.c:2247 ../glib/gutils.c:2461
+#: glib/gutils.c:2247 glib/gutils.c:2461
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gutils.c:2248 ../glib/gutils.c:2466
+#: glib/gutils.c:2248 glib/gutils.c:2466
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gutils.c:2249 ../glib/gutils.c:2471
+#: glib/gutils.c:2249 glib/gutils.c:2471
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gutils.c:2252
+#: glib/gutils.c:2252
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f kiB"
 
-#: ../glib/gutils.c:2253
+#: glib/gutils.c:2253
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
-#: ../glib/gutils.c:2254
+#: glib/gutils.c:2254
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
-#: ../glib/gutils.c:2255
+#: glib/gutils.c:2255
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
-#: ../glib/gutils.c:2256
+#: glib/gutils.c:2256
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
-#: ../glib/gutils.c:2257
+#: glib/gutils.c:2257
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
-#: ../glib/gutils.c:2260
+#: glib/gutils.c:2260
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kbit"
 
-#: ../glib/gutils.c:2261
+#: glib/gutils.c:2261
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mbit"
 
-#: ../glib/gutils.c:2262
+#: glib/gutils.c:2262
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gbit"
 
-#: ../glib/gutils.c:2263
+#: glib/gutils.c:2263
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tbit"
 
-#: ../glib/gutils.c:2264
+#: glib/gutils.c:2264
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pbit"
 
-#: ../glib/gutils.c:2265
+#: glib/gutils.c:2265
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Ebit"
 
-#: ../glib/gutils.c:2268
+#: glib/gutils.c:2268
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kibit"
 
-#: ../glib/gutils.c:2269
+#: glib/gutils.c:2269
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mibit"
 
-#: ../glib/gutils.c:2270
+#: glib/gutils.c:2270
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gibit"
 
-#: ../glib/gutils.c:2271
+#: glib/gutils.c:2271
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tibit"
 
-#: ../glib/gutils.c:2272
+#: glib/gutils.c:2272
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pibit"
 
-#: ../glib/gutils.c:2273
+#: glib/gutils.c:2273
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eibit"
 
-#: ../glib/gutils.c:2307 ../glib/gutils.c:2433
+#: glib/gutils.c:2307 glib/gutils.c:2433
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u Byte"
 msgstr[1] "%u Bytes"
 
-#: ../glib/gutils.c:2311
+#: glib/gutils.c:2311
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6014,7 +5970,7 @@
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2378
+#: glib/gutils.c:2378
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6022,7 +5978,7 @@
 msgstr[1] "%s Bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: ../glib/gutils.c:2383
+#: glib/gutils.c:2383
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6034,7 +5990,7 @@
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: ../glib/gutils.c:2446
+#: glib/gutils.c:2446
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
diff --git a/po/fr.po b/po/fr.po
index edde19f..f5df7a1 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -16,10 +16,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
-"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
-"product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2018-02-16 14:39+0000\n"
-"PO-Revision-Date: 2018-02-22 09:10+0100\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2018-08-09 00:27+0000\n"
+"PO-Revision-Date: 2018-08-12 13:47+0200\n"
 "Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
 "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 "Language: fr\n"
@@ -28,132 +27,129 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n>1;\n"
 
-#: ../gio/gapplication.c:495
+#: gio/gapplication.c:496
 msgid "GApplication options"
 msgstr "Options GApplication"
 
-#: ../gio/gapplication.c:495
+#: gio/gapplication.c:496
 msgid "Show GApplication options"
 msgstr "Afficher les options GApplication"
 
-#: ../gio/gapplication.c:540
+#: gio/gapplication.c:541
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Entrer dans le mode de service GApplication (utiliser à partir des fichiers "
 "de service D-Bus)"
 
-#: ../gio/gapplication.c:552
+#: gio/gapplication.c:553
 msgid "Override the application’s ID"
 msgstr "Remplacer l’identifiant d’application"
 
-#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:569
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:495 gio/gsettings-tool.c:569
 msgid "Print help"
 msgstr "Afficher l’aide"
 
-#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489
-#: ../gio/gresource-tool.c:557
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:496 gio/gresource-tool.c:564
 msgid "[COMMAND]"
 msgstr "[COMMANDE]"
 
-#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:228
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Afficher la version"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:575
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:575
 msgid "Print version information and exit"
 msgstr "Afficher les informations de version et quitter"
 
-#: ../gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:52
 msgid "List applications"
 msgstr "Lister les applications"
 
-#: ../gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:53
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
 "Afficher la liste des applications installées activables par D-Bus (par "
 "fichiers .desktop)"
 
-#: ../gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:55
 msgid "Launch an application"
 msgstr "Lancer une application"
 
-#: ../gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:56
 msgid "Launch the application (with optional files to open)"
 msgstr "Lancer l’application (avec d’éventuels fichiers à ouvrir)"
 
-#: ../gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:57
 msgid "APPID [FILE…]"
 msgstr "ID_APP [FICHIER…]"
 
-#: ../gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:59
 msgid "Activate an action"
 msgstr "Activer une action"
 
-#: ../gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:60
 msgid "Invoke an action on the application"
 msgstr "Invoquer une action sur l’application"
 
-#: ../gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:61
 msgid "APPID ACTION [PARAMETER]"
 msgstr "ID_APP ACTION [PARAMÈTRE]"
 
-#: ../gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:63
 msgid "List available actions"
 msgstr "Afficher les actions disponibles"
 
-#: ../gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:64
 msgid "List static actions for an application (from .desktop file)"
 msgstr ""
 "Afficher la liste des actions statiques d’une application (à partir du "
 "fichier .desktop)"
 
-#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
 msgid "APPID"
 msgstr "ID_APP"
 
-#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:224
+#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:90
+#: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "COMMANDE"
 
-#: ../gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:70
 msgid "The command to print detailed help for"
 msgstr "La commande pour laquelle l’aide détaillée doit être affichée"
 
-#: ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:71
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifiant d’application au format D-Bus (ex. : org.example.viewer)"
 
-#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:665
-#: ../gio/glib-compile-resources.c:671 ../gio/glib-compile-resources.c:698
-#: ../gio/gresource-tool.c:495 ../gio/gresource-tool.c:561
+#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:737
+#: gio/glib-compile-resources.c:743 gio/glib-compile-resources.c:770
+#: gio/gresource-tool.c:502 gio/gresource-tool.c:568
 msgid "FILE"
 msgstr "FICHIER"
 
-#: ../gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:72
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr "Noms de fichiers relatifs ou absolus ou URI à ouvrir"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "ACTION"
 msgstr "ACTION"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:73
 msgid "The action name to invoke"
 msgstr "Nom de l’action à invoquer"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "PARAMETER"
 msgstr "PARAMÈTRE"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:74
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Paramètre facultatif pour l’invocation de l’action, au format GVariant"
 
-#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:661
+#: gio/gapplication-tool.c:96 gio/gresource-tool.c:533 gio/gsettings-tool.c:661
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -162,26 +158,26 @@
 "Commande inconnue %s\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:101
 msgid "Usage:\n"
 msgstr "Utilisation :\n"
 
-#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:696
+#: gio/gapplication-tool.c:114 gio/gresource-tool.c:558
+#: gio/gsettings-tool.c:696
 msgid "Arguments:\n"
 msgstr "Paramètres :\n"
 
-#: ../gio/gapplication-tool.c:133
+#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[PARAMS…]"
 
-#: ../gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:134
 #, c-format
 msgid "Commands:\n"
 msgstr "Commandes :\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: ../gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:146
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -190,7 +186,7 @@
 "Utilisez « %s help COMMANDE » pour obtenir de l’aide détaillée.\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:165
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -199,13 +195,13 @@
 "La commande %s exige un identifiant d’application à suivre directement\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:171
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "identifiant d’application non valide : « %s »\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: ../gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:182
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -214,22 +210,21 @@
 "« %s » n’accepte aucun paramètre\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:266
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "impossible de se connecter à D-Bus : %s\n"
 
-#: ../gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:286
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "erreur d’envoi du message %s à l’application : %s\n"
 
-#: ../gio/gapplication-tool.c:317
-#, c-format
+#: gio/gapplication-tool.c:317
 msgid "action name must be given after application id\n"
 msgstr "un nom d’action doit être indiqué après l’identifiant d’application\n"
 
-#: ../gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:325
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -239,27 +234,25 @@
 "les noms d’actions ne peuvent contenir que des caractères alphanumériques, "
 "« - » et « . »\n"
 
-#: ../gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:344
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "erreur d’analyse du paramètre d’action : %s\n"
 
-#: ../gio/gapplication-tool.c:356
-#, c-format
+#: gio/gapplication-tool.c:356
 msgid "actions accept a maximum of one parameter\n"
 msgstr "les actions n’acceptent pas plus d’un paramètre\n"
 
-#: ../gio/gapplication-tool.c:411
-#, c-format
+#: gio/gapplication-tool.c:411
 msgid "list-actions command takes only the application id"
 msgstr "la commande list-actions n’accepte que l’identifiant de l’application"
 
-#: ../gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:421
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "impossible de trouver le fichier desktop pour l’application %s\n"
 
-#: ../gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:466
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -268,126 +261,122 @@
 "commande non reconnue : %s\n"
 "\n"
 
-#: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498
-#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
-#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
-#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:209
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
+#: gio/ginputstream.c:1019 gio/goutputstream.c:203 gio/goutputstream.c:834
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:209
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "La valeur de comptage fournie à %s est trop grande"
 
-#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575
-#: ../gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "Le positionnement n’est pas pris en charge sur le flux de base"
 
-#: ../gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:937
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Impossible de tronquer GBufferedInputStream"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1208
-#: ../gio/giostream.c:300 ../gio/goutputstream.c:1661
+#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/goutputstream.c:1661
 msgid "Stream is already closed"
 msgstr "Le flux est déjà fermé"
 
-#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
 msgstr "La troncature n’est pas prise en charge sur le flux de base"
 
-#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
-#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:871
-#: ../gio/gsimpleasyncresult.c:897
+#: gio/gcancellable.c:317 gio/gdbusconnection.c:1840 gio/gdbusprivate.c:1402
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "L’opération a été annulée"
 
-#: ../gio/gcharsetconverter.c:260
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "Objet non valide, non initialisé"
 
-#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "Séquence multi-octet incomplète en entrée"
 
-#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "Espace insuffisant dans la destination"
 
-#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1261 ../glib/gconvert.c:454 ../glib/gconvert.c:883
-#: ../glib/giochannel.c:1557 ../glib/giochannel.c:1599
-#: ../glib/giochannel.c:2443 ../glib/gutf8.c:869 ../glib/gutf8.c:1322
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1261 glib/gconvert.c:454 glib/gconvert.c:883
+#: glib/giochannel.c:1557 glib/giochannel.c:1599 glib/giochannel.c:2443
+#: glib/gutf8.c:869 glib/gutf8.c:1322
 msgid "Invalid byte sequence in conversion input"
 msgstr "Séquence d’octets incorrecte en entrée du convertisseur"
 
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:462 ../glib/gconvert.c:797
-#: ../glib/giochannel.c:1564 ../glib/giochannel.c:2455
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:462 glib/gconvert.c:797
+#: glib/giochannel.c:1564 glib/giochannel.c:2455
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Erreur lors de la conversion : %s"
 
-#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1104
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1104
 msgid "Cancellable initialization not supported"
 msgstr "Initialisation annulable non prise en charge"
 
-#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:327
-#: ../glib/giochannel.c:1385
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:327 glib/giochannel.c:1385
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
 "La conversion du jeu de caractères « %s » vers « %s » n’est pas prise en "
 "charge"
 
-#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:331
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:331
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Impossible d’ouvrir le convertisseur de « %s » vers « %s »"
 
-#: ../gio/gcontenttype.c:358
+#: gio/gcontenttype.c:358
 #, c-format
 msgid "%s type"
 msgstr "Type %s"
 
-#: ../gio/gcontenttype-win32.c:177
+#: gio/gcontenttype-win32.c:177
 msgid "Unknown type"
 msgstr "Type inconnu"
 
-#: ../gio/gcontenttype-win32.c:179
+#: gio/gcontenttype-win32.c:179
 #, c-format
 msgid "%s filetype"
 msgstr "Type de fichier %s"
 
-#: ../gio/gcredentials.c:312 ../gio/gcredentials.c:571
+#: gio/gcredentials.c:315 gio/gcredentials.c:574
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials n’est pas implémenté sur ce système d’exploitation"
 
-#: ../gio/gcredentials.c:467
+#: gio/gcredentials.c:470
 msgid "There is no GCredentials support for your platform"
 msgstr "Il n’y a pas de prise en charge de GCredentials pour votre plate-forme"
 
-#: ../gio/gcredentials.c:513
+#: gio/gcredentials.c:516
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "GCredentials ne contient pas d’identifiant de processus sur ce système "
 "d’exploitation"
 
-#: ../gio/gcredentials.c:565
+#: gio/gcredentials.c:568
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "L’usurpation d’identité n’est pas possible sur ce système d’exploitation"
 
-#: ../gio/gdatainputstream.c:304
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Fin précoce de flux inattendue"
 
-#: ../gio/gdbusaddress.c:158 ../gio/gdbusaddress.c:246
-#: ../gio/gdbusaddress.c:327
+#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:246 gio/gdbusaddress.c:327
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clé « %s » non prise en charge dans l’élément d’adresse « %s »"
 
-#: ../gio/gdbusaddress.c:185
+#: gio/gdbusaddress.c:185
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
@@ -395,29 +384,34 @@
 "L’adresse « %s » n’est pas valide (nécessite exactement une des clés de "
 "« path », « tmpdir » ou « abstract »)"
 
-#: ../gio/gdbusaddress.c:198
+#: gio/gdbusaddress.c:198
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinaison clé/valeur sans signification dans l’élément d’adresse « %s »"
 
-#: ../gio/gdbusaddress.c:261 ../gio/gdbusaddress.c:342
+#: gio/gdbusaddress.c:261 gio/gdbusaddress.c:342
 #, c-format
 msgid "Error in address “%s” — the port attribute is malformed"
 msgstr "Erreur dans l’adresse « %s » — l’attribut du port est mal formé"
 
-#: ../gio/gdbusaddress.c:272 ../gio/gdbusaddress.c:353
+#: gio/gdbusaddress.c:272 gio/gdbusaddress.c:353
 #, c-format
 msgid "Error in address “%s” — the family attribute is malformed"
 msgstr "Erreur dans l’adresse « %s » — l’attribut de la famille est mal formé"
 
-#: ../gio/gdbusaddress.c:463
+#: gio/gdbusaddress.c:423 gio/gdbusaddress.c:673
+#, c-format
+msgid "Unknown or unsupported transport “%s” for address “%s”"
+msgstr "Transport « %s » inconnu ou non pris en charge pour l’adresse « %s »"
+
+#: gio/gdbusaddress.c:467
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 "L’élément d’adresse « %s » ne comporte pas de caractère deux-points (:)"
 
-#: ../gio/gdbusaddress.c:484
+#: gio/gdbusaddress.c:488
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -426,7 +420,7 @@
 "Le couple clé/valeur %d, « %s », dans l’élément d’adresse « %s » ne comporte "
 "pas de signe égal"
 
-#: ../gio/gdbusaddress.c:498
+#: gio/gdbusaddress.c:502
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -435,7 +429,7 @@
 "Erreur lors du décodage de la clé ou de la valeur dans le couple clé/valeur "
 "%d, « %s », dans l’élément d’adresse « %s »"
 
-#: ../gio/gdbusaddress.c:576
+#: gio/gdbusaddress.c:580
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -444,106 +438,101 @@
 "Erreur dans l’adresse « %s » — le transport Unix requiert que soit "
 "exactement définie une des clés « path » ou « abstract »"
 
-#: ../gio/gdbusaddress.c:612
+#: gio/gdbusaddress.c:616
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut de l’hôte est manquant ou mal formé"
 
-#: ../gio/gdbusaddress.c:626
+#: gio/gdbusaddress.c:630
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du port est manquant ou mal formé"
 
-#: ../gio/gdbusaddress.c:640
+#: gio/gdbusaddress.c:644
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du fichier à dénomination unique "
 "est manquant ou mal formé"
 
-#: ../gio/gdbusaddress.c:661
+#: gio/gdbusaddress.c:665
 msgid "Error auto-launching: "
 msgstr "Erreur de lancement automatique :"
 
-#: ../gio/gdbusaddress.c:669
-#, c-format
-msgid "Unknown or unsupported transport “%s” for address “%s”"
-msgstr "Transport « %s » inconnu ou non pris en charge pour l’adresse « %s »"
-
-#: ../gio/gdbusaddress.c:714
+#: gio/gdbusaddress.c:718
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 "Erreur lors de l’ouverture du fichier à dénomination unique « %s » : %s"
 
-#: ../gio/gdbusaddress.c:733
+#: gio/gdbusaddress.c:737
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erreur de lecture du fichier à dénomination unique « %s » : %s"
 
-#: ../gio/gdbusaddress.c:742
+#: gio/gdbusaddress.c:746
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erreur de lecture du fichier à dénomination unique « %s », 16 octets "
 "attendus, %d reçus"
 
-#: ../gio/gdbusaddress.c:760
+#: gio/gdbusaddress.c:764
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Erreur d’écriture du contenu du fichier à numérotation unique « %s » sur le "
 "flux :"
 
-#: ../gio/gdbusaddress.c:969
+#: gio/gdbusaddress.c:973
 msgid "The given address is empty"
 msgstr "L’adresse indiquée est vide"
 
-#: ../gio/gdbusaddress.c:1082
+#: gio/gdbusaddress.c:1086
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 "Impossible de générer dynamiquement un bus messages quand le drapeau setuid "
 "est mis"
 
-#: ../gio/gdbusaddress.c:1089
+#: gio/gdbusaddress.c:1093
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Impossible de générer dynamiquement un bus messages sans identifiant "
 "machine : "
 
-#: ../gio/gdbusaddress.c:1096
+#: gio/gdbusaddress.c:1100
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impossible de lancer automatiquement D-Bus sans $DISPLAY X11"
 
-#: ../gio/gdbusaddress.c:1138
+#: gio/gdbusaddress.c:1142
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erreur lors de la génération de la ligne de commande « %s » : "
 
-#: ../gio/gdbusaddress.c:1355
+#: gio/gdbusaddress.c:1359
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(saisissez n’importe quel caractère pour fermer cette fenêtre)\n"
 
-#: ../gio/gdbusaddress.c:1509
+#: gio/gdbusaddress.c:1513
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "La session dbus n’est pas lancée et autolaunch (le lancement automatique) a "
 "échoué"
 
-#: ../gio/gdbusaddress.c:1520
+#: gio/gdbusaddress.c:1524
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossible de déterminer l’adresse du bus de session (non pris en charge "
 "pour ce système d’exploitation)"
 
-#: ../gio/gdbusaddress.c:1658
+#: gio/gdbusaddress.c:1662 gio/gdbusconnection.c:7142
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -552,7 +541,7 @@
 "Impossible de déterminer l’adresse du bus à partir de la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE — valeur inconnue « %s »"
 
-#: ../gio/gdbusaddress.c:1667 ../gio/gdbusconnection.c:7160
+#: gio/gdbusaddress.c:1671 gio/gdbusconnection.c:7151
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -560,22 +549,22 @@
 "Impossible de déterminer l’adresse du bus étant donné que la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE n’est pas définie"
 
-#: ../gio/gdbusaddress.c:1677
+#: gio/gdbusaddress.c:1681
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Type de bus %d inconnu"
 
-#: ../gio/gdbusauth.c:293
+#: gio/gdbusauth.c:293
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Manque de contenu imprévu lors de la tentative de lecture d’une ligne"
 
-#: ../gio/gdbusauth.c:337
+#: gio/gdbusauth.c:337
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 "Manque de contenu imprévu lors de la tentative de lecture (sécurisée) d’une "
 "ligne"
 
-#: ../gio/gdbusauth.c:508
+#: gio/gdbusauth.c:481
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -583,17 +572,17 @@
 "Tous les mécanismes d’authentification disponibles ont été épuisés (tentés : "
 "%s) (disponibles : %s)"
 
-#: ../gio/gdbusauth.c:1171
+#: gio/gdbusauth.c:1144
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annulé via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:262
+#: gio/gdbusauthmechanismsha1.c:262
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr ""
 "Erreur lors de la récupération d’information sur le répertoire « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:274
+#: gio/gdbusauthmechanismsha1.c:274
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -601,24 +590,24 @@
 "Les droits d’accès au répertoire « %s » sont mal formés. Mode 0700 attendu, "
 "0%o obtenu"
 
-#: ../gio/gdbusauthmechanismsha1.c:296
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erreur lors de la création du répertoire « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:379
+#: gio/gdbusauthmechanismsha1.c:346
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en lecture : "
 
-#: ../gio/gdbusauthmechanismsha1.c:402 ../gio/gdbusauthmechanismsha1.c:720
+#: gio/gdbusauthmechanismsha1.c:369 gio/gdbusauthmechanismsha1.c:687
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La ligne %d du trousseau de clés de « %s » avec le contenu « %s » est mal "
 "formée"
 
-#: ../gio/gdbusauthmechanismsha1.c:416 ../gio/gdbusauthmechanismsha1.c:734
+#: gio/gdbusauthmechanismsha1.c:383 gio/gdbusauthmechanismsha1.c:701
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -626,7 +615,7 @@
 "Le premier jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:748
+#: gio/gdbusauthmechanismsha1.c:397 gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -634,172 +623,163 @@
 "Le deuxième jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: gio/gdbusauthmechanismsha1.c:421
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Impossible de trouver un cookie avec l’identifiant %d dans le trousseau de "
 "clés de « %s »"
 
-#: ../gio/gdbusauthmechanismsha1.c:536
+#: gio/gdbusauthmechanismsha1.c:503
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erreur lors de la destruction de l’ancien fichier verrou « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:568
+#: gio/gdbusauthmechanismsha1.c:535
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erreur lors de la création du fichier verrou « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:599
+#: gio/gdbusauthmechanismsha1.c:566
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erreur lors de la fermeture du fichier verrou (non lié) « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:610
+#: gio/gdbusauthmechanismsha1.c:577
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 "Erreur lors de la suppression du lien avec le fichier verrou « %s » : %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:687
+#: gio/gdbusauthmechanismsha1.c:654
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en écriture : "
 
-#: ../gio/gdbusauthmechanismsha1.c:883
+#: gio/gdbusauthmechanismsha1.c:850
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(en outre, le relèvement du verrou pour « %s » a aussi échoué : %s) "
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2378
+#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2369
 msgid "The connection is closed"
 msgstr "La connexion est fermée"
 
-#: ../gio/gdbusconnection.c:1879
+#: gio/gdbusconnection.c:1870
 msgid "Timeout was reached"
 msgstr "Le délai d’attente est dépassé"
 
-#: ../gio/gdbusconnection.c:2500
+#: gio/gdbusconnection.c:2491
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Marqueurs non pris en charge rencontrés lors de la construction d’une "
 "connexion côté client"
 
-#: ../gio/gdbusconnection.c:4124 ../gio/gdbusconnection.c:4471
+#: gio/gdbusconnection.c:4115 gio/gdbusconnection.c:4462
 #, c-format
 msgid ""
-"No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Pas d’interface « org.freedesktop.DBus.Properties » pour l’objet à "
 "l’emplacement %s"
 
-#: ../gio/gdbusconnection.c:4266
+#: gio/gdbusconnection.c:4257
 #, c-format
-msgid "No such property '%s'"
+msgid "No such property “%s”"
 msgstr "La propriété « %s » n’existe pas"
 
-#: ../gio/gdbusconnection.c:4278
+#: gio/gdbusconnection.c:4269
 #, c-format
-msgid "Property '%s' is not readable"
+msgid "Property “%s” is not readable"
 msgstr "La propriété « %s » ne peut pas être lue"
 
-#: ../gio/gdbusconnection.c:4289
+#: gio/gdbusconnection.c:4280
 #, c-format
-msgid "Property '%s' is not writable"
+msgid "Property “%s” is not writable"
 msgstr "La propriété « %s » ne peut pas être écrite"
 
-#: ../gio/gdbusconnection.c:4309
+#: gio/gdbusconnection.c:4300
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erreur lors de la définition de la propriété « %s » : type attendu « %s », "
 "« %s » obtenu"
 
-#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
-#: ../gio/gdbusconnection.c:6591
+#: gio/gdbusconnection.c:4405 gio/gdbusconnection.c:4613
+#: gio/gdbusconnection.c:6582
 #, c-format
-msgid "No such interface '%s'"
-msgstr "Interface « %s » non reconnue"
+msgid "No such interface “%s”"
+msgstr "L’interface « %s » n’existe pas"
 
-#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7100
+#: gio/gdbusconnection.c:4831 gio/gdbusconnection.c:7091
 #, c-format
-msgid "No such interface '%s' on object at path %s"
+msgid "No such interface “%s” on object at path %s"
 msgstr "L’interface « %s » n’existe pas pour l’objet à l’emplacement %s"
 
-#: ../gio/gdbusconnection.c:4938
+#: gio/gdbusconnection.c:4929
 #, c-format
-msgid "No such method '%s'"
+msgid "No such method “%s”"
 msgstr "La méthode « %s » n’existe pas"
 
-#: ../gio/gdbusconnection.c:4969
+#: gio/gdbusconnection.c:4960
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
+msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Le type du message, « %s », ne correspond pas au type attendu « %s »"
 
-#: ../gio/gdbusconnection.c:5167
+#: gio/gdbusconnection.c:5158
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Un objet est déjà exporté pour l’interface « %s » en « %s »"
 
-#: ../gio/gdbusconnection.c:5393
+#: gio/gdbusconnection.c:5384
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossible d’obtenir le propriété %s.%s"
 
-#: ../gio/gdbusconnection.c:5449
+#: gio/gdbusconnection.c:5440
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossible de définir la propriété %s.%s"
 
-#: ../gio/gdbusconnection.c:5627
+#: gio/gdbusconnection.c:5618
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "La méthode « %s » a renvoyé le type « %s », mais « %s » était attendu"
 
-#: ../gio/gdbusconnection.c:6702
+#: gio/gdbusconnection.c:6693
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 "La méthode « %s » sur l’interface « %s » avec la signature « %s » n’existe "
 "pas"
 
-#: ../gio/gdbusconnection.c:6823
+#: gio/gdbusconnection.c:6814
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Une sous-arborescence est déjà exportée pour « %s »"
 
-#: ../gio/gdbusconnection.c:7151
-#, c-format
-msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
-msgstr ""
-"Impossible de déterminer l’adresse du bus à partir de la variable "
-"d’environnement DBUS_STARTER_BUS_TYPE — valeur « %s » inconnue"
-
-#: ../gio/gdbusmessage.c:1246
+#: gio/gdbusmessage.c:1248
 msgid "type is INVALID"
 msgstr "le type est « INVALID »"
 
-#: ../gio/gdbusmessage.c:1257
+#: gio/gdbusmessage.c:1259
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Message de METHOD_CALL : champ d’en-tête PATH ou MEMBER manquant"
 
-#: ../gio/gdbusmessage.c:1268
+#: gio/gdbusmessage.c:1270
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Message de METHOD_RETURN : champ d’en-tête REPLY_SERIAL manquant"
 
-#: ../gio/gdbusmessage.c:1280
+#: gio/gdbusmessage.c:1282
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Message d’ERREUR : champ d’en-tête REPLY_SERIAL ou ERROR_NAME manquant"
 
-#: ../gio/gdbusmessage.c:1293
+#: gio/gdbusmessage.c:1295
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Message de SIGNAL : champ d’en-tête PATH, INTERFACE ou MEMBER manquant"
 
-#: ../gio/gdbusmessage.c:1301
+#: gio/gdbusmessage.c:1303
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -807,7 +787,7 @@
 "Message de SIGNAL : le champ d’en-tête PATH utilise la valeur réservée /org/"
 "freedesktop/DBus/Local"
 
-#: ../gio/gdbusmessage.c:1309
+#: gio/gdbusmessage.c:1311
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -815,21 +795,21 @@
 "Message de SIGNAL : le champ d’en-tête INTERFACE utilise la valeur réservée "
 "org.freedesktop.DBus.Local"
 
-#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417
+#: gio/gdbusmessage.c:1359 gio/gdbusmessage.c:1419
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Lecture de %lu octet demandée, mais seulement %lu reçu(s)"
 msgstr[1] "Lecture de %lu octets demandée, mais seulement %lu reçu(s)"
 
-#: ../gio/gdbusmessage.c:1371
+#: gio/gdbusmessage.c:1373
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Octet 00 (NUL) attendu à la fin de la chaîne « %s » mais un octet %d a été "
 "trouvé"
 
-#: ../gio/gdbusmessage.c:1390
+#: gio/gdbusmessage.c:1392
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -839,19 +819,19 @@
 "rencontrés à la position %d (longueur de la chaîne : %d octets). La chaîne "
 "UTF-8 valide jusqu’à cet endroit est « %s »"
 
-#: ../gio/gdbusmessage.c:1593
+#: gio/gdbusmessage.c:1595
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "La valeur analysée « %s » n’est pas un chemin vers un objet D-Bus valide"
 
-#: ../gio/gdbusmessage.c:1615
+#: gio/gdbusmessage.c:1617
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "La valeur analysée « %s » n’est pas une signature D-Bus valide"
 
 # 2<<26  donne 128 Mo, 2^26 donne 64 Mo, 1<<26 donne 64 Mo
-#: ../gio/gdbusmessage.c:1662
+#: gio/gdbusmessage.c:1664
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -864,7 +844,7 @@
 "Un tableau de %u octets de long a été trouvé. La longueur maximale est de "
 "2<<26 octets (64 Mo)."
 
-#: ../gio/gdbusmessage.c:1682
+#: gio/gdbusmessage.c:1684
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -873,14 +853,14 @@
 "Un tableau de type « a%c » a été trouvé, avec une longueur attendue multiple "
 "de %u octets, mais la longueur réelle est de %u octets"
 
-#: ../gio/gdbusmessage.c:1849
+#: gio/gdbusmessage.c:1851
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "La valeur « %s » analysée en tant que variant n’est pas une signature valide "
 "de D-Bus"
 
-#: ../gio/gdbusmessage.c:1873
+#: gio/gdbusmessage.c:1875
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -888,7 +868,7 @@
 "Erreur en désérialisant le GVariant en chaîne de type « %s » à partir du "
 "format de transmission D-Bus"
 
-#: ../gio/gdbusmessage.c:2055
+#: gio/gdbusmessage.c:2057
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -897,26 +877,26 @@
 "Valeur de boutisme non valide. 0x6c (« l ») ou 0x42 (« B ») attendus, mais 0x"
 "%02x trouvé"
 
-#: ../gio/gdbusmessage.c:2068
+#: gio/gdbusmessage.c:2070
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Version majeure du protocole non valide. 1 attendu, %d trouvé"
 
-#: ../gio/gdbusmessage.c:2124
+#: gio/gdbusmessage.c:2126
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "En-tête de signature trouvé avec la signature « %s », mais le corps du "
 "message est vide"
 
-#: ../gio/gdbusmessage.c:2138
+#: gio/gdbusmessage.c:2140
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "La valeur analysée « %s » n’est pas une signature valide de D-Bus (pour le "
 "corps)"
 
-#: ../gio/gdbusmessage.c:2168
+#: gio/gdbusmessage.c:2170
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -927,11 +907,11 @@
 "Pas de signature d’en-tête dans le message, mais le corps du message est de "
 "%u octets"
 
-#: ../gio/gdbusmessage.c:2178
+#: gio/gdbusmessage.c:2180
 msgid "Cannot deserialize message: "
 msgstr "Impossible de désérialiser le message : "
 
-#: ../gio/gdbusmessage.c:2519
+#: gio/gdbusmessage.c:2521
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -939,7 +919,7 @@
 "Erreur en sérialisant le GVariant en chaîne de type « %s » dans le format de "
 "transmission D-Bus"
 
-#: ../gio/gdbusmessage.c:2656
+#: gio/gdbusmessage.c:2658
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -947,18 +927,18 @@
 "Le nombre de descripteurs de fichiers dans le message (%d) diffère de celui "
 "du champ d’en-tête (%d)"
 
-#: ../gio/gdbusmessage.c:2664
+#: gio/gdbusmessage.c:2666
 msgid "Cannot serialize message: "
 msgstr "Impossible de sérialiser le message : "
 
-#: ../gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2710
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Le corps du message a la signature « %s », mais il n’y a pas d’en-tête de "
 "signature"
 
-#: ../gio/gdbusmessage.c:2718
+#: gio/gdbusmessage.c:2720
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -967,44 +947,44 @@
 "Le corps du message a une signature de type « %s », mais celle dans le champ "
 "d’en-tête est « %s »"
 
-#: ../gio/gdbusmessage.c:2734
+#: gio/gdbusmessage.c:2736
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Le corps du message est vide mais sa signature dans le champ d’en-tête est "
 "« (%s) »"
 
-#: ../gio/gdbusmessage.c:3287
+#: gio/gdbusmessage.c:3289
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Retour d’erreur avec un corps de type « %s »"
 
-#: ../gio/gdbusmessage.c:3295
+#: gio/gdbusmessage.c:3297
 msgid "Error return with empty body"
 msgstr "Retour d’erreur avec un corps vide"
 
-#: ../gio/gdbusprivate.c:2066
+#: gio/gdbusprivate.c:2066
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossible d’obtenir le profil matériel : %s"
 
-#: ../gio/gdbusprivate.c:2111
+#: gio/gdbusprivate.c:2111
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr ""
 "Chargement de /var/lib/dbus/machine-id ou /etc/machine-id impossible : "
 
-#: ../gio/gdbusproxy.c:1612
+#: gio/gdbusproxy.c:1612
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Erreur lors de l’appel de StartServiceByName pour %s : "
 
 # Guillemets anglais laissés volontairement
-#: ../gio/gdbusproxy.c:1635
+#: gio/gdbusproxy.c:1635
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Réponse %d inattendue de la méthode StartServiceByName(\"%s\")"
 
-#: ../gio/gdbusproxy.c:2726 ../gio/gdbusproxy.c:2860
+#: gio/gdbusproxy.c:2726 gio/gdbusproxy.c:2860
 msgid ""
 "Cannot invoke method; proxy is for a well-known name without an owner and "
 "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
@@ -1013,33 +993,33 @@
 "sans propriétaire alors que le proxy a été construit avec le marqueur "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: ../gio/gdbusserver.c:708
+#: gio/gdbusserver.c:708
 msgid "Abstract name space not supported"
 msgstr "L’espace de noms abstrait n’est pas pris en charge"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:795
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Impossible de définir un fichier à dénomination unique lors de la création "
 "d’un serveur"
 
-#: ../gio/gdbusserver.c:876
+#: gio/gdbusserver.c:876
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr ""
 "Erreur lors de l’écriture du fichier à dénomination unique à « %s » : %s"
 
-#: ../gio/gdbusserver.c:1047
+#: gio/gdbusserver.c:1047
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La chaîne « %s » n’est pas un GUID valide de D-Bus"
 
-#: ../gio/gdbusserver.c:1087
+#: gio/gdbusserver.c:1087
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Impossible d’écouter sur le transport « %s » non pris en charge"
 
-#: ../gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:95
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1062,54 +1042,54 @@
 "\n"
 "Utiliser « %s COMMANDE --help » pour obtenir une aide sur chaque commande.\n"
 
-#: ../gio/gdbus-tool.c:167 ../gio/gdbus-tool.c:234 ../gio/gdbus-tool.c:306
-#: ../gio/gdbus-tool.c:330 ../gio/gdbus-tool.c:811 ../gio/gdbus-tool.c:1150
-#: ../gio/gdbus-tool.c:1592
+#: gio/gdbus-tool.c:185 gio/gdbus-tool.c:252 gio/gdbus-tool.c:324
+#: gio/gdbus-tool.c:348 gio/gdbus-tool.c:834 gio/gdbus-tool.c:1171
+#: gio/gdbus-tool.c:1613
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erreur : %s\n"
 
-#: ../gio/gdbus-tool.c:178 ../gio/gdbus-tool.c:247 ../gio/gdbus-tool.c:1608
+#: gio/gdbus-tool.c:196 gio/gdbus-tool.c:265 gio/gdbus-tool.c:1629
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Erreur lors de l’analyse du XML d’introspection : %s\n"
 
-#: ../gio/gdbus-tool.c:216
+#: gio/gdbus-tool.c:234
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erreur : %s n’est pas un nom valide\n"
 
-#: ../gio/gdbus-tool.c:364
+#: gio/gdbus-tool.c:382
 msgid "Connect to the system bus"
 msgstr "Connexion au bus système"
 
-#: ../gio/gdbus-tool.c:365
+#: gio/gdbus-tool.c:383
 msgid "Connect to the session bus"
 msgstr "Connexion au bus de session"
 
-#: ../gio/gdbus-tool.c:366
+#: gio/gdbus-tool.c:384
 msgid "Connect to given D-Bus address"
 msgstr "Connexion à l’adresse D-Bus donnée"
 
-#: ../gio/gdbus-tool.c:376
+#: gio/gdbus-tool.c:394
 msgid "Connection Endpoint Options:"
 msgstr "Options de connexion au point terminal :"
 
-#: ../gio/gdbus-tool.c:377
+#: gio/gdbus-tool.c:395
 msgid "Options specifying the connection endpoint"
 msgstr "Options définissant la connexion au point terminal"
 
-#: ../gio/gdbus-tool.c:399
+#: gio/gdbus-tool.c:417
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Aucun point terminal de connexion défini"
 
-#: ../gio/gdbus-tool.c:409
+#: gio/gdbus-tool.c:427
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Plusieurs points terminaux de connexion définis"
 
-#: ../gio/gdbus-tool.c:479
+#: gio/gdbus-tool.c:497
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1117,7 +1097,7 @@
 "Avertissement : selon les données de l’examen interne, l’interface « %s » "
 "n’existe pas\n"
 
-#: ../gio/gdbus-tool.c:488
+#: gio/gdbus-tool.c:506
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1126,169 +1106,164 @@
 "Avertissement : selon les données de l’examen interne, la méthode « %s » "
 "n’existe pas sur l’interface « %s »\n"
 
-#: ../gio/gdbus-tool.c:550
+#: gio/gdbus-tool.c:568
 msgid "Optional destination for signal (unique name)"
 msgstr "Destination facultative pour le signal (nom unique)"
 
-#: ../gio/gdbus-tool.c:551
+#: gio/gdbus-tool.c:569
 msgid "Object path to emit signal on"
 msgstr "Chemin de l’objet sur lequel émettre le signal"
 
-#: ../gio/gdbus-tool.c:552
+#: gio/gdbus-tool.c:570
 msgid "Signal and interface name"
 msgstr "Noms de signal et d’interface"
 
-#: ../gio/gdbus-tool.c:587
+#: gio/gdbus-tool.c:603
 msgid "Emit a signal."
 msgstr "Émet un signal."
 
-#: ../gio/gdbus-tool.c:642 ../gio/gdbus-tool.c:944 ../gio/gdbus-tool.c:1698
-#: ../gio/gdbus-tool.c:1931 ../gio/gdbus-tool.c:2152
+#: gio/gdbus-tool.c:658 gio/gdbus-tool.c:965 gio/gdbus-tool.c:1715
+#: gio/gdbus-tool.c:1944 gio/gdbus-tool.c:2164
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Erreur de connexion : %s\n"
 
-#: ../gio/gdbus-tool.c:659 ../gio/gdbus-tool.c:961 ../gio/gdbus-tool.c:1715
-#: ../gio/gdbus-tool.c:1956
-#, c-format
-msgid "Error: Destination is not specified\n"
-msgstr "Erreur : la destination n’est pas précisée\n"
-
-#: ../gio/gdbus-tool.c:670
+#: gio/gdbus-tool.c:678
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erreur : %s n’est pas un nom unique de bus valide.\n"
 
-#: ../gio/gdbus-tool.c:685 ../gio/gdbus-tool.c:987 ../gio/gdbus-tool.c:1741
-#, c-format
+#: gio/gdbus-tool.c:697 gio/gdbus-tool.c:1008 gio/gdbus-tool.c:1758
 msgid "Error: Object path is not specified\n"
 msgstr "Erreur : le chemin pour l’objet n’est pas précisé\n"
 
-#: ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1007 ../gio/gdbus-tool.c:1761
-#: ../gio/gdbus-tool.c:2002
+#: gio/gdbus-tool.c:720 gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1778
+#: gio/gdbus-tool.c:2015
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Erreur : « %s » n’est pas un chemin d’objet valide\n"
 
-#: ../gio/gdbus-tool.c:720
-#, c-format
+#: gio/gdbus-tool.c:740
 msgid "Error: Signal name is not specified\n"
 msgstr "Erreur : le nom du signal n’est pas défini\n"
 
-#: ../gio/gdbus-tool.c:731
 # c-format
+#: gio/gdbus-tool.c:754
+#, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erreur : le nom de signal « %s » n’est pas valide\n"
 
-#: ../gio/gdbus-tool.c:743
+#: gio/gdbus-tool.c:766
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erreur : %s n’est pas un nom d’interface valide\n"
 
-#: ../gio/gdbus-tool.c:749
+#: gio/gdbus-tool.c:772
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erreur : %s n’est pas un nom de membre valide\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:786 ../gio/gdbus-tool.c:1119
+#: gio/gdbus-tool.c:809 gio/gdbus-tool.c:1140
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Erreur lors de l’analyse du paramètre %d : %s\n"
 
-#: ../gio/gdbus-tool.c:818
+#: gio/gdbus-tool.c:841
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Erreur de purge de la connexion : %s\n"
 
-#: ../gio/gdbus-tool.c:845
+#: gio/gdbus-tool.c:868
 msgid "Destination name to invoke method on"
 msgstr "Nom de la destination sur laquelle appeler une méthode"
 
-#: ../gio/gdbus-tool.c:846
+#: gio/gdbus-tool.c:869
 msgid "Object path to invoke method on"
 msgstr "Chemin de l’objet sur lequel appeler une méthode"
 
-#: ../gio/gdbus-tool.c:847
+#: gio/gdbus-tool.c:870
 msgid "Method and interface name"
 msgstr "Noms de méthode et d’interface"
 
-#: ../gio/gdbus-tool.c:848
+#: gio/gdbus-tool.c:871
 msgid "Timeout in seconds"
 msgstr "Délai d’attente en secondes"
 
-#: ../gio/gdbus-tool.c:889
+#: gio/gdbus-tool.c:910
 msgid "Invoke a method on a remote object."
 msgstr "Appeler une méthode sur un objet distant."
 
-#: ../gio/gdbus-tool.c:972 ../gio/gdbus-tool.c:1732 ../gio/gdbus-tool.c:1967
+#: gio/gdbus-tool.c:982 gio/gdbus-tool.c:1732 gio/gdbus-tool.c:1969
+msgid "Error: Destination is not specified\n"
+msgstr "Erreur : la destination n’est pas précisée\n"
+
+#: gio/gdbus-tool.c:993 gio/gdbus-tool.c:1749 gio/gdbus-tool.c:1980
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erreur : %s n’est pas un nom de bus valide\n"
 
-#: ../gio/gdbus-tool.c:1022
-#, c-format
+#: gio/gdbus-tool.c:1043
 msgid "Error: Method name is not specified\n"
 msgstr "Erreur : le nom de la méthode n’est pas défini\n"
 
-#: ../gio/gdbus-tool.c:1033
+#: gio/gdbus-tool.c:1054
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erreur : le nom de méthode « %s » n’est pas valide\n"
 
-#: ../gio/gdbus-tool.c:1111
+#: gio/gdbus-tool.c:1132
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Erreur d’analyse du paramètre %d de type « %s » : %s\n"
 
-#: ../gio/gdbus-tool.c:1555
+#: gio/gdbus-tool.c:1576
 msgid "Destination name to introspect"
 msgstr "Nom de la destination à examiner en interne"
 
-#: ../gio/gdbus-tool.c:1556
+#: gio/gdbus-tool.c:1577
 msgid "Object path to introspect"
 msgstr "Chemin de l’objet à examiner en interne"
 
-#: ../gio/gdbus-tool.c:1557
+#: gio/gdbus-tool.c:1578
 msgid "Print XML"
 msgstr "Imprimer le XML"
 
-#: ../gio/gdbus-tool.c:1558
+#: gio/gdbus-tool.c:1579
 msgid "Introspect children"
 msgstr "Examiner en interne les enfants"
 
-#: ../gio/gdbus-tool.c:1559
+#: gio/gdbus-tool.c:1580
 msgid "Only print properties"
 msgstr "N’afficher que les propriétés"
 
-#: ../gio/gdbus-tool.c:1650
+#: gio/gdbus-tool.c:1667
 msgid "Introspect a remote object."
 msgstr "Examiner en interne un objet distant."
 
-#: ../gio/gdbus-tool.c:1853
+#: gio/gdbus-tool.c:1870
 msgid "Destination name to monitor"
 msgstr "Nom de la destination à surveiller"
 
-#: ../gio/gdbus-tool.c:1854
+#: gio/gdbus-tool.c:1871
 msgid "Object path to monitor"
 msgstr "Chemin de l’objet à surveiller"
 
-#: ../gio/gdbus-tool.c:1883
+#: gio/gdbus-tool.c:1896
 msgid "Monitor a remote object."
 msgstr "Surveiller un objet distant."
 
-#: ../gio/gdbus-tool.c:1941
-#, c-format
+#: gio/gdbus-tool.c:1954
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Erreur : impossible de surveiller une connexion qui n’est pas un bus de "
 "messages\n"
 
-#: ../gio/gdbus-tool.c:2065
+#: gio/gdbus-tool.c:2078
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Service à activer avant d’attendre l’autre (nom bien connu)"
 
-#: ../gio/gdbus-tool.c:2068
+#: gio/gdbus-tool.c:2081
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1296,141 +1271,136 @@
 "Délai d’attente avant de quitter avec une erreur (secondes) ; 0 pour aucun "
 "délai (par défaut)"
 
-#: ../gio/gdbus-tool.c:2116
+#: gio/gdbus-tool.c:2129
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION…] NOM-DE-BUS"
 
-#: ../gio/gdbus-tool.c:2118
+#: gio/gdbus-tool.c:2130
 msgid "Wait for a bus name to appear."
 msgstr "Attend l’apparition d’un nom de bus."
 
-#: ../gio/gdbus-tool.c:2194
-#, c-format
+#: gio/gdbus-tool.c:2206
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Erreur : un service à activer doit être indiqué.\n"
 
-#: ../gio/gdbus-tool.c:2199
-#, c-format
+#: gio/gdbus-tool.c:2211
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Erreur : un service à attendre doit être indiqué.\n"
 
-#: ../gio/gdbus-tool.c:2204
-#, c-format
+#: gio/gdbus-tool.c:2216
 msgid "Error: Too many arguments.\n"
 msgstr "Erreur : trop de paramètres.\n"
 
-#: ../gio/gdbus-tool.c:2212 ../gio/gdbus-tool.c:2219
+#: gio/gdbus-tool.c:2224 gio/gdbus-tool.c:2231
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erreur : %s n’est pas un nom de bus bien connu valide\n"
 
-#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4566
+#: gio/gdesktopappinfo.c:2023 gio/gdesktopappinfo.c:4633
 msgid "Unnamed"
 msgstr "Sans nom"
 
 # Un fichier Desktop n’est pas forcément sur le bureau...
-#: ../gio/gdesktopappinfo.c:2411
+#: gio/gdesktopappinfo.c:2433
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Le fichier .desktop n’a pas précisé son champ Exec"
 
-#: ../gio/gdesktopappinfo.c:2701
+#: gio/gdesktopappinfo.c:2692
 msgid "Unable to find terminal required for application"
 msgstr "Impossible de trouver le terminal requis par l’application"
 
-#: ../gio/gdesktopappinfo.c:3135
+#: gio/gdesktopappinfo.c:3202
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur d’application "
 "%s : %s"
 
-#: ../gio/gdesktopappinfo.c:3139
+#: gio/gdesktopappinfo.c:3206
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur MIME %s : %s"
 
-#: ../gio/gdesktopappinfo.c:3379 ../gio/gdesktopappinfo.c:3403
+#: gio/gdesktopappinfo.c:3446 gio/gdesktopappinfo.c:3470
 msgid "Application information lacks an identifier"
 msgstr "Les informations de l’application ne comportent pas d’identifiant"
 
-#: ../gio/gdesktopappinfo.c:3637
+#: gio/gdesktopappinfo.c:3704
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossible de créer le fichier .desktop utilisateur %s"
 
-#: ../gio/gdesktopappinfo.c:3771
+#: gio/gdesktopappinfo.c:3838
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Définition personnalisée pour %s"
 
-#: ../gio/gdrive.c:417
+#: gio/gdrive.c:417
 msgid "drive doesn’t implement eject"
 msgstr "le lecteur n’implémente pas l’éjection (« eject »)"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:495
+#: gio/gdrive.c:495
 msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr ""
 "le lecteur n’implémente pas l’éjection combinée ou non (« eject » ou "
 "« eject_with_operation »)"
 
-#: ../gio/gdrive.c:571
+#: gio/gdrive.c:571
 msgid "drive doesn’t implement polling for media"
 msgstr "le lecteur n’implémente pas la scrutation du média (« polling »)"
 
-#: ../gio/gdrive.c:776
+#: gio/gdrive.c:778
 msgid "drive doesn’t implement start"
 msgstr "le lecteur n’implémente pas le démarrage (« start »)"
 
-#: ../gio/gdrive.c:878
+#: gio/gdrive.c:880
 msgid "drive doesn’t implement stop"
 msgstr "le lecteur n’implémente pas l’arrêt (« stop »)"
 
-#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317
-#: ../gio/gdummytlsbackend.c:509
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:317
+#: gio/gdummytlsbackend.c:509
 msgid "TLS support is not available"
 msgstr "La prise en charge TLS n’est pas disponible"
 
-#: ../gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:419
 msgid "DTLS support is not available"
 msgstr "La prise en charge DTLS n’est pas disponible"
 
-#: ../gio/gemblem.c:323
+#: gio/gemblem.c:323
 #, c-format
 msgid "Can’t handle version %d of GEmblem encoding"
 msgstr "Impossible de gérer la version %d du codage GEmblem"
 
-#: ../gio/gemblem.c:333
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Nombre de jetons incorrect (%d) dans le codage GEmblem"
 
-#: ../gio/gemblemedicon.c:362
+#: gio/gemblemedicon.c:362
 #, c-format
 msgid "Can’t handle version %d of GEmblemedIcon encoding"
 msgstr "Impossible de gérer la version %d du codage GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:372
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Nombre de jetons incorrect (%d) dans le codage GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:395
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Un GEmblem est attendu pour le GEmblemedIcon"
 
-#: ../gio/gfile.c:1071 ../gio/gfile.c:1309 ../gio/gfile.c:1447
-#: ../gio/gfile.c:1685 ../gio/gfile.c:1740 ../gio/gfile.c:1798
-#: ../gio/gfile.c:1882 ../gio/gfile.c:1939 ../gio/gfile.c:2003
-#: ../gio/gfile.c:2058 ../gio/gfile.c:3725 ../gio/gfile.c:3780
-#: ../gio/gfile.c:4016 ../gio/gfile.c:4058 ../gio/gfile.c:4526
-#: ../gio/gfile.c:4937 ../gio/gfile.c:5022 ../gio/gfile.c:5112
-#: ../gio/gfile.c:5209 ../gio/gfile.c:5296 ../gio/gfile.c:5397
-#: ../gio/gfile.c:7975 ../gio/gfile.c:8065 ../gio/gfile.c:8149
-#: ../gio/win32/gwinhttpfile.c:437
+#: gio/gfile.c:1076 gio/gfile.c:1314 gio/gfile.c:1452 gio/gfile.c:1690
+#: gio/gfile.c:1745 gio/gfile.c:1803 gio/gfile.c:1887 gio/gfile.c:1944
+#: gio/gfile.c:2008 gio/gfile.c:2063 gio/gfile.c:3738 gio/gfile.c:3793
+#: gio/gfile.c:4029 gio/gfile.c:4071 gio/gfile.c:4539 gio/gfile.c:4950
+#: gio/gfile.c:5035 gio/gfile.c:5125 gio/gfile.c:5222 gio/gfile.c:5309
+#: gio/gfile.c:5410 gio/gfile.c:7988 gio/gfile.c:8078 gio/gfile.c:8162
+#: gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Opération non prise en charge"
 
@@ -1438,210 +1408,210 @@
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: ../gio/gfile.c:1570
+#: gio/gfile.c:1575
 msgid "Containing mount does not exist"
 msgstr "Le point de montage conteneur n’existe pas"
 
-#: ../gio/gfile.c:2617 ../gio/glocalfile.c:2446
+#: gio/gfile.c:2622 gio/glocalfile.c:2391
 msgid "Can’t copy over directory"
 msgstr "Impossible d’écraser un répertoire"
 
-#: ../gio/gfile.c:2677
+#: gio/gfile.c:2682
 msgid "Can’t copy directory over directory"
 msgstr "Impossible d’écraser un répertoire par un autre répertoire"
 
-#: ../gio/gfile.c:2685
+#: gio/gfile.c:2690
 msgid "Target file exists"
 msgstr "Le fichier cible existe"
 
-#: ../gio/gfile.c:2704
+#: gio/gfile.c:2709
 msgid "Can’t recursively copy directory"
 msgstr "Impossible de copier récursivement un répertoire"
 
 # http://en.wikipedia.org/wiki/Splice_(system_call)
-#: ../gio/gfile.c:2979
+#: gio/gfile.c:2984
 msgid "Splice not supported"
 msgstr "L’opération « splice » n’est pas prise en charge"
 
-#: ../gio/gfile.c:2983 ../gio/gfile.c:3027
+#: gio/gfile.c:2988 gio/gfile.c:3033
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erreur lors de l’opération de « splicing » sur le fichier : %s"
 
-#: ../gio/gfile.c:3136
+#: gio/gfile.c:3149
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "La copie (reflink/clone) entre points de montage n’est pas prise en charge"
 
-#: ../gio/gfile.c:3140
+#: gio/gfile.c:3153
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "La copie (reflink/clone) n’est pas prise en charge ou n’est pas valide"
 
-#: ../gio/gfile.c:3145
+#: gio/gfile.c:3158
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "La copie (reflink/clone) n’est pas prise en charge ou n’a pas fonctionné"
 
-#: ../gio/gfile.c:3208
+#: gio/gfile.c:3221
 msgid "Can’t copy special file"
 msgstr "Impossible de copier le fichier spécial"
 
-#: ../gio/gfile.c:4006
+#: gio/gfile.c:4019
 msgid "Invalid symlink value given"
 msgstr "Valeur de lien symbolique donnée non valide"
 
-#: ../gio/gfile.c:4167
+#: gio/gfile.c:4180
 msgid "Trash not supported"
 msgstr "La corbeille n’est pas prise en charge"
 
-#: ../gio/gfile.c:4279
+#: gio/gfile.c:4292
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Les noms de fichiers ne peuvent comporter de « %c »"
 
-#: ../gio/gfile.c:6760 ../gio/gvolume.c:363
+#: gio/gfile.c:6773 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "le volume n’implémente pas le montage"
 
-#: ../gio/gfile.c:6869
+#: gio/gfile.c:6882
 msgid "No application is registered as handling this file"
 msgstr "Aucune application n’est enregistrée pour gérer ce fichier"
 
-#: ../gio/gfileenumerator.c:212
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr "L’énumérateur est fermé"
 
-#: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278
-#: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr "L’énumérateur de fichiers est en cours d’opération"
 
-#: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr "L’énumérateur de fichiers est déjà fermé"
 
-#: ../gio/gfileicon.c:236
+#: gio/gfileicon.c:236
 #, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Impossible de gérer la version %d du codage de GFileIcon"
 
-#: ../gio/gfileicon.c:246
+#: gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
 msgstr "Données d’entrée incorrectes pour GFileIcon"
 
-#: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394
-#: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164
-#: ../gio/gfileoutputstream.c:497
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
 msgid "Stream doesn’t support query_info"
 msgstr "Le flux ne prend pas en charge query_info"
 
-#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
-#: ../gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "Le positionnement n’est pas pris en charge sur le flux"
 
-#: ../gio/gfileinputstream.c:369
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr "La troncature n’est pas autorisée sur un flux d’entrée"
 
-#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr "La troncature n’est pas prise en charge sur le flux"
 
-#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
-#: ../glib/gconvert.c:1786
+#: gio/ghttpproxy.c:91 gio/gresolver.c:410 gio/gresolver.c:476
+#: glib/gconvert.c:1786
 msgid "Invalid hostname"
 msgstr "Nom d’hôte non valide"
 
-#: ../gio/ghttpproxy.c:143
+#: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
 msgstr "Mauvaise réponse du mandataire HTTP"
 
-#: ../gio/ghttpproxy.c:159
+#: gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
 msgstr "Connexion mandataire HTTP non autorisée"
 
-#: ../gio/ghttpproxy.c:164
+#: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
 msgstr "L’authentification auprès du mandataire HTTP a échoué"
 
-#: ../gio/ghttpproxy.c:167
+#: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
 msgstr "Authentification obligatoire pour le mandataire HTTP"
 
-#: ../gio/ghttpproxy.c:171
+#: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
 msgstr "La connexion au mandataire HTTP a échoué : %i"
 
-#: ../gio/ghttpproxy.c:269
+#: gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr ""
 "Le serveur mandataire HTTP a terminé la connexion de manière inattendue."
 
-#: ../gio/gicon.c:290
+#: gio/gicon.c:290
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Nombre de jetons incorrect (%d)"
 
-#: ../gio/gicon.c:310
+#: gio/gicon.c:310
 #, c-format
 msgid "No type for class name %s"
 msgstr "Aucun type pour le nom de classe %s"
 
-#: ../gio/gicon.c:320
+#: gio/gicon.c:320
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Le type %s n’implémente pas l’interface GIcon"
 
-#: ../gio/gicon.c:331
+#: gio/gicon.c:331
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Le type %s n’est pas classé"
 
-#: ../gio/gicon.c:345
+#: gio/gicon.c:345
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Numéro de version incorrect : %s"
 
-#: ../gio/gicon.c:359
+#: gio/gicon.c:359
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr ""
 "Le type %s n’implémente pas la fonction from_tokens() de l’interface GIcon"
 
-#: ../gio/gicon.c:461
+#: gio/gicon.c:461
 msgid "Can’t handle the supplied version of the icon encoding"
 msgstr "Impossible de gérer la version fournie du codage de l’icône"
 
-#: ../gio/ginetaddressmask.c:182
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "Aucune adresse indiquée"
 
-#: ../gio/ginetaddressmask.c:190
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr "La longueur %u est trop importante pour l’adresse"
 
-#: ../gio/ginetaddressmask.c:223
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr "L’adresse possède des bits définis au-delà de la longueur du préfixe"
 
-#: ../gio/ginetaddressmask.c:300
+#: gio/ginetaddressmask.c:300
 #, c-format
 msgid "Could not parse “%s” as IP address mask"
 msgstr "Impossible d’analyser « %s » comme masque d’adresse IP"
 
-#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220
-#: ../gio/gnativesocketaddress.c:109 ../gio/gunixsocketaddress.c:218
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
 msgid "Not enough space for socket address"
 msgstr "Espace insuffisant pour une adresse de connecteur réseau"
 
-#: ../gio/ginetsocketaddress.c:235
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "Adresse de connecteur réseau non prise en charge"
 
-#: ../gio/ginputstream.c:188
+#: gio/ginputstream.c:188
 msgid "Input stream doesn’t implement read"
 msgstr "Le flux en entrée n’implémente pas « read »"
 
@@ -1651,129 +1621,122 @@
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: ../gio/ginputstream.c:1218 ../gio/giostream.c:310
-#: ../gio/goutputstream.c:1671
+#: gio/ginputstream.c:1218 gio/giostream.c:310 gio/goutputstream.c:1671
 msgid "Stream has outstanding operation"
 msgstr "Le flux a une opération en cours"
 
-#: ../gio/gio-tool.c:160
+#: gio/gio-tool.c:160
 msgid "Copy with file"
 msgstr "Copier avec le fichier"
 
-#: ../gio/gio-tool.c:164
+#: gio/gio-tool.c:164
 msgid "Keep with file when moved"
 msgstr "Conserver avec le fichier lors du déplacement"
 
-#: ../gio/gio-tool.c:205
+#: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
 msgstr "« version » n’accepte aucun paramètre"
 
-#: ../gio/gio-tool.c:207 ../gio/gio-tool.c:223 ../glib/goption.c:857
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:857
 msgid "Usage:"
 msgstr "Utilisation :"
 
-#: ../gio/gio-tool.c:210
+#: gio/gio-tool.c:210
 msgid "Print version information and exit."
 msgstr "Afficher les informations de version et quitter."
 
-#: ../gio/gio-tool.c:224
-msgid "[ARGS...]"
-msgstr "[PARAMS...]"
-
-#: ../gio/gio-tool.c:226
+#: gio/gio-tool.c:226
 msgid "Commands:"
 msgstr "Commandes :"
 
-#: ../gio/gio-tool.c:229
+#: gio/gio-tool.c:229
 msgid "Concatenate files to standard output"
 msgstr "Concaténer les fichiers vers la sortie standard"
 
-#: ../gio/gio-tool.c:230
+#: gio/gio-tool.c:230
 msgid "Copy one or more files"
 msgstr "Copier un ou plusieurs fichiers"
 
-#: ../gio/gio-tool.c:231
+#: gio/gio-tool.c:231
 msgid "Show information about locations"
 msgstr "Afficher des informations à propos des emplacements"
 
-#: ../gio/gio-tool.c:232
+#: gio/gio-tool.c:232
 msgid "List the contents of locations"
 msgstr "Énumérer le contenu des emplacements"
 
-#: ../gio/gio-tool.c:233
+#: gio/gio-tool.c:233
 msgid "Get or set the handler for a mimetype"
 msgstr "Obtenir ou définir le gestionaire d’un type MIME"
 
-#: ../gio/gio-tool.c:234
+#: gio/gio-tool.c:234
 msgid "Create directories"
 msgstr "Créer des répertoires"
 
-#: ../gio/gio-tool.c:235
+#: gio/gio-tool.c:235
 msgid "Monitor files and directories for changes"
 msgstr "Surveiller les modifications de fichiers et de répertoires"
 
-#: ../gio/gio-tool.c:236
+#: gio/gio-tool.c:236
 msgid "Mount or unmount the locations"
 msgstr "Monter ou démonter les emplacements"
 
-#: ../gio/gio-tool.c:237
+#: gio/gio-tool.c:237
 msgid "Move one or more files"
 msgstr "Déplacer un ou plusieurs fichiers"
 
-#: ../gio/gio-tool.c:238
+#: gio/gio-tool.c:238
 msgid "Open files with the default application"
 msgstr "Ouvrir des fichiers avec l’application par défaut"
 
-#: ../gio/gio-tool.c:239
+#: gio/gio-tool.c:239
 msgid "Rename a file"
 msgstr "Renommer un fichier"
 
-#: ../gio/gio-tool.c:240
+#: gio/gio-tool.c:240
 msgid "Delete one or more files"
 msgstr "Supprimer un ou plusieurs fichiers"
 
-#: ../gio/gio-tool.c:241
+#: gio/gio-tool.c:241
 msgid "Read from standard input and save"
 msgstr "Lire à partir de l’entrée standard et enregistrer"
 
-#: ../gio/gio-tool.c:242
+#: gio/gio-tool.c:242
 msgid "Set a file attribute"
 msgstr "Définir un attribut de fichier"
 
-#: ../gio/gio-tool.c:243
+#: gio/gio-tool.c:243
 msgid "Move files or directories to the trash"
 msgstr "Déplacer des fichiers ou répertoires dans la corbeille"
 
-#: ../gio/gio-tool.c:244
+#: gio/gio-tool.c:244
 msgid "Lists the contents of locations in a tree"
 msgstr "Énumérer le contenu des emplacements dans une arborescence"
 
-#: ../gio/gio-tool.c:246
+#: gio/gio-tool.c:246
 #, c-format
 msgid "Use %s to get detailed help.\n"
 msgstr "Utilisez %s pour obtenir de l’aide détaillée.\n"
 
-#: ../gio/gio-tool-cat.c:87
+#: gio/gio-tool-cat.c:87
 msgid "Error writing to stdout"
 msgstr "Erreur lors de l’écriture vers stdout"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:133 ../gio/gio-tool-info.c:282
-#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
-#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
-#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
-#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
-#: ../gio/gio-tool-open.c:113 ../gio/gio-tool-remove.c:48
-#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
-#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:282 gio/gio-tool-list.c:165
+#: gio/gio-tool-mkdir.c:48 gio/gio-tool-monitor.c:37 gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:41 gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:203 gio/gio-tool-mount.c:1212 gio/gio-tool-open.c:113
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:81 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "EMPLACEMENT"
 
-#: ../gio/gio-tool-cat.c:138
+#: gio/gio-tool-cat.c:138
 msgid "Concatenate files and print to standard output."
 msgstr "Concaténer des fichiers et afficher vers la sortie standard."
 
-#: ../gio/gio-tool-cat.c:140
+#: gio/gio-tool-cat.c:140
 msgid ""
 "gio cat works just like the traditional cat utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1783,58 +1746,56 @@
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/fichier.txt."
 
-#: ../gio/gio-tool-cat.c:162 ../gio/gio-tool-info.c:313
-#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
-#: ../gio/gio-tool-open.c:139 ../gio/gio-tool-remove.c:72
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:313 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1263 gio/gio-tool-open.c:139
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:136
 msgid "No locations given"
 msgstr "Aucun emplacement indiqué"
 
-#: ../gio/gio-tool-copy.c:42 ../gio/gio-tool-move.c:38
+#: gio/gio-tool-copy.c:42 gio/gio-tool-move.c:38
 msgid "No target directory"
 msgstr "Aucun répertoire cible"
 
-#: ../gio/gio-tool-copy.c:43 ../gio/gio-tool-move.c:39
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:39
 msgid "Show progress"
 msgstr "Afficher la progression"
 
-#: ../gio/gio-tool-copy.c:44 ../gio/gio-tool-move.c:40
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:40
 msgid "Prompt before overwrite"
 msgstr "Demander avant d’écraser"
 
-#: ../gio/gio-tool-copy.c:45
+#: gio/gio-tool-copy.c:45
 msgid "Preserve all attributes"
 msgstr "Préserver tous les attributs"
 
-#: ../gio/gio-tool-copy.c:46 ../gio/gio-tool-move.c:41
-#: ../gio/gio-tool-save.c:49
+#: gio/gio-tool-copy.c:46 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr "Créer une sauvegarde des fichiers de destination existants"
 
-#: ../gio/gio-tool-copy.c:47
+#: gio/gio-tool-copy.c:47
 msgid "Never follow symbolic links"
 msgstr "Ne jamais suivre les liens symboliques"
 
-#: ../gio/gio-tool-copy.c:72 ../gio/gio-tool-move.c:67
+#: gio/gio-tool-copy.c:72 gio/gio-tool-move.c:67
 #, c-format
 msgid "Transferred %s out of %s (%s/s)"
 msgstr "%s sur %s transférés (%s/s)"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
+#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94
 msgid "SOURCE"
 msgstr "SOURCE"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
-#: ../gio/gio-tool-save.c:160
+#: gio/gio-tool-copy.c:98 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
 msgid "DESTINATION"
 msgstr "DESTINATION"
 
-#: ../gio/gio-tool-copy.c:103
+#: gio/gio-tool-copy.c:103
 msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr "Copier un ou plusieurs fichiers de SOURCE vers DESTINATION."
 
-#: ../gio/gio-tool-copy.c:105
+#: gio/gio-tool-copy.c:105
 msgid ""
 "gio copy is similar to the traditional cp utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1844,93 +1805,88 @@
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/fichier.txt."
 
-#: ../gio/gio-tool-copy.c:147
+#: gio/gio-tool-copy.c:147
 #, c-format
 msgid "Destination %s is not a directory"
 msgstr "La destination « %s » n’est pas un répertoire"
 
-#: ../gio/gio-tool-copy.c:192 ../gio/gio-tool-move.c:185
+#: gio/gio-tool-copy.c:192 gio/gio-tool-move.c:186
 #, c-format
 msgid "%s: overwrite “%s”? "
 msgstr "%s : écraser « %s » ? "
 
-#: ../gio/gio-tool-info.c:34
+#: gio/gio-tool-info.c:34
 msgid "List writable attributes"
 msgstr "Afficher les attributs en écriture"
 
-#: ../gio/gio-tool-info.c:35
+#: gio/gio-tool-info.c:35
 msgid "Get file system info"
 msgstr "Obtenir les informations du système de fichiers"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
 msgid "The attributes to get"
 msgstr "Les attributs à obtenir"
 
-#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+#: gio/gio-tool-info.c:36 gio/gio-tool-list.c:35
 msgid "ATTRIBUTES"
 msgstr "ATTRIBUTS"
 
-#: ../gio/gio-tool-info.c:37 ../gio/gio-tool-list.c:38 ../gio/gio-tool-set.c:34
+#: gio/gio-tool-info.c:37 gio/gio-tool-list.c:38 gio/gio-tool-set.c:34
 msgid "Don’t follow symbolic links"
 msgstr "Ne pas suivre les liens symboliques"
 
-#: ../gio/gio-tool-info.c:75
-#, c-format
+#: gio/gio-tool-info.c:75
 msgid "attributes:\n"
 msgstr "attributs :\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:127
+#: gio/gio-tool-info.c:127
 #, c-format
 msgid "display name: %s\n"
 msgstr "nom d’affichage : %s\n"
 
 #. Translators: This is a noun and represents and attribute of a file
-#: ../gio/gio-tool-info.c:132
+#: gio/gio-tool-info.c:132
 #, c-format
 msgid "edit name: %s\n"
 msgstr "nom d’édition : %s\n"
 
-#: ../gio/gio-tool-info.c:138
+#: gio/gio-tool-info.c:138
 #, c-format
 msgid "name: %s\n"
 msgstr "nom : %s\n"
 
-#: ../gio/gio-tool-info.c:145
+#: gio/gio-tool-info.c:145
 #, c-format
 msgid "type: %s\n"
 msgstr "type : %s\n"
 
-#: ../gio/gio-tool-info.c:151
-#, c-format
+#: gio/gio-tool-info.c:151
 msgid "size: "
 msgstr "taille : "
 
-#: ../gio/gio-tool-info.c:156
-#, c-format
+#: gio/gio-tool-info.c:156
 msgid "hidden\n"
 msgstr "caché\n"
 
-#: ../gio/gio-tool-info.c:159
+#: gio/gio-tool-info.c:159
 #, c-format
 msgid "uri: %s\n"
 msgstr "uri : %s\n"
 
-#: ../gio/gio-tool-info.c:228
-#, c-format
+#: gio/gio-tool-info.c:228
 msgid "Settable attributes:\n"
 msgstr "Attributs pouvant être définis :\n"
 
-#: ../gio/gio-tool-info.c:252
-#, c-format
+#: gio/gio-tool-info.c:252
 msgid "Writable attribute namespaces:\n"
 msgstr "Espaces de noms des attributs en écriture :\n"
 
-#: ../gio/gio-tool-info.c:287
+#: gio/gio-tool-info.c:287
 msgid "Show information about locations."
 msgstr "Afficher des informations à propos des emplacements."
 
-#: ../gio/gio-tool-info.c:289
+#: gio/gio-tool-info.c:289
 msgid ""
 "gio info is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1945,23 +1901,23 @@
 "standard::icon), par leur espace de nom (exemple : unix) ou par « * » qui\n"
 "correspond à tous les attributs"
 
-#: ../gio/gio-tool-list.c:36 ../gio/gio-tool-tree.c:32
+#: gio/gio-tool-list.c:36 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Afficher les fichiers cachés"
 
-#: ../gio/gio-tool-list.c:37
+#: gio/gio-tool-list.c:37
 msgid "Use a long listing format"
 msgstr "Utiliser une mise en forme de liste étendue"
 
-#: ../gio/gio-tool-list.c:39
+#: gio/gio-tool-list.c:39
 msgid "Print full URIs"
 msgstr "Afficher les URI complets"
 
-#: ../gio/gio-tool-list.c:170
+#: gio/gio-tool-list.c:170
 msgid "List the contents of the locations."
 msgstr "Énumérer le contenu des emplacements."
 
-#: ../gio/gio-tool-list.c:172
+#: gio/gio-tool-list.c:172
 msgid ""
 "gio list is similar to the traditional ls utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1975,19 +1931,19 @@
 "standard::icon)"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "MIMETYPE"
 msgstr "TYPE_MIME"
 
-#: ../gio/gio-tool-mime.c:71
+#: gio/gio-tool-mime.c:71
 msgid "HANDLER"
 msgstr "GESTIONNAIRE"
 
-#: ../gio/gio-tool-mime.c:76
+#: gio/gio-tool-mime.c:76
 msgid "Get or set the handler for a mimetype."
 msgstr "Obtient ou définit le gestionnaire d’un type MIME."
 
-#: ../gio/gio-tool-mime.c:78
+#: gio/gio-tool-mime.c:78
 msgid ""
 "If no handler is given, lists registered and recommended applications\n"
 "for the mimetype. If a handler is given, it is set as the default\n"
@@ -1997,62 +1953,58 @@
 "et recommandées pour le type MIME. Si un gestionnaire est indiqué, il est\n"
 "défini comme gestionnaire par défaut pour le type MIME."
 
-#: ../gio/gio-tool-mime.c:100
+#: gio/gio-tool-mime.c:100
 msgid "Must specify a single mimetype, and maybe a handler"
 msgstr ""
 "Un seul type MIME doit être indiqué, et potentiellement un gestionnaire"
 
-#: ../gio/gio-tool-mime.c:116
+#: gio/gio-tool-mime.c:116
 #, c-format
 msgid "No default applications for “%s”\n"
 msgstr "Aucune application par défaut pour « %s »\n"
 
-#: ../gio/gio-tool-mime.c:122
+#: gio/gio-tool-mime.c:122
 #, c-format
 msgid "Default application for “%s”: %s\n"
 msgstr "Application par défaut pour « %s » : %s\n"
 
-#: ../gio/gio-tool-mime.c:127
-#, c-format
+#: gio/gio-tool-mime.c:127
 msgid "Registered applications:\n"
 msgstr "Applications inscrites :\n"
 
-#: ../gio/gio-tool-mime.c:129
-#, c-format
+#: gio/gio-tool-mime.c:129
 msgid "No registered applications\n"
 msgstr "Aucune application inscrite\n"
 
-#: ../gio/gio-tool-mime.c:140
-#, c-format
+#: gio/gio-tool-mime.c:140
 msgid "Recommended applications:\n"
 msgstr "Applications recommandées :\n"
 
-#: ../gio/gio-tool-mime.c:142
-#, c-format
+#: gio/gio-tool-mime.c:142
 msgid "No recommended applications\n"
 msgstr "Aucune application recommandée\n"
 
-#: ../gio/gio-tool-mime.c:162
+#: gio/gio-tool-mime.c:162
 #, c-format
 msgid "Failed to load info for handler “%s”"
 msgstr "Le chargement des informations du gestionnaire « %s » a échoué"
 
-#: ../gio/gio-tool-mime.c:168
+#: gio/gio-tool-mime.c:168
 #, c-format
 msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
 msgstr ""
 "La définition de « %s » comme gestionnaire par défaut pour « %s » a échoué : "
 "%s\n"
 
-#: ../gio/gio-tool-mkdir.c:31
+#: gio/gio-tool-mkdir.c:31
 msgid "Create parent directories"
 msgstr "Créer les répertoires parents"
 
-#: ../gio/gio-tool-mkdir.c:52
+#: gio/gio-tool-mkdir.c:52
 msgid "Create directories."
 msgstr "Créer des répertoires."
 
-#: ../gio/gio-tool-mkdir.c:54
+#: gio/gio-tool-mkdir.c:54
 msgid ""
 "gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2062,114 +2014,138 @@
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/répertoire."
 
-#: ../gio/gio-tool-monitor.c:37
+#: gio/gio-tool-monitor.c:37
 msgid "Monitor a directory (default: depends on type)"
 msgstr "Surveille un répertoire (par défaut : en fonction du type)"
 
-#: ../gio/gio-tool-monitor.c:39
+#: gio/gio-tool-monitor.c:39
 msgid "Monitor a file (default: depends on type)"
 msgstr "Surveille un fichier (par défaut : en fonction du type)"
 
-#: ../gio/gio-tool-monitor.c:41
+#: gio/gio-tool-monitor.c:41
 msgid "Monitor a file directly (notices changes made via hardlinks)"
 msgstr ""
 "Surveille un fichier directement (détecte les modifications par liens durs)"
 
-#: ../gio/gio-tool-monitor.c:43
+#: gio/gio-tool-monitor.c:43
 msgid "Monitors a file directly, but doesn’t report changes"
 msgstr ""
 "Surveille un fichier directement, mais ne signale pas les modifications"
 
-#: ../gio/gio-tool-monitor.c:45
+#: gio/gio-tool-monitor.c:45
 msgid "Report moves and renames as simple deleted/created events"
 msgstr ""
 "Signale les déplacements et les renommages comme simples évènements "
 "suppression/création"
 
-#: ../gio/gio-tool-monitor.c:47
+#: gio/gio-tool-monitor.c:47
 msgid "Watch for mount events"
 msgstr "Surveille les événements de montage"
 
-#: ../gio/gio-tool-monitor.c:208
+#: gio/gio-tool-monitor.c:208
 msgid "Monitor files or directories for changes."
 msgstr "Surveille les modifications de fichiers ou de répertoires."
 
-#: ../gio/gio-tool-mount.c:58
+#: gio/gio-tool-mount.c:63
 msgid "Mount as mountable"
 msgstr "Monter comme montable"
 
-#: ../gio/gio-tool-mount.c:59
+#: gio/gio-tool-mount.c:64
 msgid "Mount volume with device file"
-msgstr "Monter le volume avec un fichier de périphérique"
+msgstr "Monter le volume selon le fichier de périphérique"
 
-#: ../gio/gio-tool-mount.c:59
+#: gio/gio-tool-mount.c:64 gio/gio-tool-mount.c:67
 msgid "DEVICE"
 msgstr "PÉRIPHÉRIQUE"
 
-#: ../gio/gio-tool-mount.c:60
+#: gio/gio-tool-mount.c:65
 msgid "Unmount"
 msgstr "Démonter"
 
-#: ../gio/gio-tool-mount.c:61
+#: gio/gio-tool-mount.c:66
 msgid "Eject"
 msgstr "Éjecter"
 
-#: ../gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr "Arrêter le disque selon le fichier de périphérique"
+
+#: gio/gio-tool-mount.c:68
 msgid "Unmount all mounts with the given scheme"
 msgstr "Démonter tous les montages du protocole donné"
 
-#: ../gio/gio-tool-mount.c:62
+#: gio/gio-tool-mount.c:68
 msgid "SCHEME"
 msgstr "PROTOCOLE"
 
-#: ../gio/gio-tool-mount.c:63
+#: gio/gio-tool-mount.c:69
 msgid "Ignore outstanding file operations when unmounting or ejecting"
 msgstr ""
 "Ignorer les opérations de fichier en cours lors du démontage ou de l’éjection"
 
-#: ../gio/gio-tool-mount.c:64
+#: gio/gio-tool-mount.c:70
 msgid "Use an anonymous user when authenticating"
 msgstr "Utiliser un utilisateur anonyme lors de l’authentification"
 
 #. Translator: List here is a verb as in 'List all mounts'
-#: ../gio/gio-tool-mount.c:66
+#: gio/gio-tool-mount.c:72
 msgid "List"
 msgstr "Énumérer"
 
-#: ../gio/gio-tool-mount.c:67
+#: gio/gio-tool-mount.c:73
 msgid "Monitor events"
 msgstr "Surveiller les évènements"
 
-#: ../gio/gio-tool-mount.c:68
+#: gio/gio-tool-mount.c:74
 msgid "Show extra information"
 msgstr "Afficher des informations supplémentaires"
 
-#: ../gio/gio-tool-mount.c:246 ../gio/gio-tool-mount.c:276
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr "PIM numérique lors du déverrouillage du volume VeraCrypt"
+
+#: gio/gio-tool-mount.c:75
+msgid "PIM"
+msgstr "PIM"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "Monter un volume caché TCRYPT"
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "Monter un volume système TCRYPT"
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
 msgid "Anonymous access denied"
 msgstr "Accès anonyme refusé"
 
-#: ../gio/gio-tool-mount.c:897
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr "Aucun disque correspondant au fichier de périphérique"
+
+#: gio/gio-tool-mount.c:975
 #, c-format
 msgid "Mounted %s at %s\n"
 msgstr "%s a été monté sur %s\n"
 
-#: ../gio/gio-tool-mount.c:950
+#: gio/gio-tool-mount.c:1027
 msgid "No volume for device file"
 msgstr "Aucun volume pour le fichier de périphérique"
 
-#: ../gio/gio-tool-mount.c:1145
+#: gio/gio-tool-mount.c:1216
 msgid "Mount or unmount the locations."
 msgstr "Monter ou démonter les emplacements."
 
-#: ../gio/gio-tool-move.c:42
+#: gio/gio-tool-move.c:42
 msgid "Don’t use copy and delete fallback"
 msgstr "Ne pas utiliser la copie ou la suppression de repli"
 
-#: ../gio/gio-tool-move.c:99
+#: gio/gio-tool-move.c:99
 msgid "Move one or more files from SOURCE to DEST."
 msgstr "Déplacer un ou plusieurs fichiers de SOURCE vers DEST."
 
-#: ../gio/gio-tool-move.c:101
+#: gio/gio-tool-move.c:101
 msgid ""
 "gio move is similar to the traditional mv utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -2179,12 +2155,12 @@
 "utilisant des emplacements GIO au lieu de fichiers locaux : par exemple,\n"
 "on peut indiquer un emplacement comme smb://serveur/ressource/fichier.txt"
 
-#: ../gio/gio-tool-move.c:142
+#: gio/gio-tool-move.c:143
 #, c-format
 msgid "Target %s is not a directory"
 msgstr "La cible %s n’est pas un répertoire"
 
-#: ../gio/gio-tool-open.c:118
+#: gio/gio-tool-open.c:118
 msgid ""
 "Open files with the default application that\n"
 "is registered to handle files of this type."
@@ -2192,252 +2168,257 @@
 "Ouvrir les fichiers avec l’application par défaut\n"
 "inscrite pour gérer les fichiers de ce type."
 
-#: ../gio/gio-tool-remove.c:31 ../gio/gio-tool-trash.c:31
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
 msgid "Ignore nonexistent files, never prompt"
 msgstr "Ignorer les fichiers non existants, ne jamais demander"
 
-#: ../gio/gio-tool-remove.c:52
+#: gio/gio-tool-remove.c:52
 msgid "Delete the given files."
 msgstr "Supprimer les fichiers indiqués."
 
-#: ../gio/gio-tool-rename.c:45
+#: gio/gio-tool-rename.c:45
 msgid "NAME"
 msgstr "NOM"
 
-#: ../gio/gio-tool-rename.c:50
+#: gio/gio-tool-rename.c:50
 msgid "Rename a file."
 msgstr "Renommmer un fichier."
 
-#: ../gio/gio-tool-rename.c:70
+#: gio/gio-tool-rename.c:70
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
-#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:190
-#: ../gio/gio-tool-set.c:137
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
 msgid "Too many arguments"
 msgstr "Trop de paramètres"
 
-#: ../gio/gio-tool-rename.c:95
+#: gio/gio-tool-rename.c:95
 #, c-format
 msgid "Rename successful. New uri: %s\n"
 msgstr "Le renommage a réussi. Nouvel uri : %s\n"
 
-#: ../gio/gio-tool-save.c:50
+#: gio/gio-tool-save.c:50
 msgid "Only create if not existing"
 msgstr "Créer seulement s’il n’existe pas"
 
-#: ../gio/gio-tool-save.c:51
+#: gio/gio-tool-save.c:51
 msgid "Append to end of file"
 msgstr "Ajouter à la fin du fichier"
 
-#: ../gio/gio-tool-save.c:52
+#: gio/gio-tool-save.c:52
 msgid "When creating, restrict access to the current user"
 msgstr "Lors de la création, limiter l’accès à l’utilisateur actuel"
 
-#: ../gio/gio-tool-save.c:53
+#: gio/gio-tool-save.c:53
 msgid "When replacing, replace as if the destination did not exist"
 msgstr ""
 "Lors d’un remplacement, remplacer comme si la destination n’existait pas"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:55
+#: gio/gio-tool-save.c:55
 msgid "Print new etag at end"
 msgstr "Afficher le nouvel etag à la fin"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "The etag of the file being overwritten"
 msgstr "Le etag du fichier en cours d’écrasement"
 
-#: ../gio/gio-tool-save.c:57
+#: gio/gio-tool-save.c:57
 msgid "ETAG"
 msgstr "ETAG"
 
-#: ../gio/gio-tool-save.c:113
+#: gio/gio-tool-save.c:113
 msgid "Error reading from standard input"
 msgstr "Erreur de lecture à partir de l’entrée standard"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
-#: ../gio/gio-tool-save.c:139
-#, c-format
+#: gio/gio-tool-save.c:139
 msgid "Etag not available\n"
 msgstr "Etag non disponible\n"
 
-#: ../gio/gio-tool-save.c:163
+#: gio/gio-tool-save.c:163
 msgid "Read from standard input and save to DEST."
 msgstr "Lire à partir de l’entrée standard et enregistrer vers DEST."
 
-#: ../gio/gio-tool-save.c:183
+#: gio/gio-tool-save.c:183
 msgid "No destination given"
 msgstr "Aucune destination indiquée"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "Type of the attribute"
 msgstr "Type de l’attribut"
 
-#: ../gio/gio-tool-set.c:33
+#: gio/gio-tool-set.c:33
 msgid "TYPE"
 msgstr "TYPE"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUT"
 
-#: ../gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:89
 msgid "VALUE"
 msgstr "VALEUR"
 
-#: ../gio/gio-tool-set.c:93
+#: gio/gio-tool-set.c:93
 msgid "Set a file attribute of LOCATION."
 msgstr "Définir un attribut de fichier de l’EMPLACEMENT."
 
-#: ../gio/gio-tool-set.c:113
+#: gio/gio-tool-set.c:113
 msgid "Location not specified"
 msgstr "Emplacement non indiqué"
 
-#: ../gio/gio-tool-set.c:120
+#: gio/gio-tool-set.c:120
 msgid "Attribute not specified"
 msgstr "Attribut non indiqué"
 
-#: ../gio/gio-tool-set.c:130
+#: gio/gio-tool-set.c:130
 msgid "Value not specified"
 msgstr "Valeur non indiquée"
 
-#: ../gio/gio-tool-set.c:180
+#: gio/gio-tool-set.c:180
 #, c-format
 msgid "Invalid attribute type “%s”"
 msgstr "Type d’attribut « %s » non valide"
 
-#: ../gio/gio-tool-trash.c:32
+#: gio/gio-tool-trash.c:32
 msgid "Empty the trash"
 msgstr "Vider la corbeille"
 
-#: ../gio/gio-tool-trash.c:86
+#: gio/gio-tool-trash.c:86
 msgid "Move files or directories to the trash."
 msgstr "Déplacer des fichiers ou des répertoires vers la corbeille."
 
-#: ../gio/gio-tool-tree.c:33
+#: gio/gio-tool-tree.c:33
 msgid "Follow symbolic links, mounts and shortcuts"
 msgstr "Suivre les liens symboliques, les montages et les raccourcis"
 
-#: ../gio/gio-tool-tree.c:244
+#: gio/gio-tool-tree.c:244
 msgid "List contents of directories in a tree-like format."
 msgstr ""
 "Afficher la liste du contenu de répertoires dans un format arborescent."
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
+#: gio/glib-compile-resources.c:143 gio/glib-compile-schemas.c:1515
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Élément <%s> interdit dans <%s>"
 
-#: ../gio/glib-compile-resources.c:146
+#: gio/glib-compile-resources.c:147
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Élément <%s> interdit au premier niveau"
 
-#: ../gio/glib-compile-resources.c:237
+#: gio/glib-compile-resources.c:237
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Le fichier %s apparaît plusieurs fois dans la ressource"
 
-#: ../gio/glib-compile-resources.c:248
+#: gio/glib-compile-resources.c:248
 #, c-format
 msgid "Failed to locate “%s” in any source directory"
 msgstr "La localisation de « %s » dans tous les répertoires source a échoué"
 
-#: ../gio/glib-compile-resources.c:259
+#: gio/glib-compile-resources.c:259
 #, c-format
 msgid "Failed to locate “%s” in current directory"
 msgstr "La localisation de « %s » dans le répertoire actuel a échoué"
 
-#: ../gio/glib-compile-resources.c:290
+#: gio/glib-compile-resources.c:293
 #, c-format
 msgid "Unknown processing option “%s”"
 msgstr "Option de traitement inconnue « %s »"
 
-#: ../gio/glib-compile-resources.c:308 ../gio/glib-compile-resources.c:354
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:313 gio/glib-compile-resources.c:370
+#: gio/glib-compile-resources.c:427
 #, c-format
-msgid "Failed to create temp file: %s"
-msgstr "La création du fichier temporaire a échoué : %s"
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr ""
+"Un prétraitement %s a été demandé, mais %s n'est pas défini et %s n’est pas "
+"dans le chemin PATH"
 
-#: ../gio/glib-compile-resources.c:382
+#: gio/glib-compile-resources.c:460
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Erreur de lecture du fichier %s : %s"
 
-#: ../gio/glib-compile-resources.c:402
+#: gio/glib-compile-resources.c:480
 #, c-format
 msgid "Error compressing file %s"
 msgstr "Erreur à la compression du fichier %s"
 
-#: ../gio/glib-compile-resources.c:469
+#: gio/glib-compile-resources.c:541
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "<%s> ne peut pas contenir du texte"
 
-#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
+#: gio/glib-compile-resources.c:736 gio/glib-compile-schemas.c:2138
 msgid "Show program version and exit"
 msgstr "Affiche la version du programme et quitte"
 
-#: ../gio/glib-compile-resources.c:665
-msgid "name of the output file"
-msgstr "nom du fichier de sortie"
+#: gio/glib-compile-resources.c:737
+msgid "Name of the output file"
+msgstr "Nom du fichier de sortie"
 
-#: ../gio/glib-compile-resources.c:666
+#: gio/glib-compile-resources.c:738
 msgid ""
-"The directories where files are to be read from (default to current "
+"The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
-"Les répertoires à partir desquels les fichiers seront lus (par défaut le "
-"répertoire actuel)"
+"Les répertoires à partir desquels charger les fichiers référencés dans "
+"FICHIER (par défaut le répertoire actuel)"
 
-#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
-#: ../gio/glib-compile-schemas.c:2096
+#: gio/glib-compile-resources.c:738 gio/glib-compile-schemas.c:2139
+#: gio/glib-compile-schemas.c:2168
 msgid "DIRECTORY"
 msgstr "RÉPERTOIRE"
 
-#: ../gio/glib-compile-resources.c:667
+#: gio/glib-compile-resources.c:739
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Générer la sortie dans le format sélectionné par l’extension du nom de "
 "fichier cible"
 
-#: ../gio/glib-compile-resources.c:668
+#: gio/glib-compile-resources.c:740
 msgid "Generate source header"
 msgstr "Générer l’en-tête de la source"
 
-#: ../gio/glib-compile-resources.c:669
-msgid "Generate sourcecode used to link in the resource file into your code"
+#: gio/glib-compile-resources.c:741
+msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Générer le code source utilisé pour lier vers le fichier ressource dans "
 "votre code"
 
-#: ../gio/glib-compile-resources.c:670
+#: gio/glib-compile-resources.c:742
 msgid "Generate dependency list"
 msgstr "Générer la liste des dépendances"
 
-#: ../gio/glib-compile-resources.c:671
-msgid "name of the dependency file to generate"
-msgstr "nom du fichier des dépendances à générer"
+#: gio/glib-compile-resources.c:743
+msgid "Name of the dependency file to generate"
+msgstr "Nom du fichier de dépendances à générer"
 
-#: ../gio/glib-compile-resources.c:672
+#: gio/glib-compile-resources.c:744
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclure les cibles « phony » dans le fichier de dépendances généré"
 
-#: ../gio/glib-compile-resources.c:673
+#: gio/glib-compile-resources.c:745
 msgid "Don’t automatically create and register resource"
 msgstr "Ne pas créer et enregistrer automatiquement la ressource"
 
-#: ../gio/glib-compile-resources.c:674
+#: gio/glib-compile-resources.c:746
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ne pas exporter les fonctions ; les déclarer G_GNUC_INTERNAL"
 
-#: ../gio/glib-compile-resources.c:675
+#: gio/glib-compile-resources.c:747
 msgid "C identifier name used for the generated source code"
 msgstr "Nom d’identifiant C utilisé pour le code source généré"
 
-#: ../gio/glib-compile-resources.c:701
+#: gio/glib-compile-resources.c:773
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2448,124 +2429,123 @@
 "xml\n"
 "et le fichier de ressource possède l’extension .gresource."
 
-#: ../gio/glib-compile-resources.c:723
-#, c-format
+#: gio/glib-compile-resources.c:795
 msgid "You should give exactly one file name\n"
 msgstr "Vous devez indiquer un et un seul nom de fichier\n"
 
-#: ../gio/glib-compile-schemas.c:95
+#: gio/glib-compile-schemas.c:95
 #, c-format
 msgid "nick must be a minimum of 2 characters"
 msgstr "le pseudo doit contenir au minimum 2 caractères"
 
-#: ../gio/glib-compile-schemas.c:106
+#: gio/glib-compile-schemas.c:106
 #, c-format
 msgid "Invalid numeric value"
 msgstr "Valeur numérique non valide"
 
-#: ../gio/glib-compile-schemas.c:114
+#: gio/glib-compile-schemas.c:114
 #, c-format
 msgid "<value nick='%s'/&g