Merge branch 'master' into wip/gsettings-list
diff --git a/Makefile.decl b/Makefile.decl
index d07e6d2..163fd8b 100644
--- a/Makefile.decl
+++ b/Makefile.decl
@@ -46,17 +46,23 @@
 	    GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
 	    ignore_logdir=false ; \
 	  fi ; \
+	  if test -d "$(top_srcdir)/.git" ; then \
+	    REVISION=`git describe` ; \
+	  else \
+	    REVISION=$(VERSION) ; \
+	  fi ; \
 	  for subdir in $(SUBDIRS) . ; do \
 	    test "$$subdir" = "." -o "$$subdir" = "po" || \
 	    ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
 	  done ; \
 	  $$ignore_logdir || { \
-	    echo '<?xml version="1.0"?>'            > $@.xml ; \
-	    echo '<report-collection>'             >> $@.xml ; \
-	    echo '<info>'                          >> $@.xml ; \
-	    echo '  <package>$(PACKAGE)</package>' >> $@.xml ; \
-	    echo '  <version>$(VERSION)</version>' >> $@.xml ; \
-	    echo '</info>'                         >> $@.xml ; \
+	    echo '<?xml version="1.0"?>'              > $@.xml ; \
+	    echo '<report-collection>'               >> $@.xml ; \
+	    echo '<info>'                            >> $@.xml ; \
+	    echo '  <package>$(PACKAGE)</package>'   >> $@.xml ; \
+	    echo '  <version>$(VERSION)</version>'   >> $@.xml ; \
+	    echo "  <revision>$$REVISION</revision>" >> $@.xml ; \
+	    echo '</info>'                           >> $@.xml ; \
 	    for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
 	      sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
 	    done ; \
diff --git a/NEWS b/NEWS
index 84cb200..7509821 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,92 @@
+Overview of Changes from GLib 2.27.5 to 2.27.90
+===============================================
+
+* Test reports created by gtester-report can now
+  include revision information
+
+* The g_desktop_app_info_launch_* family of functions
+  now emit a DBus signal when an application is launched.
+  Additionally, there is a new variant
+  g_desktop_app_info_launch_uris_as_manager(), which
+  gives more control over the launched process.
+
+* The memory and null GSettings backends are now available
+  as public API
+
+* g_get_locale_variants() is a new function that returns a
+  list of variants of a locale identifier
+
+* Bugs fixed:
+ 587898 I/O timeouts for GSocket
+ 606960 gio: Add extension point for informing parties...
+ 631980 Handle an optional <revision> node in the report...
+ 634569 Document that g_variant_builder_add_value consumes...
+ 635998 Make _g_compute_locale_variants public
+ 636806 Add g_{memory,null}_settings_backend_get_default
+ 637262 Need a binary DER version of ::accepted-cas
+ 637544 Skip fsync() on btrfs
+ 637720 void functions should not return a value.
+ 637738 object_interface_check_properties never actually...
+ 637759 GIOChannel: fix a crash in g_io_channel_read_chars()
+ 637852 Updates to glib.vsprops file for MSVC 2008 builds...
+ 637858 Updates to test/testglib.c...
+ 638349 parameter name of g_variant_new_* may conflict...
+
+* Translation updates:
+ Hebrew
+ Norwegian bokmål
+ Simplified Chinese
+ Spanish
+ Swedish
+ Uyghur
+ Vietnamese
+
+
+Overview of Changes from GLib 2.27.4 to 2.27.5
+==============================================
+
+* Network support:
+ - Add g_tls_certificate_verify() to verify a certificate
+ - Add GTlsConnection:use-system-certdb
+ - Other TLS api additions
+
+* GIO:
+ - Add g_io_stream_splice_async()/_finish() to splice two iostreams
+ - Add g_emblemed_icon_clear_emblems() and make GEmblemedIcon derivable
+ - Remove GPeriodic; it did not receive the necessary review and
+   integration work to declare it stable
+
+* GSequence:
+ - New methods g_sequence_lookup() and g_sequence_lookup_iter()
+
+* Bugs fixed:
+ 617254 Missing g_sequence_lookup
+ 632544 g_dbus_connection_send_message can not send a locked message...
+ 633350 g_hostname_to_ascii() ignores non-ascii dots
+ 634583 Better error reporting for g_variant_parse()
+ 635007 gsetting enum rule don't work for out-of-srcdir builds
+ 635626 GDBus message idle can execute while flushes are pending
+ 636100 Can't read GSettings:backend property
+ 636305 Typo on g_queue_remove_all() function description
+ 636311 appinfo: tweak application positioning for content-types
+ 636351 g_simple_async_result_is_valid lacks a version tag
+ 636387 gdb autoload files shadow the "dir" builtin
+ 636673 g_simple_async_report_error_in_idle should allow object...
+ 637147 Add a "delay-apply" property to GSettings
+ 637171 emblemedicon: add g_emblemed_icon_clear_emblems()
+ 637237 gapplication: plug a memory leak
+
+* Translation updates:
+ Estonian
+ Galician
+ Hebrew
+ Norwegian bokmål
+ Simplified Chinese
+ Spanish
+ Traditional Chinese
+ Vietnamese
+
+
 Overview of Changes from GLib 2.27.3 to 2.27.4
 ==============================================
 
diff --git a/build/win32/vs9/glib.vsprops b/build/win32/vs9/glib.vsprops
index ba098d4..302ce32 100644
--- a/build/win32/vs9/glib.vsprops
+++ b/build/win32/vs9/glib.vsprops
@@ -205,8 +205,9 @@
 copy ..\..\..\gio\gnetworkaddress.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gnetworkservice.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\goutputstream.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

-copy ..\..\..\gio\gperiodic.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gpermission.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gpollableinputstream.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gpollableoutputstream.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gproxy.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gproxyaddress.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gproxyaddressenumerator.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

@@ -229,8 +230,14 @@
 copy ..\..\..\gio\gsocketservice.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gsrvtarget.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gtcpconnection.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtcpwrapperconnection.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gthemedicon.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gthreadedsocketservice.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtlsbackend.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtlscertificate.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtlsclientconnection.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtlsconnection.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

+copy ..\..\..\gio\gtlsserverconnection.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gvfs.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gvolume.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

 copy ..\..\..\gio\gvolumemonitor.h $(OutDir)\include\glib-2.0\gio&#x0D;&#x0A;

diff --git a/configure.ac b/configure.ac
index 28a1f39..e901270 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 #
 m4_define([glib_major_version], [2])
 m4_define([glib_minor_version], [27])
-m4_define([glib_micro_version], [5])
+m4_define([glib_micro_version], [91])
 m4_define([glib_interface_age], [0])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -49,6 +49,7 @@
 
 AC_CONFIG_HEADER([config.h])
 AC_CONFIG_SRCDIR([glib/glib.h])
+AC_CONFIG_MACRO_DIR([m4macros])
 
 # Save this value here, since automake will set cflags later
 cflags_set=${CFLAGS+set}
@@ -224,10 +225,6 @@
               [AC_HELP_STRING([--disable-rebuilds],
                               [disable all source autogeneration rules])],,
               [enable_rebuilds=yes])
-AC_ARG_ENABLE(visibility,
-              [AC_HELP_STRING([--disable-visibility],
-                              [don't use ELF visibility attributes])],,
-              [enable_visibility=yes])
 
 if test "x$enable_threads" != "xyes"; then
   enable_threads=no
@@ -296,10 +293,6 @@
   fi
 fi
 
-if test "x$enable_visibility" = "xno"; then
-  GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DDISABLE_VISIBILITY"
-fi
-
 # Ensure MSVC-compatible struct packing convention is used when
 # compiling for Win32 with gcc.
 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
diff --git a/docs/reference/gio/gio-docs.xml b/docs/reference/gio/gio-docs.xml
index ce75643..ad1aee5 100644
--- a/docs/reference/gio/gio-docs.xml
+++ b/docs/reference/gio/gio-docs.xml
@@ -184,10 +184,6 @@
         <xi:include href="xml/gapplication.xml"/>
         <xi:include href="xml/gapplicationcommandline.xml"/>
     </chapter>
-    <chapter id="periodic">
-        <title>Periodic Timer</title>
-        <xi:include href="xml/gperiodic.xml"/>
-    </chapter>
     <chapter id="extending">
         <title>Extending GIO</title>
         <xi:include href="xml/gvfs.xml"/>
diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt
index b49d501..3448e8c 100644
--- a/docs/reference/gio/gio-sections.txt
+++ b/docs/reference/gio/gio-sections.txt
@@ -506,6 +506,7 @@
 g_emblemed_icon_get_icon
 g_emblemed_icon_get_emblems
 g_emblemed_icon_add_emblem
+g_emblemed_icon_clear_emblems
 <SUBSECTION Standard>
 GEmblemedIconClass
 G_EMBLEMED_ICON
@@ -892,9 +893,12 @@
 <SECTION>
 <FILE>giostream</FILE>
 <TITLE>GIOStream</TITLE>
+GIOStreamSpliceFlags
 GIOStream
 g_io_stream_get_input_stream
 g_io_stream_get_output_stream
+g_io_stream_splice_async
+g_io_stream_splice_finish
 g_io_stream_close
 g_io_stream_close_async
 g_io_stream_close_finish
@@ -1252,6 +1256,7 @@
 g_app_info_reset_type_associations
 g_app_info_set_as_default_for_type
 g_app_info_set_as_default_for_extension
+g_app_info_set_as_last_used_for_type
 g_app_info_add_supports_type
 g_app_info_can_remove_supports_type
 g_app_info_remove_supports_type
@@ -2153,6 +2158,7 @@
 GSettingsBackend
 GSettingsBackendClass
 G_SETTINGS_BACKEND_EXTENSION_POINT_NAME
+g_settings_backend_get_default
 g_settings_backend_changed
 g_settings_backend_path_changed
 g_settings_backend_keys_changed
@@ -2161,6 +2167,8 @@
 g_settings_backend_changed_tree
 g_settings_backend_flatten_tree
 g_keyfile_settings_backend_new
+g_memory_settings_backend_new
+g_null_settings_backend_new
 
 <SUBSECTION Standard>
 G_IS_SETTINGS_BACKEND
@@ -2933,32 +2941,6 @@
 </SECTION>
 
 <SECTION>
-<FILE>gperiodic</FILE>
-<TITLE>GPeriodic</TITLE>
-GPeriodic
-<SUBSECTION>
-g_periodic_new
-g_periodic_get_hz
-g_periodic_get_high_priority
-g_periodic_get_low_priority
-<SUBSECTION>
-GPeriodicTickFunc
-g_periodic_add
-g_periodic_remove
-<SUBSECTION>
-g_periodic_block
-g_periodic_unblock
-<SUBSECTION>
-g_periodic_damaged
-<SUBSECTION Standard>
-G_TYPE_PERIODIC
-G_PERIODIC
-G_IS_PERIODIC
-<SUBSECTION Private>
-g_periodic_get_type
-</SECTION>
-
-<SECTION>
 <FILE>gpollableinputstream</FILE>
 <TITLE>GPollableInputStream</TITLE>
 GPollableInputStream
@@ -3038,6 +3020,7 @@
 g_tls_certificate_new_from_files
 g_tls_certificate_list_new_from_file
 g_tls_certificate_get_issuer
+g_tls_certificate_verify
 <SUBSECTION Standard>
 GTlsCertificateClass
 GTlsCertificatePrivate
@@ -3058,19 +3041,20 @@
 g_tls_connection_set_certificate
 g_tls_connection_get_certificate
 g_tls_connection_get_peer_certificate
+g_tls_connection_get_peer_certificate_errors
 g_tls_connection_set_require_close_notify
 g_tls_connection_get_require_close_notify
 GTlsRehandshakeMode
 g_tls_connection_set_rehandshake_mode
 g_tls_connection_get_rehandshake_mode
+g_tls_connection_set_use_system_certdb
+g_tls_connection_get_use_system_certdb
 <SUBSECTION>
 g_tls_connection_handshake
 g_tls_connection_handshake_async
 g_tls_connection_handshake_finish
 <SUBSECTION>
-g_tls_connection_set_peer_certificate
 g_tls_connection_emit_accept_certificate
-g_tls_connection_emit_need_certificate
 <SUBSECTION Standard>
 GTlsConnectionClass
 GTlsConnectionPrivate
diff --git a/docs/reference/gio/gio.types b/docs/reference/gio/gio.types
index 76eb7e0..d631517 100644
--- a/docs/reference/gio/gio.types
+++ b/docs/reference/gio/gio.types
@@ -74,7 +74,6 @@
 g_output_stream_get_type
 g_output_stream_splice_flags_get_type
 g_password_save_get_type
-g_periodic_get_type
 g_permission_get_type
 g_pollable_input_stream_get_type
 g_pollable_output_stream_get_type
diff --git a/docs/reference/gio/overview.xml b/docs/reference/gio/overview.xml
index 58ce317..a6e327b 100644
--- a/docs/reference/gio/overview.xml
+++ b/docs/reference/gio/overview.xml
@@ -247,14 +247,13 @@
     </formalpara>
 
     <formalpara>
-      <title><envar>GIO_USE_URI_ASSOCIATION</envar></title>
+      <title><envar>GIO_USE_TLS</envar></title>
 
       <para>
-        This variable can be set to the name of a #GDesktopAppInfoLookup
+        This variable can be set to the name of a #GTlsBackend
         implementation to override the default for debugging purposes.
-        GIO does not include a #GDesktopAppInfoLookup implementation,
-        the GConf-based implementation in the gvfs module has the name
-        "gconf".
+        GIO does not include a #GTlsBackend implementation, the gnutls-based
+        implementation in the glib-networking module has the name "gnutls".
       </para>
     </formalpara>
 
diff --git a/docs/reference/glib/building.sgml b/docs/reference/glib/building.sgml
index 6ba280a..8b643e0 100644
--- a/docs/reference/glib/building.sgml
+++ b/docs/reference/glib/building.sgml
@@ -232,8 +232,8 @@
              <arg>--enable-included-printf</arg>
           </group>
 	  <group>
-             <arg>--disable-visibility</arg>
-             <arg>--enable-visibility</arg>
+             <arg>--disable-Bsymbolic</arg>
+             <arg>--enable-Bsymbolic</arg>
           </group>
           <group>
             <arg>--disable-gtk-doc</arg>
@@ -510,19 +510,18 @@
       </formalpara>
 
       <formalpara>
-         <title><systemitem>--disable-visibility</systemitem> and
-           <systemitem>--enable-visibility</systemitem></title>
+         <title><systemitem>--disable-Bsymbolic</systemitem> and
+           <systemitem>--enable-Bsymbolic</systemitem></title>
 
         <para>
-          By default, GLib uses ELF visibility attributes to optimize
-          PLT table entries if the compiler supports ELF visibility
-          attributes. A side-effect of the way in which this is currently
-          implemented is that any  header change forces a full
-          recompilation, and missing includes may go unnoticed.
-          Therefore, it makes sense to turn this feature off while
-          doing GLib development, even if the compiler supports ELF
-          visibility attributes. The <option>--disable-visibility</option>
-          option allows to do that.
+          By default, GLib uses the -Bsymbolic-functions linker
+          flag to avoid intra-library PLT jumps. A side-effect
+          of this is that it is no longer possible to override
+          internal uses of GLib functions with
+          <envvar>LD_PRELOAD</envvar>. Therefore, it may make
+          sense to turn this feature off in some situations.
+          The <option>--disable-Bsymbolic</option> option allows
+          to do that.
         </para>
       </formalpara>
 
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index 6540fe8..c45ee67 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -2166,6 +2166,8 @@
 g_sequence_move_range
 g_sequence_search
 g_sequence_search_iter
+g_sequence_lookup
+g_sequence_lookup_iter
 
 <SUBSECTION>
 g_sequence_get
@@ -2728,6 +2730,7 @@
 g_strip_context
 <SUBSECTION>
 g_get_language_names
+g_get_locale_variants
 </SECTION>
 
 <SECTION>
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 89aa162..0fa675f 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -116,9 +116,7 @@
 	gdelayedsettingsbackend.h	\
 	gdelayedsettingsbackend.c	\
 	gkeyfilesettingsbackend.c	\
-	gmemorysettingsbackend.h	\
 	gmemorysettingsbackend.c	\
-	gnullsettingsbackend.h		\
 	gnullsettingsbackend.c		\
 	gsettingsbackendinternal.h	\
 	gsettingsbackend.c		\
@@ -348,7 +346,6 @@
 	gnetworkingprivate.h	\
 	gnetworkservice.c	\
 	goutputstream.c 	\
-	gperiodic.c		\
 	gpermission.c 		\
 	gpollableinputstream.c 	\
 	gpollableoutputstream.c \
@@ -510,7 +507,6 @@
 	gnetworkaddress.h	\
 	gnetworkservice.h	\
 	goutputstream.h 	\
-	gperiodic.h		\
 	gpermission.h 		\
 	gpollableinputstream.h 	\
 	gpollableoutputstream.h \
diff --git a/gio/gaction.c b/gio/gaction.c
index 6c2ee1d..15fe23a 100644
--- a/gio/gaction.c
+++ b/gio/gaction.c
@@ -77,7 +77,8 @@
                                                             P_("Action Name"),
                                                             P_("The name used to invoke the action"),
                                                             NULL,
-                                                            G_PARAM_READABLE |
+                                                            G_PARAM_READWRITE |
+                                                            G_PARAM_CONSTRUCT_ONLY |
                                                             G_PARAM_STATIC_STRINGS));
 
   /**
@@ -93,7 +94,8 @@
                                                            P_("Parameter Type"),
                                                            P_("The type of GVariant passed to activate()"),
                                                            G_TYPE_VARIANT_TYPE,
-                                                           G_PARAM_READABLE |
+                                                           G_PARAM_READWRITE |
+                                                           G_PARAM_CONSTRUCT_ONLY |
                                                            G_PARAM_STATIC_STRINGS));
 
   /**
@@ -111,7 +113,8 @@
                                                              P_("Enabled"),
                                                              P_("If the action can be activated"),
                                                              TRUE,
-                                                             G_PARAM_READABLE |
+                                                             G_PARAM_CONSTRUCT |
+                                                             G_PARAM_READWRITE |
                                                              G_PARAM_STATIC_STRINGS));
 
   /**
diff --git a/gio/gappinfo.c b/gio/gappinfo.c
index 755731e..7557ce5 100644
--- a/gio/gappinfo.c
+++ b/gio/gappinfo.c
@@ -308,6 +308,33 @@
   return (* iface->set_as_default_for_type) (appinfo, content_type, error);
 }
 
+/**
+ * g_app_info_set_as_last_used_for_type:
+ * @appinfo: a #GAppInfo.
+ * @content_type: the content type.
+ * @error: a #GError.
+ * 
+ * Sets the application as the last used application for a given type.
+ * This will make the application appear as first in the list returned by
+ * #g_app_info_get_recommended_for_type, regardless of the default application
+ * for that content type.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ **/
+gboolean
+g_app_info_set_as_last_used_for_type (GAppInfo    *appinfo,
+                                      const char  *content_type,
+                                      GError     **error)
+{
+  GAppInfoIface *iface;
+  
+  g_return_val_if_fail (G_IS_APP_INFO (appinfo), FALSE);
+  g_return_val_if_fail (content_type != NULL, FALSE);
+
+  iface = G_APP_INFO_GET_IFACE (appinfo);
+
+  return (* iface->set_as_last_used_for_type) (appinfo, content_type, error);
+}
 
 /**
  * g_app_info_set_as_default_for_extension:
@@ -548,7 +575,7 @@
 /**
  * g_app_info_launch_uris:
  * @appinfo: a #GAppInfo
- * @uris: (element-type char*): a #GList containing URIs to launch.
+ * @uris: (element-type utf8): a #GList containing URIs to launch.
  * @launch_context: (allow-none): a #GAppLaunchContext or %NULL
  * @error: a #GError
  * 
@@ -605,7 +632,7 @@
 /**
  * g_app_info_launch_default_for_uri:
  * @uri: the uri to show
- * @launch_context: an optional #GAppLaunchContext.
+ * @launch_context: (allow-none): an optional #GAppLaunchContext.
  * @error: a #GError.
  *
  * Utility function that launches the default application
diff --git a/gio/gappinfo.h b/gio/gappinfo.h
index a52e216..d752d44 100644
--- a/gio/gappinfo.h
+++ b/gio/gappinfo.h
@@ -99,7 +99,7 @@
   const char * (* get_executable)               (GAppInfo           *appinfo);
   GIcon *      (* get_icon)                     (GAppInfo           *appinfo);
   gboolean     (* launch)                       (GAppInfo           *appinfo,
-                                                 GList              *filenames,
+                                                 GList              *files,
                                                  GAppLaunchContext  *launch_context,
                                                  GError            **error);
   gboolean     (* supports_uris)                (GAppInfo           *appinfo);
@@ -128,6 +128,9 @@
   gboolean     (* do_delete)                    (GAppInfo           *appinfo);
   const char * (* get_commandline)              (GAppInfo           *appinfo);
   const char * (* get_display_name)             (GAppInfo           *appinfo);
+  gboolean     (* set_as_last_used_for_type)    (GAppInfo           *appinfo,
+                                                 const char         *content_type,
+                                                 GError            **error);
 };
 
 GType       g_app_info_get_type                     (void) G_GNUC_CONST;
@@ -173,6 +176,10 @@
 gboolean    g_app_info_can_delete                   (GAppInfo   *appinfo);
 gboolean    g_app_info_delete                       (GAppInfo   *appinfo);
 
+gboolean    g_app_info_set_as_last_used_for_type    (GAppInfo             *appinfo,
+						     const char           *content_type,
+						     GError              **error);
+
 GList *   g_app_info_get_all                     (void);
 GList *   g_app_info_get_all_for_type            (const char  *content_type);
 GList *   g_app_info_get_recommended_for_type    (const gchar *content_type);
diff --git a/gio/gapplication.c b/gio/gapplication.c
index da9d54d..6ad23d0 100644
--- a/gio/gapplication.c
+++ b/gio/gapplication.c
@@ -357,7 +357,7 @@
 /**
  * g_application_set_action_group:
  * @application: a #GApplication
- * @action_group: a #GActionGroup, or %NULL
+ * @action_group: (allow-none): a #GActionGroup, or %NULL
  *
  * Sets or unsets the group of actions associated with the application.
  *
@@ -545,7 +545,7 @@
   /**
    * GApplication::open:
    * @application: the application
-   * @files: an array of #GFile objects
+   * @files: (array length=n_files) (element-type GFile): an array of #GFiles
    * @n_files: the length of @files
    * @hint: a hint provided by the calling instance
    *
@@ -1047,7 +1047,7 @@
 /**
  * g_application_open:
  * @application: a #GApplication
- * @files: an array of #GFiles to open
+ * @files: (array length=n_files): an array of #GFiles to open
  * @n_files: the length of the @files array
  * @hint: a hint (or ""), but never %NULL
  *
@@ -1094,7 +1094,7 @@
  * g_application_run:
  * @application: a #GApplication
  * @argc: the argc from main()
- * @argv: the argv from main()
+ * @argv: (array length=argc): the argv from main()
  * @returns: the exit status
  *
  * Runs the application.
diff --git a/gio/gapplicationcommandline.c b/gio/gapplicationcommandline.c
index c52398c..b8d788a 100644
--- a/gio/gapplicationcommandline.c
+++ b/gio/gapplicationcommandline.c
@@ -249,7 +249,7 @@
 /**
  * g_application_command_line_get_arguments:
  * @cmdline: a #GApplicationCommandLine
- * @argc: the length of the arguments array, or %NULL
+ * @argc: (out): the length of the arguments array, or %NULL
  *
  * Gets the list of arguments that was passed on the command line.
  *
@@ -258,7 +258,8 @@
  * The return value is %NULL-terminated and should be freed using
  * g_strfreev().
  *
- * Returns: the string array containing the arguments (the argv)
+ * Returns: (array length=argc) (transfer full): the string array
+ * containing the arguments (the argv)
  *
  * Since: 2.28
  **/
@@ -321,7 +322,8 @@
  * The return value should not be modified or freed and is valid for as
  * long as @cmdline exists.
  *
- * Returns: the environment strings, or %NULL if they were not sent
+ * Returns: (array zero-terminated=1) (transfer none): the environment
+ * strings, or %NULL if they were not sent
  * 
  * Since: 2.28
  **/
diff --git a/gio/gapplicationimpl-dbus.c b/gio/gapplicationimpl-dbus.c
index c9f4306..406b839 100644
--- a/gio/gapplicationimpl-dbus.c
+++ b/gio/gapplicationimpl-dbus.c
@@ -328,6 +328,8 @@
 
       g_dbus_method_invocation_return_value (invocation,
                                              g_variant_builder_end (&builder));
+
+      g_strfreev (actions);
     }
 
   else if (strcmp (method_name, "SetState") == 0)
@@ -666,7 +668,7 @@
           g_free (impl->object_path);
 
           g_slice_free (GApplicationImpl, impl);
-          impl = NULL;
+          return NULL;
         }
     }
 
@@ -674,7 +676,7 @@
    * This also serves as a mechanism to ensure that the primary exists
    * (ie: DBus service files installed correctly, etc).
    */
-  impl->signal_id = 
+  impl->signal_id =
     g_dbus_connection_signal_subscribe (impl->session_bus, impl->bus_name,
                                         "org.gtk.Actions", NULL,
                                         impl->object_path, NULL,
diff --git a/gio/gasyncresult.h b/gio/gasyncresult.h
index 1614586..ade63c4 100644
--- a/gio/gasyncresult.h
+++ b/gio/gasyncresult.h
@@ -59,8 +59,8 @@
 
   /* Virtual Table */
 
-  gpointer  (* get_user_data)     (GAsyncResult *async_result);
-  GObject * (* get_source_object) (GAsyncResult *async_result);
+  gpointer  (* get_user_data)     (GAsyncResult *res);
+  GObject * (* get_source_object) (GAsyncResult *res);
 };
 
 GType    g_async_result_get_type          (void) G_GNUC_CONST;
diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c
index f79787c..711c8d3 100644
--- a/gio/gbufferedinputstream.c
+++ b/gio/gbufferedinputstream.c
@@ -360,7 +360,7 @@
  * g_buffered_input_stream_fill:
  * @stream: a #GBufferedInputStream
  * @count: the number of bytes that will be read from the stream
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to read @count bytes from the stream into the buffer.
@@ -447,9 +447,9 @@
  * @count: the number of bytes that will be read from the stream
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request
- * @cancellable: optional #GCancellable object
- * @callback: a #GAsyncReadyCallback
- * @user_data: a #gpointer
+ * @cancellable: (allow-none): optional #GCancellable object
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): a #gpointer
  *
  * Reads data into @stream's buffer asynchronously, up to @count size.
  * @io_priority can be used to prioritize reads. For the synchronous
@@ -602,13 +602,14 @@
 /**
  * g_buffered_input_stream_peek_buffer:
  * @stream: a #GBufferedInputStream
- * @count: a #gsize to get the number of bytes available in the buffer
+ * @count: (out): a #gsize to get the number of bytes available in the buffer
  *
  * Returns the buffer with the currently available bytes. The returned
  * buffer must not be modified and will become invalid when reading from
  * the stream or filling the buffer.
  *
- * Returns: read-only buffer
+ * Returns: (array length=count) (element-type guint8) (transfer none):
+ *          read-only buffer
  */
 const void*
 g_buffered_input_stream_peek_buffer (GBufferedInputStream *stream,
@@ -839,7 +840,7 @@
 /**
  * g_buffered_input_stream_read_byte:
  * @stream: a #GBufferedInputStream
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to read a single byte from the stream or the buffer. Will block
diff --git a/gio/gcancellable.c b/gio/gcancellable.c
index 65e15bc..c37baff 100644
--- a/gio/gcancellable.c
+++ b/gio/gcancellable.c
@@ -288,7 +288,7 @@
  * @cancellable: a #GCancellable object
  *
  * Pushes @cancellable onto the cancellable stack. The current
- * cancllable can then be recieved using g_cancellable_get_current().
+ * cancellable can then be recieved using g_cancellable_get_current().
  *
  * This is useful when implementing cancellable operations in
  * code that does not allow you to pass down the cancellable object.
@@ -852,7 +852,7 @@
 };
 
 /**
- * g_cancellable_source_new:
+ * g_cancellable_source_new: (skip)
  * @cancellable: a #GCancellable, or %NULL
  *
  * Creates a source that triggers if @cancellable is cancelled and
@@ -863,7 +863,7 @@
  * For convenience, you can call this with a %NULL #GCancellable,
  * in which case the source will never trigger.
  *
- * Return value: the new #GSource.
+ * Return value: (transfer full): the new #GSource.
  *
  * Since: 2.28
  */
diff --git a/gio/gcontenttype.c b/gio/gcontenttype.c
index dfbe868..3856a2d 100644
--- a/gio/gcontenttype.c
+++ b/gio/gcontenttype.c
@@ -1651,8 +1651,8 @@
  * This function is useful in the implementation of
  * g_mount_guess_content_type().
  *
- * Returns: (transfer full): an %NULL-terminated array of zero or more content types,
- *     or %NULL. Free with g_strfreev()
+ * Returns: (transfer full) (array zero-terminated=1): an %NULL-terminated
+ *     array of zero or more content types, or %NULL. Free with g_strfreev()
  *
  * Since: 2.18
  */
diff --git a/gio/gconverter.c b/gio/gconverter.c
index 74e90c2..1dcf6aa 100644
--- a/gio/gconverter.c
+++ b/gio/gconverter.c
@@ -54,13 +54,14 @@
 /**
  * g_converter_convert:
  * @converter: a #GConverter.
- * @inbuf: the buffer containing the data to convert.
+ * @inbuf: (array length=inbuf_size) (element-type guint8): the buffer
+ *         containing the data to convert.
  * @inbuf_size: the number of bytes in @inbuf
  * @outbuf: a buffer to write converted data in.
  * @outbuf_size: the number of bytes in @outbuf, must be at least one
  * @flags: a #GConvertFlags controlling the conversion details
- * @bytes_read: will be set to the number of bytes read from @inbuf on success
- * @bytes_written: will be set to the number of bytes written to @outbuf on success
+ * @bytes_read: (out): will be set to the number of bytes read from @inbuf on success
+ * @bytes_written: (out): will be set to the number of bytes written to @outbuf on success
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * This is the main operation used when converting data. It is to be called
diff --git a/gio/gdatainputstream.c b/gio/gdatainputstream.c
index 7a7af9a..2ab6bd6 100644
--- a/gio/gdatainputstream.c
+++ b/gio/gdatainputstream.c
@@ -325,7 +325,7 @@
 /**
  * g_data_input_stream_read_byte:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads an unsigned 8-bit/1-byte value from @stream.
@@ -352,7 +352,7 @@
 /**
  * g_data_input_stream_read_int16:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads a 16-bit/2-byte value from @stream.
@@ -396,7 +396,7 @@
 /**
  * g_data_input_stream_read_uint16:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  *
  * Reads an unsigned 16-bit/2-byte value from @stream.
@@ -440,7 +440,7 @@
 /**
  * g_data_input_stream_read_int32:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads a signed 32-bit/4-byte value from @stream.
@@ -488,7 +488,7 @@
 /**
  * g_data_input_stream_read_uint32:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads an unsigned 32-bit/4-byte value from @stream.
@@ -536,7 +536,7 @@
 /**
  * g_data_input_stream_read_int64:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads a 64-bit/8-byte value from @stream.
@@ -584,7 +584,7 @@
 /**
  * g_data_input_stream_read_uint64:
  * @stream: a given #GDataInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  * 
  * Reads an unsigned 64-bit/8-byte value from @stream.
@@ -730,8 +730,8 @@
 /**
  * g_data_input_stream_read_line:
  * @stream: a given #GDataInputStream.
- * @length: a #gsize to get the length of the data read in.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @length: (out): a #gsize to get the length of the data read in.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  *
  * Reads a line from the data input stream.
@@ -740,10 +740,11 @@
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a string with the line that was read in (without the newlines).
- *     Set @length to a #gsize to get the length of the read line.
- *     On an error, it will return %NULL and @error will be set. If there's no
- *     content to read, it will still return %NULL, but @error won't be set.
+ * Returns: (transfer full): a string with the line that was read in
+ *     (without the newlines).  Set @length to a #gsize to get the
+ *     length of the read line.  On an error, it will return %NULL and
+ *     @error will be set. If there's no content to read, it will
+ *     still return %NULL, but @error won't be set.
  **/
 char *
 g_data_input_stream_read_line (GDataInputStream  *stream,
@@ -852,8 +853,8 @@
  * g_data_input_stream_read_until:
  * @stream: a given #GDataInputStream.
  * @stop_chars: characters to terminate the read.
- * @length: a #gsize to get the length of the data read in.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @length: (out): a #gsize to get the length of the data read in.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  *
  * Reads a string from the data input stream, up to the first
@@ -868,9 +869,10 @@
  * g_data_input_stream_read_upto() instead, but note that that function
  * does not consume the stop character.
  *
- * Returns: a string with the data that was read before encountering
- *     any of the stop characters. Set @length to a #gsize to get the length
- *     of the string. This function will return %NULL on an error.
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
  */
 char *
 g_data_input_stream_read_until (GDataInputStream  *stream,
@@ -1099,9 +1101,9 @@
  * @stream: a given #GDataInputStream.
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied.
- * @user_data: the data to pass to callback function.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
  *
  * The asynchronous version of g_data_input_stream_read_line().  It is
  * an error to have two outstanding calls to this function.
@@ -1133,9 +1135,9 @@
  * @stop_chars: characters to terminate the read.
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied.
- * @user_data: the data to pass to callback function.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
  *
  * The asynchronous version of g_data_input_stream_read_until().
  * It is an error to have two outstanding calls to this function.
@@ -1176,16 +1178,17 @@
  * g_data_input_stream_read_line_finish:
  * @stream: a given #GDataInputStream.
  * @result: the #GAsyncResult that was provided to the callback.
- * @length: a #gsize to get the length of the data read in.
+ * @length: (out): a #gsize to get the length of the data read in.
  * @error: #GError for error reporting.
  *
  * Finish an asynchronous call started by
  * g_data_input_stream_read_line_async().
  *
- * Returns: a string with the line that was read in (without the newlines).
- *     Set @length to a #gsize to get the length of the read line.
- *     On an error, it will return %NULL and @error will be set. If there's no
- *     content to read, it will still return %NULL, but @error won't be set.
+ * Returns: (transfer full): a string with the line that was read in
+ *     (without the newlines).  Set @length to a #gsize to get the
+ *     length of the read line.  On an error, it will return %NULL and
+ *     @error will be set. If there's no content to read, it will
+ *     still return %NULL, but @error won't be set.
  *
  * Since: 2.20
  */
@@ -1206,7 +1209,7 @@
  * g_data_input_stream_read_until_finish:
  * @stream: a given #GDataInputStream.
  * @result: the #GAsyncResult that was provided to the callback.
- * @length: a #gsize to get the length of the data read in.
+ * @length: (out): a #gsize to get the length of the data read in.
  * @error: #GError for error reporting.
  *
  * Finish an asynchronous call started by
@@ -1214,9 +1217,10 @@
  *
  * Since: 2.20
  *
- * Returns: a string with the data that was read before encountering
- *     any of the stop characters. Set @length to a #gsize to get the length
- *     of the string. This function will return %NULL on an error.
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
  */
 gchar *
 g_data_input_stream_read_until_finish (GDataInputStream  *stream,
@@ -1237,8 +1241,8 @@
  * @stop_chars: characters to terminate the read
  * @stop_chars_len: length of @stop_chars. May be -1 if @stop_chars is
  *     nul-terminated
- * @length: a #gsize to get the length of the data read in
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @length: (out): a #gsize to get the length of the data read in
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: #GError for error reporting
  *
  * Reads a string from the data input stream, up to the first
@@ -1252,9 +1256,10 @@
  * Note that @stop_chars may contain '\0' if @stop_chars_len is
  * specified.
  *
- * Returns: a string with the data that was read before encountering
- *     any of the stop characters. Set @length to a #gsize to get the length
- *     of the string. This function will return %NULL on an error
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error
  *
  * Since: 2.24
  */
@@ -1330,9 +1335,9 @@
  *     nul-terminated
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * The asynchronous version of g_data_input_stream_read_upto().
  * It is an error to have two outstanding calls to this function.
@@ -1373,7 +1378,7 @@
  * g_data_input_stream_read_upto_finish:
  * @stream: a #GDataInputStream
  * @result: the #GAsyncResult that was provided to the callback
- * @length: a #gsize to get the length of the data read in
+ * @length: (out): a #gsize to get the length of the data read in
  * @error: #GError for error reporting
  *
  * Finish an asynchronous call started by
@@ -1383,9 +1388,10 @@
  * stop character. You have to use g_data_input_stream_read_byte() to
  * get it before calling g_data_input_stream_read_upto_async() again.
  *
- * Returns: a string with the data that was read before encountering
- *     any of the stop characters. Set @length to a #gsize to get the length
- *     of the string. This function will return %NULL on an error.
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
  *
  * Since: 2.24
  */
diff --git a/gio/gdataoutputstream.c b/gio/gdataoutputstream.c
index b700523..e03003b 100644
--- a/gio/gdataoutputstream.c
+++ b/gio/gdataoutputstream.c
@@ -210,7 +210,7 @@
  * g_data_output_stream_put_byte:
  * @stream: a #GDataOutputStream.
  * @data: a #guchar.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts a byte into the output stream.
@@ -237,7 +237,7 @@
  * g_data_output_stream_put_int16:
  * @stream: a #GDataOutputStream.
  * @data: a #gint16.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts a signed 16-bit integer into the output stream.
@@ -277,7 +277,7 @@
  * g_data_output_stream_put_uint16:
  * @stream: a #GDataOutputStream.
  * @data: a #guint16.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts an unsigned 16-bit integer into the output stream.
@@ -317,7 +317,7 @@
  * g_data_output_stream_put_int32:
  * @stream: a #GDataOutputStream.
  * @data: a #gint32.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts a signed 32-bit integer into the output stream.
@@ -357,7 +357,7 @@
  * g_data_output_stream_put_uint32:
  * @stream: a #GDataOutputStream.
  * @data: a #guint32.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts an unsigned 32-bit integer into the stream.
@@ -397,7 +397,7 @@
  * g_data_output_stream_put_int64:
  * @stream: a #GDataOutputStream.
  * @data: a #gint64.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts a signed 64-bit integer into the stream.
@@ -437,7 +437,7 @@
  * g_data_output_stream_put_uint64:
  * @stream: a #GDataOutputStream.
  * @data: a #guint64.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts an unsigned 64-bit integer into the stream.
@@ -477,7 +477,7 @@
  * g_data_output_stream_put_string:
  * @stream: a #GDataOutputStream.
  * @str: a string.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  * 
  * Puts a string into the output stream. 
diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
index 7c6a2d0..809f976 100644
--- a/gio/gdbusconnection.c
+++ b/gio/gdbusconnection.c
@@ -1452,7 +1452,8 @@
   if (out_serial != NULL)
     *out_serial = serial_to_use;
 
-  g_dbus_message_set_serial (message, serial_to_use);
+  if (!(flags & G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL))
+    g_dbus_message_set_serial (message, serial_to_use);
 
   g_dbus_message_lock (message);
   _g_dbus_worker_send_message (connection->worker,
diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c
index 43804a4..5f8f1f4 100644
--- a/gio/gdbusprivate.c
+++ b/gio/gdbusprivate.c
@@ -430,6 +430,7 @@
   gint                                num_writes_pending;
   guint64                             write_num_messages_written;
   GList                              *write_pending_flushes;
+  gboolean                            flush_pending;
 };
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -1155,6 +1156,12 @@
   if (error != NULL)
     g_error_free (error);
 
+  /* Make sure we tell folks that we don't have additional
+     flushes pending */
+  g_mutex_lock (data->worker->write_lock);
+  data->worker->flush_pending = FALSE;
+  g_mutex_unlock (data->worker->write_lock);
+
   /* OK, cool, finally kick off the next write */
   maybe_write_next_message (data->worker);
 
@@ -1207,6 +1214,10 @@
           worker->write_pending_flushes = g_list_delete_link (worker->write_pending_flushes, l);
         }
     }
+  if (flushers != NULL)
+    {
+      worker->flush_pending = TRUE;
+    }
   g_mutex_unlock (worker->write_lock);
 
   if (flushers != NULL)
@@ -1341,7 +1352,7 @@
 write_message_in_idle_cb (gpointer user_data)
 {
   GDBusWorker *worker = user_data;
-  if (worker->num_writes_pending == 0)
+  if (worker->num_writes_pending == 0 && !worker->flush_pending)
     maybe_write_next_message (worker);
   return FALSE;
 }
@@ -1424,6 +1435,7 @@
   worker->stream = g_object_ref (stream);
   worker->capabilities = capabilities;
   worker->cancellable = g_cancellable_new ();
+  worker->flush_pending = FALSE;
 
   worker->frozen = initially_frozen;
   worker->received_messages_while_frozen = g_queue_new ();
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index a7648c9..f557538 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -69,7 +69,8 @@
 static void     g_desktop_app_info_iface_init         (GAppInfoIface    *iface);
 static GList *  get_all_desktop_entries_for_mime_type (const char       *base_mime_type,
 						       const char      **except,
-						       gboolean          include_fallback);
+						       gboolean          include_fallback,
+                                                       char            **explicit_default);
 static void     mime_info_cache_reload                (const char       *dir);
 static gboolean g_desktop_app_info_ensure_saved       (GDesktopAppInfo  *info,
 						       GError          **error);
@@ -107,6 +108,14 @@
   /* FIXME: what about StartupWMClass ? */
 };
 
+typedef enum {
+  UPDATE_MIME_NONE = 1 << 0,
+  UPDATE_MIME_SET_DEFAULT = 1 << 1,
+  UPDATE_MIME_SET_NON_DEFAULT = 1 << 2,
+  UPDATE_MIME_REMOVE = 1 << 3,
+  UPDATE_MIME_SET_LAST_USED = 1 << 4,
+} UpdateMimeFlags;
+
 G_DEFINE_TYPE_WITH_CODE (GDesktopAppInfo, g_desktop_app_info, G_TYPE_OBJECT,
 			 G_IMPLEMENT_INTERFACE (G_TYPE_APP_INFO,
 						g_desktop_app_info_iface_init))
@@ -871,18 +880,17 @@
 }
 
 static GList *
-uri_list_segment_to_files (GList *start,
-			   GList *end)
+create_files_for_uris (GList *uris)
 {
   GList *res;
-  GFile *file;
+  GList *iter;
 
   res = NULL;
-  while (start != NULL && start != end)
+
+  for (iter = uris; iter; iter = iter->next)
     {
-      file = g_file_new_for_uri ((char *)start->data);
+      GFile *file = g_file_new_for_uri ((char *)iter->data);
       res = g_list_prepend (res, file);
-      start = start->next;
     }
 
   return g_list_reverse (res);
@@ -890,6 +898,8 @@
 
 typedef struct
 {
+  GSpawnChildSetupFunc user_setup;
+  gpointer user_setup_data;
   char *display;
   char *sn_id;
   char *desktop_file;
@@ -915,18 +925,79 @@
       g_snprintf (pid, 20, "%ld", (long)getpid ());
       g_setenv ("GIO_LAUNCHED_DESKTOP_FILE_PID", pid, TRUE);
     }
+
+  if (data->user_setup)
+    data->user_setup (data->user_setup_data);
 }
 
+static void
+notify_desktop_launch (GDBusConnection  *session_bus,
+		       GDesktopAppInfo  *info,
+		       long              pid,
+		       const char       *display,
+		       const char       *sn_id,
+		       GList            *uris)
+{
+  GDBusMessage *msg;
+  GVariantBuilder uri_variant;
+  GVariantBuilder extras_variant;
+  GList *iter;
+  const char *desktop_file_id;
+
+  if (session_bus == NULL)
+    return;
+
+  g_variant_builder_init (&uri_variant, G_VARIANT_TYPE ("as"));
+  for (iter = uris; iter; iter = iter->next)
+    g_variant_builder_add (&uri_variant, "s", iter->data);
+
+  g_variant_builder_init (&extras_variant, G_VARIANT_TYPE ("a{sv}"));
+  if (sn_id != NULL && g_utf8_validate (sn_id, -1, NULL))
+    g_variant_builder_add (&extras_variant, "{sv}",
+			   "startup-id",
+			   g_variant_new ("s",
+					  sn_id));
+
+  if (info->filename)
+    desktop_file_id = info->filename;
+  else if (info->desktop_id)
+    desktop_file_id = info->desktop_id;
+  else
+    desktop_file_id = "";
+  
+  msg = g_dbus_message_new_signal ("/org/gtk/gio/DesktopAppInfo",
+				   "org.gtk.gio.DesktopAppInfo",
+				   "Launched");
+  g_dbus_message_set_body (msg, g_variant_new ("(@aysxasa{sv})",
+					       g_variant_new_bytestring (desktop_file_id),
+					       display ? display : "",
+					       (gint64)pid,
+					       &uri_variant,
+					       &extras_variant));
+  g_dbus_connection_send_message (session_bus,
+				  msg, 0,
+				  NULL,
+				  NULL);
+  g_object_unref (msg);
+}
+
+#define _SPAWN_FLAGS_DEFAULT (G_SPAWN_SEARCH_PATH)
+
 static gboolean
-g_desktop_app_info_launch_uris (GAppInfo           *appinfo,
-				GList              *uris,
-				GAppLaunchContext  *launch_context,
-				GError            **error)
+_g_desktop_app_info_launch_uris_internal (GAppInfo                   *appinfo,
+					  GList                      *uris,
+					  GAppLaunchContext          *launch_context,
+					  GSpawnFlags                 spawn_flags,
+					  GSpawnChildSetupFunc        user_setup,
+					  gpointer                    user_setup_data,
+					  GDesktopAppLaunchCallback   pid_callback,
+					  gpointer                    pid_callback_data,
+					  GError                     **error)
 {
   GDesktopAppInfo *info = G_DESKTOP_APP_INFO (appinfo);
+  GDBusConnection *session_bus;
   gboolean completed = FALSE;
   GList *old_uris;
-  GList *launched_files;
   char **argv;
   int argc;
   ChildSetupData data;
@@ -935,12 +1006,24 @@
 
   argv = NULL;
 
+  session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+
   do
     {
+      GPid pid;
+      GList *launched_uris;
+      GList *iter;
+
       old_uris = uris;
       if (!expand_application_parameters (info, &uris,
 					  &argc, &argv, error))
 	goto out;
+
+      /* Get the subset of URIs we're launching with this process */
+      launched_uris = NULL;
+      for (iter = old_uris; iter != NULL && iter != uris; iter = iter->next)
+	launched_uris = g_list_prepend (launched_uris, iter->data);
+      launched_uris = g_list_reverse (launched_uris);
       
       if (info->terminal && !prepend_terminal_to_vector (&argc, &argv))
 	{
@@ -949,13 +1032,15 @@
 	  goto out;
 	}
 
+      data.user_setup = user_setup;
+      data.user_setup_data = user_setup_data;
       data.display = NULL;
       data.sn_id = NULL;
       data.desktop_file = info->filename;
 
       if (launch_context)
 	{
-	  launched_files = uri_list_segment_to_files (old_uris, uris);
+	  GList *launched_files = create_files_for_uris (launched_uris);
 
 	  data.display = g_app_launch_context_get_display (launch_context,
 						           appinfo,
@@ -972,10 +1057,10 @@
       if (!g_spawn_async (info->path,
 			  argv,
 			  NULL,
-			  G_SPAWN_SEARCH_PATH,
+			  spawn_flags,
 			  child_setup,
 			  &data,
-			  NULL,
+			  &pid,
 			  error))
 	{
 	  if (data.sn_id)
@@ -983,18 +1068,36 @@
 
 	  g_free (data.sn_id);
 	  g_free (data.display);
+	  g_list_free (launched_uris);
 
 	  goto out;
 	}
 
+      if (pid_callback != NULL)
+	pid_callback (info, pid, pid_callback_data);
+
+      notify_desktop_launch (session_bus,
+			     info,
+			     pid,
+			     data.display,
+			     data.sn_id,
+			     launched_uris);
+
       g_free (data.sn_id);
       g_free (data.display);
+      g_list_free (launched_uris);
 
       g_strfreev (argv);
       argv = NULL;
     }
   while (uris != NULL);
 
+  /* TODO - need to handle the process exiting immediately
+   * after launching an app.  See http://bugzilla.gnome.org/606960
+   */
+  if (session_bus != NULL)
+    g_object_unref (session_bus);
+
   completed = TRUE;
 
  out:
@@ -1004,6 +1107,19 @@
 }
 
 static gboolean
+g_desktop_app_info_launch_uris (GAppInfo           *appinfo,
+				GList              *uris,
+				GAppLaunchContext  *launch_context,
+				GError            **error)
+{
+  return _g_desktop_app_info_launch_uris_internal (appinfo, uris,
+						   launch_context,
+						   _SPAWN_FLAGS_DEFAULT,
+						   NULL, NULL, NULL, NULL,
+						   error);
+}
+
+static gboolean
 g_desktop_app_info_supports_uris (GAppInfo *appinfo)
 {
   GDesktopAppInfo *info = G_DESKTOP_APP_INFO (appinfo);
@@ -1051,6 +1167,56 @@
   return res;
 }
 
+/**
+ * g_desktop_app_info_launch_uris_as_manager:
+ * @appinfo: a #GDesktopAppInfo
+ * @uris: (element-type utf8): List of URIs
+ * @launch_context: a #GAppLaunchContext
+ * @spawn_flags: #GSpawnFlags, used for each process
+ * @user_setup: (scope call): a #GSpawnChildSetupFunc, used once for
+ *     each process.
+ * @user_setup_data: (closure user_setup): User data for @user_setup
+ * @pid_callback: (scope call): Callback for child processes
+ * @pid_callback_data: (closure pid_callback): User data for @callback
+ * @error: a #GError
+ *
+ * This function performs the equivalent of g_app_info_launch_uris(),
+ * but is intended primarily for operating system components that
+ * launch applications.  Ordinary applications should use
+ * g_app_info_launch_uris().
+ *
+ * In contrast to g_app_info_launch_uris(), all processes created will
+ * always be run directly as children as if by the UNIX fork()/exec()
+ * calls.
+ *
+ * This guarantee allows additional control over the exact environment
+ * of the child processes, which is provided via a setup function
+ * @setup, as well as the process identifier of each child process via
+ * @pid_callback.  See g_spawn_async() for more information about the
+ * semantics of the @setup function.
+ */
+gboolean
+g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo            *appinfo,
+					   GList                      *uris,
+					   GAppLaunchContext          *launch_context,
+					   GSpawnFlags                 spawn_flags,
+					   GSpawnChildSetupFunc        user_setup,
+					   gpointer                    user_setup_data,
+					   GDesktopAppLaunchCallback   pid_callback,
+					   gpointer                    pid_callback_data,
+					   GError                    **error)
+{
+  return _g_desktop_app_info_launch_uris_internal ((GAppInfo*)appinfo,
+						   uris,
+						   launch_context,
+						   spawn_flags,
+						   user_setup,
+						   user_setup_data,
+						   pid_callback,
+						   pid_callback_data,
+						   error);
+}
+
 G_LOCK_DEFINE_STATIC (g_desktop_env);
 static gchar *g_desktop_env = NULL;
 
@@ -1169,25 +1335,24 @@
 
 static gboolean
 update_mimeapps_list (const char  *desktop_id, 
-		      const char  *content_type, 
-		      gboolean     add_as_default,
-		      gboolean     add_non_default,
-		      gboolean     remove, 
+		      const char  *content_type,
+                      UpdateMimeFlags flags,
 		      GError     **error)
 {
-  char *dirname, *filename;
+  char *dirname, *filename, *string;
   GKeyFile *key_file;
-  gboolean load_succeeded, res;
+  gboolean load_succeeded, res, explicit_default;
   char **old_list, **list;
-  GList *system_list, *l;
+  GList *system_list;
   gsize length, data_size;
   char *data;
   int i, j, k;
   char **content_types;
 
   /* Don't add both at start and end */
-  g_assert (!(add_as_default && add_non_default));
-  
+  g_assert (!((flags & UPDATE_MIME_SET_DEFAULT) &&
+              (flags & UPDATE_MIME_SET_NON_DEFAULT)));
+
   dirname = ensure_dir (APP_DIR, error);
   if (!dirname)
     return FALSE;
@@ -1211,9 +1376,57 @@
     }
   else
     {
-      content_types = g_key_file_get_keys (key_file, ADDED_ASSOCIATIONS_GROUP, NULL, NULL);
+      content_types = g_key_file_get_keys (key_file, DEFAULT_APPLICATIONS_GROUP, NULL, NULL);
     }
 
+  explicit_default = FALSE;
+
+  for (k = 0; content_types && content_types[k]; k++)
+    {
+      /* set as default, if requested so */
+      string = g_key_file_get_string (key_file,
+                                      DEFAULT_APPLICATIONS_GROUP,
+                                      content_types[k],
+                                      NULL);
+
+      if (g_strcmp0 (string, desktop_id) != 0 &&
+          (flags & UPDATE_MIME_SET_DEFAULT))
+        {
+          g_free (string);
+          string = g_strdup (desktop_id);
+
+          /* add in the non-default list too, if it's not already there */
+          flags |= UPDATE_MIME_SET_NON_DEFAULT;
+        }
+
+      if (string == NULL || desktop_id == NULL)
+        g_key_file_remove_key (key_file,
+                               DEFAULT_APPLICATIONS_GROUP,
+                               content_types[k],
+                               NULL);
+      else
+        {
+          g_key_file_set_string (key_file,
+                                 DEFAULT_APPLICATIONS_GROUP,
+                                 content_types[k],
+                                 string);
+
+          explicit_default = TRUE;
+        }
+
+      g_free (string);
+    }
+
+  if (content_type)
+    {
+      /* reuse the list from above */
+    }
+  else
+    {
+      g_strfreev (content_types);
+      content_types = g_key_file_get_keys (key_file, ADDED_ASSOCIATIONS_GROUP, NULL, NULL);
+    }
+  
   for (k = 0; content_types && content_types[k]; k++)
     { 
       /* Add to the right place in the list */
@@ -1225,48 +1438,41 @@
       list = g_new (char *, 1 + length + 1);
 
       i = 0;
-      if (add_as_default)
-        list[i++] = g_strdup (desktop_id);
+
+      /* if we're adding a last-used hint, just put the application in front of the list */
+      if (flags & UPDATE_MIME_SET_LAST_USED)
+        {
+          /* avoid adding this again as non-default later */
+          if (flags & UPDATE_MIME_SET_NON_DEFAULT)
+            flags ^= UPDATE_MIME_SET_NON_DEFAULT;
+
+          list[i++] = g_strdup (desktop_id);
+        }
+
       if (old_list)
         {
           for (j = 0; old_list[j] != NULL; j++)
 	    {
 	      if (g_strcmp0 (old_list[j], desktop_id) != 0)
-	        list[i++] = g_strdup (old_list[j]);
-	      else if (add_non_default)
+                {
+                  /* rewrite other entries if they're different from the new one */
+                  list[i++] = g_strdup (old_list[j]);
+                }
+	      else if (flags & UPDATE_MIME_SET_NON_DEFAULT)
 		{
-		  /* If adding as non-default, and it's already in,
-		     don't change order of desktop ids */
-		  add_non_default = FALSE;
+                  /* we encountered an old entry which is equal to the one we're adding as non-default,
+                   * don't change its position in the list.
+                   */
+		  flags ^= UPDATE_MIME_SET_NON_DEFAULT;
 		  list[i++] = g_strdup (old_list[j]);
 		}
 	    }
         }
-      
-      if (add_non_default)
-	{
-	  /* We're adding as non-default, and it wasn't already in the list,
-	     so we add at the end. But to avoid listing the app before the
-	     current system default (thus changing the default) we have to
-	     add the current list of (not yet listed) apps before it. */
 
-	  list[i] = NULL; /* Terminate current list so we can use it */
-	  system_list =  get_all_desktop_entries_for_mime_type (content_type, (const char **)list, FALSE);
+      /* add it at the end of the list */
+      if (flags & UPDATE_MIME_SET_NON_DEFAULT)
+        list[i++] = g_strdup (desktop_id);
 
-	  list = g_renew (char *, list, 1 + length + g_list_length (system_list) + 1);
-
-	  for (l = system_list; l != NULL; l = l->next)
-	    {
-	      list[i++] = l->data; /* no strdup, taking ownership */
-	      if (g_strcmp0 (l->data, desktop_id) == 0)
-		add_non_default = FALSE;
-	    }
-	  g_list_free (system_list);
-		  
-	  if (add_non_default)
-	    list[i++] = g_strdup (desktop_id);
-	}
-      
       list[i] = NULL;
   
       g_strfreev (old_list);
@@ -1277,10 +1483,32 @@
 			       content_types[k],
 			       NULL);
       else
-        g_key_file_set_string_list (key_file,
-			            ADDED_ASSOCIATIONS_GROUP,
-			            content_types[k],
-			            (const char * const *)list, i);
+        {
+          g_key_file_set_string_list (key_file,
+                                      ADDED_ASSOCIATIONS_GROUP,
+                                      content_types[k],
+                                      (const char * const *)list, i);
+
+          /* if we had no explicit default set, we should add the system default to the
+           * list, to avoid overriding it with applications from this list.
+           */
+          if (!explicit_default)
+            {
+              system_list = get_all_desktop_entries_for_mime_type (content_type, (const char **) list, FALSE, NULL);
+
+              if (system_list != NULL)
+                {
+                  string = system_list->data;
+
+                  g_key_file_set_string (key_file,
+                                         DEFAULT_APPLICATIONS_GROUP,
+                                         content_types[k],
+                                         string);
+                }
+
+              g_list_free_full (system_list, g_free);
+            }
+        }
    
       g_strfreev (list);
     }
@@ -1306,7 +1534,7 @@
       list = g_new (char *, 1 + length + 1);
 
       i = 0;
-      if (remove)
+      if (flags & UPDATE_MIME_REMOVE)
         list[i++] = g_strdup (desktop_id);
       if (old_list)
         {
@@ -1333,7 +1561,7 @@
 
       g_strfreev (list);
     }
-  
+
   g_strfreev (content_types);  
 
   data = g_key_file_to_data (key_file, &data_size, error);
@@ -1350,6 +1578,23 @@
 }
 
 static gboolean
+g_desktop_app_info_set_as_last_used_for_type (GAppInfo    *appinfo,
+                                              const char  *content_type,
+                                              GError     **error)
+{
+  GDesktopAppInfo *info = G_DESKTOP_APP_INFO (appinfo);
+
+  if (!g_desktop_app_info_ensure_saved (info, error))
+    return FALSE;
+
+  /* both add support for the content type and set as last used */
+  return update_mimeapps_list (info->desktop_id, content_type,
+                               UPDATE_MIME_SET_NON_DEFAULT |
+                               UPDATE_MIME_SET_LAST_USED,
+                               error);
+}
+
+static gboolean
 g_desktop_app_info_set_as_default_for_type (GAppInfo    *appinfo,
 					    const char  *content_type,
 					    GError     **error)
@@ -1359,7 +1604,9 @@
   if (!g_desktop_app_info_ensure_saved (info, error))
     return FALSE;  
   
-  return update_mimeapps_list (info->desktop_id, content_type, TRUE, FALSE, FALSE, error);
+  return update_mimeapps_list (info->desktop_id, content_type,
+                               UPDATE_MIME_SET_DEFAULT,
+                               error);
 }
 
 static void
@@ -1476,7 +1723,9 @@
   if (!g_desktop_app_info_ensure_saved (G_DESKTOP_APP_INFO (info), error))
     return FALSE;  
   
-  return update_mimeapps_list (info->desktop_id, content_type, FALSE, TRUE, FALSE, error);
+  return update_mimeapps_list (info->desktop_id, content_type,
+                               UPDATE_MIME_SET_NON_DEFAULT,
+                               error);
 }
 
 static gboolean
@@ -1495,7 +1744,9 @@
   if (!g_desktop_app_info_ensure_saved (G_DESKTOP_APP_INFO (info), error))
     return FALSE;
   
-  return update_mimeapps_list (info->desktop_id, content_type, FALSE, FALSE, TRUE, error);
+  return update_mimeapps_list (info->desktop_id, content_type,
+                               UPDATE_MIME_REMOVE,
+                               error);
 }
 
 static gboolean
@@ -1616,7 +1867,9 @@
     { 
       if (g_remove (info->filename) == 0)
         {
-          update_mimeapps_list (info->desktop_id, NULL, FALSE, FALSE, FALSE, NULL);
+          update_mimeapps_list (info->desktop_id, NULL,
+                                UPDATE_MIME_NONE,
+                                NULL);
 
           g_free (info->filename);
           info->filename = NULL;
@@ -1709,6 +1962,7 @@
   iface->do_delete = g_desktop_app_info_delete;
   iface->get_commandline = g_desktop_app_info_get_commandline;
   iface->get_display_name = g_desktop_app_info_get_display_name;
+  iface->set_as_last_used_for_type = g_desktop_app_info_set_as_last_used_for_type;
 }
 
 static gboolean
@@ -1731,6 +1985,9 @@
  * Gets a list of recommended #GAppInfos for a given content type, i.e.
  * those applications which claim to support the given content type exactly,
  * and not by MIME type subclassing.
+ * Note that the first application of the list is the last used one, i.e.
+ * the last one for which #g_app_info_set_as_last_used_for_type has been
+ * called.
  *
  * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
  *     for given @content_type or %NULL on error.
@@ -1746,7 +2003,7 @@
 
   g_return_val_if_fail (content_type != NULL, NULL);
 
-  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, FALSE);
+  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, FALSE, NULL);
 
   infos = NULL;
   for (l = desktop_entries; l != NULL; l = l->next)
@@ -1765,7 +2022,7 @@
     }
 
   g_list_free (desktop_entries);
-  
+
   return g_list_reverse (infos);
 }
 
@@ -1791,7 +2048,7 @@
 
   g_return_val_if_fail (content_type != NULL, NULL);
 
-  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE);
+  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE, NULL);
   recommended_infos = g_app_info_get_recommended_for_type (content_type);
 
   infos = NULL;
@@ -1831,13 +2088,25 @@
 {
   GList *desktop_entries, *l;
   GList *infos;
+  char *user_default = NULL;
   GDesktopAppInfo *info;
 
   g_return_val_if_fail (content_type != NULL, NULL);
   
-  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE);
-
+  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE, &user_default);
   infos = NULL;
+
+  /* put the user default in front of the list, for compatibility */
+  if (user_default != NULL)
+    {
+      info = g_desktop_app_info_new (user_default);
+
+      if (info != NULL)
+        infos = g_list_prepend (infos, info);
+    }
+
+  g_free (user_default);
+
   for (l = desktop_entries; l != NULL; l = l->next)
     {
       char *desktop_entry = l->data;
@@ -1872,7 +2141,9 @@
 void
 g_app_info_reset_type_associations (const char *content_type)
 {
-  update_mimeapps_list (NULL, content_type, FALSE, FALSE, FALSE, NULL);
+  update_mimeapps_list (NULL, content_type,
+                        UPDATE_MIME_NONE,
+                        NULL);
 }
 
 /**
@@ -1883,20 +2154,48 @@
  * 
  * Gets the #GAppInfo that corresponds to a given content type.
  *
- * Returns: #GAppInfo for given @content_type or %NULL on error.
+ * Returns: (transfer full): #GAppInfo for given @content_type or
+ *     %NULL on error.
  **/
 GAppInfo *
 g_app_info_get_default_for_type (const char *content_type,
 				 gboolean    must_support_uris)
 {
   GList *desktop_entries, *l;
+  char *user_default = NULL;
   GAppInfo *info;
 
   g_return_val_if_fail (content_type != NULL, NULL);
   
-  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE);
+  desktop_entries = get_all_desktop_entries_for_mime_type (content_type, NULL, TRUE, &user_default);
 
   info = NULL;
+
+  if (user_default != NULL)
+    {
+      info = (GAppInfo *) g_desktop_app_info_new (user_default);
+
+      if (info)
+        {
+	  if (must_support_uris && !g_app_info_supports_uris (info))
+	    {
+	      g_object_unref (info);
+	      info = NULL;
+	    }
+        }
+    }
+
+  g_free (user_default);
+
+  if (info != NULL)
+    {
+      g_list_free_full (desktop_entries, g_free);
+      return info;
+    }
+
+  /* pick the first from the other list that matches our URI
+   * requirements.
+   */
   for (l = desktop_entries; l != NULL; l = l->next)
     {
       char *desktop_entry = l->data;
@@ -1914,9 +2213,8 @@
 	}
     }
   
-  g_list_foreach  (desktop_entries, (GFunc)g_free, NULL);
-  g_list_free (desktop_entries);
-  
+  g_list_free_full (desktop_entries, g_free);
+
   return info;
 }
 
@@ -1929,7 +2227,7 @@
  * of the URI, up to but not including the ':', e.g. "http", 
  * "ftp" or "sip".
  * 
- * Returns: #GAppInfo for given @uri_scheme or %NULL on error.
+ * Returns: (transfer full): #GAppInfo for given @uri_scheme or %NULL on error.
  **/
 GAppInfo *
 g_app_info_get_default_for_uri_scheme (const char *uri_scheme)
@@ -2066,6 +2364,7 @@
   GHashTable *defaults_list_map;
   GHashTable *mimeapps_list_added_map;
   GHashTable *mimeapps_list_removed_map;
+  GHashTable *mimeapps_list_defaults_map;
   time_t mime_info_cache_timestamp;
   time_t defaults_list_timestamp;
   time_t mimeapps_list_timestamp;
@@ -2318,6 +2617,7 @@
   gchar *filename, **mime_types;
   char *unaliased_type;
   char **desktop_file_ids;
+  char *desktop_id;
   int i;
   struct stat buf;
 
@@ -2339,6 +2639,11 @@
   dir->mimeapps_list_removed_map = g_hash_table_new_full (g_str_hash, g_str_equal,
 							  g_free, (GDestroyNotify)g_strfreev);
 
+  if (dir->mimeapps_list_defaults_map != NULL)
+    g_hash_table_destroy (dir->mimeapps_list_defaults_map);
+  dir->mimeapps_list_defaults_map = g_hash_table_new_full (g_str_hash, g_str_equal,
+                                                           g_free, g_free);
+
   key_file = g_key_file_new ();
   
   filename = g_build_filename (dir->path, "mimeapps.list", NULL);
@@ -2403,6 +2708,28 @@
       g_strfreev (mime_types);
     }
 
+  mime_types = g_key_file_get_keys (key_file, DEFAULT_APPLICATIONS_GROUP,
+                                    NULL, NULL);
+  if (mime_types != NULL)
+    {
+      for (i = 0; mime_types[i] != NULL; i++)
+        {
+          desktop_id = g_key_file_get_string (key_file,
+                                              DEFAULT_APPLICATIONS_GROUP,
+                                              mime_types[i],
+                                              NULL);
+          if (desktop_id == NULL)
+            continue;
+
+          unaliased_type = _g_unix_content_type_unalias (mime_types[i]);
+          g_hash_table_replace (dir->mimeapps_list_defaults_map,
+                                unaliased_type,
+                                desktop_id);
+        }
+
+      g_strfreev (mime_types);
+    }
+
   g_key_file_free (key_file);
   return;
   
@@ -2458,7 +2785,13 @@
       g_hash_table_destroy (dir->mimeapps_list_removed_map);
       dir->mimeapps_list_removed_map = NULL;
     }
-  
+
+  if (dir->mimeapps_list_defaults_map != NULL)
+    {
+      g_hash_table_destroy (dir->mimeapps_list_defaults_map);
+      dir->mimeapps_list_defaults_map = NULL;
+    }
+
   g_free (dir);
 }
 
@@ -2635,13 +2968,15 @@
  *    to handle @mime_type.
  */
 static GList *
-get_all_desktop_entries_for_mime_type (const char *base_mime_type,
+get_all_desktop_entries_for_mime_type (const char  *base_mime_type,
 				       const char **except,
-				       gboolean include_fallback)
+				       gboolean     include_fallback,
+                                       char       **explicit_default)
 {
   GList *desktop_entries, *removed_entries, *list, *dir_list, *tmp;
   MimeInfoCacheDir *dir;
-  char *mime_type;
+  char *mime_type, *default_entry = NULL;
+  const char *entry;
   char **mime_types;
   char **default_entries;
   char **removed_associations;
@@ -2696,17 +3031,27 @@
     {
       mime_type = mime_types[i];
 
-      /* Go through all apps listed as defaults */
+      /* Go through all apps listed in user and system dirs */
       for (dir_list = mime_info_cache->dirs;
 	   dir_list != NULL;
 	   dir_list = dir_list->next)
 	{
 	  dir = dir_list->data;
 
-	  /* First added associations from mimeapps.list */
+          /* Pick the explicit default application */
+          entry = g_hash_table_lookup (dir->mimeapps_list_defaults_map, mime_type);
+
+          if (entry != NULL)
+            {
+              /* Save the default entry if it's the first one we encounter */
+              if (default_entry == NULL)
+                default_entry = g_strdup (entry);
+            }
+
+	  /* Then added associations from mimeapps.list */
 	  default_entries = g_hash_table_lookup (dir->mimeapps_list_added_map, mime_type);
 	  for (j = 0; default_entries != NULL && default_entries[j] != NULL; j++)
-	    desktop_entries = append_desktop_entry (desktop_entries, default_entries[j], removed_entries);
+            desktop_entries = append_desktop_entry (desktop_entries, default_entries[j], removed_entries);
 
 	  /* Then removed associations from mimeapps.list */
 	  removed_associations = g_hash_table_lookup (dir->mimeapps_list_removed_map, mime_type);
@@ -2736,9 +3081,14 @@
 
   g_strfreev (mime_types);
 
+  if (explicit_default != NULL)
+    *explicit_default = default_entry;
+  else
+    g_free (default_entry);
+
   g_list_foreach (removed_entries, (GFunc)g_free, NULL);
   g_list_free (removed_entries);
-  
+
   desktop_entries = g_list_reverse (desktop_entries);
   
   return desktop_entries;
diff --git a/gio/gdesktopappinfo.h b/gio/gdesktopappinfo.h
index 6be9369..162cbb6 100644
--- a/gio/gdesktopappinfo.h
+++ b/gio/gdesktopappinfo.h
@@ -93,6 +93,30 @@
 GAppInfo *g_desktop_app_info_lookup_get_default_for_uri_scheme (GDesktopAppInfoLookup *lookup,
                                                                 const char            *uri_scheme);
 
+/**
+ * GDesktopAppLaunchCallback:
+ * @appinfo: a #GDesktopAppInfo
+ * @pid: Process identifier
+ * @user_data: User data
+ *
+ * During invocation, g_desktop_app_info_launch_uris_as_manager() may
+ * create one or more child processes.  This callback is invoked once
+ * for each, providing the process ID.
+ */
+typedef void (*GDesktopAppLaunchCallback) (GDesktopAppInfo  *appinfo,
+					   GPid              pid,
+					   gpointer          user_data);
+
+gboolean    g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo            *appinfo,
+						       GList                      *uris,
+						       GAppLaunchContext          *launch_context,
+						       GSpawnFlags                 spawn_flags,
+						       GSpawnChildSetupFunc        user_setup,
+						       gpointer                    user_setup_data,
+						       GDesktopAppLaunchCallback   pid_callback,
+						       gpointer                    pid_callback_data,
+						       GError                    **error);
+
 #endif /* G_DISABLE_DEPRECATED */
 
 G_END_DECLS
diff --git a/gio/gdrive.c b/gio/gdrive.c
index 5d6efdc..b4a6164 100644
--- a/gio/gdrive.c
+++ b/gio/gdrive.c
@@ -331,8 +331,8 @@
  * g_drive_eject:
  * @drive: a #GDrive.
  * @flags: flags affecting the unmount if required for eject
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data to pass to @callback
  * 
  * Asynchronously ejects a drive.
@@ -407,9 +407,10 @@
  * g_drive_eject_with_operation:
  * @drive: a #GDrive.
  * @flags: flags affecting the unmount if required for eject
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  *
  * Ejects a drive. This is an asynchronous operation, and is
@@ -491,8 +492,8 @@
 /**
  * g_drive_poll_for_media:
  * @drive: a #GDrive.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data to pass to @callback
  * 
  * Asynchronously polls @drive to see if media has been inserted or removed.
@@ -594,8 +595,9 @@
  * Use g_drive_get_identifer() to obtain the identifiers
  * themselves.
  *
- * Returns: (transfer full): a %NULL-terminated array of strings containing
- *     kinds of identifiers. Use g_strfreev() to free.
+ * Returns: (transfer full) (array zero-terminated=1): a %NULL-terminated
+ *     array of strings containing kinds of identifiers. Use g_strfreev()
+ *     to free.
  */
 char **
 g_drive_enumerate_identifiers (GDrive *drive)
@@ -691,9 +693,10 @@
  * g_drive_start:
  * @drive: a #GDrive.
  * @flags: flags affecting the start operation.
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data to pass to @callback
  *
  * Asynchronously starts a drive.
@@ -793,9 +796,10 @@
  * g_drive_stop:
  * @drive: a #GDrive.
  * @flags: flags affecting the unmount if required for stopping.
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data to pass to @callback
  *
  * Asynchronously stops a drive.
diff --git a/gio/gdummytlsbackend.c b/gio/gdummytlsbackend.c
index fd55aa9..f297f74 100644
--- a/gio/gdummytlsbackend.c
+++ b/gio/gdummytlsbackend.c
@@ -92,10 +92,11 @@
 {
   PROP_CERTIFICATE_0,
 
-  PROP_CERTIFICATE,
-  PROP_CERTIFICATE_PEM,
-  PROP_PRIVATE_KEY,
-  PROP_PRIVATE_KEY_PEM
+  PROP_CERT_CERTIFICATE,
+  PROP_CERT_CERTIFICATE_PEM,
+  PROP_CERT_PRIVATE_KEY,
+  PROP_CERT_PRIVATE_KEY_PEM,
+  PROP_CERT_ISSUER
 };
 
 static void g_dummy_tls_certificate_initable_iface_init (GInitableIface *iface);
@@ -134,10 +135,11 @@
   gobject_class->get_property = g_dummy_tls_certificate_get_property;
   gobject_class->set_property = g_dummy_tls_certificate_set_property;
 
-  g_object_class_override_property (gobject_class, PROP_CERTIFICATE, "certificate");
-  g_object_class_override_property (gobject_class, PROP_CERTIFICATE_PEM, "certificate-pem");
-  g_object_class_override_property (gobject_class, PROP_PRIVATE_KEY, "private-key");
-  g_object_class_override_property (gobject_class, PROP_PRIVATE_KEY_PEM, "private-key-pem");
+  g_object_class_override_property (gobject_class, PROP_CERT_CERTIFICATE, "certificate");
+  g_object_class_override_property (gobject_class, PROP_CERT_CERTIFICATE_PEM, "certificate-pem");
+  g_object_class_override_property (gobject_class, PROP_CERT_PRIVATE_KEY, "private-key");
+  g_object_class_override_property (gobject_class, PROP_CERT_PRIVATE_KEY_PEM, "private-key-pem");
+  g_object_class_override_property (gobject_class, PROP_CERT_ISSUER, "issuer");
 }
 
 static void
@@ -150,7 +152,7 @@
 				       GCancellable    *cancellable,
 				       GError         **error)
 {
-  g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_MISC,
+  g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_UNAVAILABLE,
 		       _("TLS support is not available"));
   return FALSE;
 }
@@ -181,14 +183,18 @@
 {
   PROP_CONNECTION_0,
 
-  PROP_BASE_IO_STREAM,
-  PROP_REQUIRE_CLOSE_NOTIFY,
-  PROP_REHANDSHAKE_MODE,
-  PROP_VALIDATION_FLAGS,
-  PROP_SERVER_IDENTITY,
-  PROP_USE_SSL3,
-  PROP_ACCEPTED_CAS,
-  PROP_AUTHENTICATION_MODE
+  PROP_CONN_BASE_IO_STREAM,
+  PROP_CONN_USE_SYSTEM_CERTDB,
+  PROP_CONN_REQUIRE_CLOSE_NOTIFY,
+  PROP_CONN_REHANDSHAKE_MODE,
+  PROP_CONN_CERTIFICATE,
+  PROP_CONN_PEER_CERTIFICATE,
+  PROP_CONN_PEER_CERTIFICATE_ERRORS,
+  PROP_CONN_VALIDATION_FLAGS,
+  PROP_CONN_SERVER_IDENTITY,
+  PROP_CONN_USE_SSL3,
+  PROP_CONN_ACCEPTED_CAS,
+  PROP_CONN_AUTHENTICATION_MODE
 };
 
 static void g_dummy_tls_connection_initable_iface_init (GInitableIface *iface);
@@ -240,15 +246,18 @@
    */
   io_stream_class->close_fn = g_dummy_tls_connection_close;
 
-  g_object_class_override_property (gobject_class, PROP_BASE_IO_STREAM, "base-io-stream");
-  g_object_class_override_property (gobject_class, PROP_REQUIRE_CLOSE_NOTIFY, "require-close-notify");
-  g_object_class_override_property (gobject_class, PROP_REHANDSHAKE_MODE, "rehandshake-mode");
-  g_object_class_override_property (gobject_class, PROP_VALIDATION_FLAGS, "validation-flags");
-  g_object_class_override_property (gobject_class, PROP_SERVER_IDENTITY, "server-identity");
-  g_object_class_override_property (gobject_class, PROP_USE_SSL3, "use-ssl3");
-  g_object_class_override_property (gobject_class, PROP_ACCEPTED_CAS, "accepted-cas");
-  g_object_class_override_property (gobject_class, PROP_AUTHENTICATION_MODE, "authentication-mode");
-
+  g_object_class_override_property (gobject_class, PROP_CONN_BASE_IO_STREAM, "base-io-stream");
+  g_object_class_override_property (gobject_class, PROP_CONN_USE_SYSTEM_CERTDB, "use-system-certdb");
+  g_object_class_override_property (gobject_class, PROP_CONN_REQUIRE_CLOSE_NOTIFY, "require-close-notify");
+  g_object_class_override_property (gobject_class, PROP_CONN_REHANDSHAKE_MODE, "rehandshake-mode");
+  g_object_class_override_property (gobject_class, PROP_CONN_CERTIFICATE, "certificate");
+  g_object_class_override_property (gobject_class, PROP_CONN_PEER_CERTIFICATE, "peer-certificate");
+  g_object_class_override_property (gobject_class, PROP_CONN_PEER_CERTIFICATE_ERRORS, "peer-certificate-errors");
+  g_object_class_override_property (gobject_class, PROP_CONN_VALIDATION_FLAGS, "validation-flags");
+  g_object_class_override_property (gobject_class, PROP_CONN_SERVER_IDENTITY, "server-identity");
+  g_object_class_override_property (gobject_class, PROP_CONN_USE_SSL3, "use-ssl3");
+  g_object_class_override_property (gobject_class, PROP_CONN_ACCEPTED_CAS, "accepted-cas");
+  g_object_class_override_property (gobject_class, PROP_CONN_AUTHENTICATION_MODE, "authentication-mode");
 }
 
 static void
@@ -261,7 +270,7 @@
 				      GCancellable    *cancellable,
 				      GError         **error)
 {
-  g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_MISC,
+  g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_UNAVAILABLE,
 		       _("TLS support is not available"));
   return FALSE;
 }
diff --git a/gio/gemblem.c b/gio/gemblem.c
index 68afbab..1df712b 100644
--- a/gio/gemblem.c
+++ b/gio/gemblem.c
@@ -220,8 +220,8 @@
  *
  * Gives back the icon from @emblem.
  *
- * Returns: (transfer full): a #GIcon. The returned object belongs to the emblem
- *    and should not be modified or freed.
+ * Returns: (transfer none): a #GIcon. The returned object belongs to
+ *          the emblem and should not be modified or freed.
  *
  * Since: 2.18
  */
@@ -240,7 +240,7 @@
  *
  * Gets the origin of the emblem.
  *
- * Returns: the origin of the emblem
+ * Returns: (transfer none): the origin of the emblem
  *
  * Since: 2.18
  */
diff --git a/gio/gemblemedicon.c b/gio/gemblemedicon.c
index 0364cba..6f7af0e 100644
--- a/gio/gemblemedicon.c
+++ b/gio/gemblemedicon.c
@@ -46,20 +46,19 @@
  * of the emblems. See also #GEmblem for more information.
  **/
 
-static void g_emblemed_icon_icon_iface_init (GIconIface *iface);
+enum {
+  PROP_GICON = 1,
+  NUM_PROPERTIES
+};
 
-struct _GEmblemedIcon
-{
-  GObject parent_instance;
-
+struct _GEmblemedIconPrivate {
   GIcon *icon;
   GList *emblems;
 };
 
-struct _GEmblemedIconClass
-{
-  GObjectClass parent_class;
-};
+static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
+
+static void g_emblemed_icon_icon_iface_init (GIconIface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (GEmblemedIcon, g_emblemed_icon, G_TYPE_OBJECT,
                          G_IMPLEMENT_INTERFACE (G_TYPE_ICON,
@@ -73,23 +72,78 @@
 
   emblemed = G_EMBLEMED_ICON (object);
 
-  g_object_unref (emblemed->icon);
-  g_list_foreach (emblemed->emblems, (GFunc) g_object_unref, NULL);
-  g_list_free (emblemed->emblems);
+  g_object_unref (emblemed->priv->icon);
+  g_list_foreach (emblemed->priv->emblems, (GFunc) g_object_unref, NULL);
+  g_list_free (emblemed->priv->emblems);
 
   (*G_OBJECT_CLASS (g_emblemed_icon_parent_class)->finalize) (object);
 }
 
 static void
+g_emblemed_icon_set_property (GObject  *object,
+                              guint property_id,
+                              const GValue *value,
+                              GParamSpec *pspec)
+{
+  GEmblemedIcon *self = G_EMBLEMED_ICON (object);
+
+  switch (property_id)
+    {
+    case PROP_GICON:
+      self->priv->icon = g_value_dup_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+g_emblemed_icon_get_property (GObject  *object,
+                              guint property_id,
+                              GValue *value,
+                              GParamSpec *pspec)
+{
+  GEmblemedIcon *self = G_EMBLEMED_ICON (object);
+
+  switch (property_id)
+    {
+    case PROP_GICON:
+      g_value_set_object (value, self->priv->icon);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
 g_emblemed_icon_class_init (GEmblemedIconClass *klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
   gobject_class->finalize = g_emblemed_icon_finalize;
+  gobject_class->set_property = g_emblemed_icon_set_property;
+  gobject_class->get_property = g_emblemed_icon_get_property;
+
+  properties[PROP_GICON] =
+    g_param_spec_object ("gicon",
+                         P_("The base GIcon"),
+                         P_("The GIcon to attach emblems to"),
+                         G_TYPE_ICON,
+                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+
+  g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
+
+  g_type_class_add_private (klass, sizeof (GEmblemedIconPrivate));
 }
 
 static void
 g_emblemed_icon_init (GEmblemedIcon *emblemed)
 {
+  emblemed->priv =
+    G_TYPE_INSTANCE_GET_PRIVATE (emblemed, G_TYPE_EMBLEMED_ICON,
+                                 GEmblemedIconPrivate);
 }
 
 /**
@@ -112,8 +166,9 @@
   g_return_val_if_fail (G_IS_ICON (icon), NULL);
   g_return_val_if_fail (!G_IS_EMBLEM (icon), NULL);
 
-  emblemed = G_EMBLEMED_ICON (g_object_new (G_TYPE_EMBLEMED_ICON, NULL));
-  emblemed->icon = g_object_ref (icon);
+  emblemed = G_EMBLEMED_ICON (g_object_new (G_TYPE_EMBLEMED_ICON,
+                                            "gicon", icon,
+                                            NULL));
 
   if (emblem != NULL)
     g_emblemed_icon_add_emblem (emblemed, emblem);
@@ -128,7 +183,7 @@
  *
  * Gets the main icon for @emblemed.
  *
- * Returns: (transfer full): a #GIcon that is owned by @emblemed
+ * Returns: (transfer none): a #GIcon that is owned by @emblemed
  *
  * Since: 2.18
  **/
@@ -137,7 +192,7 @@
 {
   g_return_val_if_fail (G_IS_EMBLEMED_ICON (emblemed), NULL);
 
-  return emblemed->icon;
+  return emblemed->priv->icon;
 }
 
 /**
@@ -146,8 +201,8 @@
  *
  * Gets the list of emblems for the @icon.
  *
- * Returns: (element-type utf8) (transfer none): a #GList of #GEmblem <!-- -->s that
- * is owned by @emblemed
+ * Returns: (element-type Gio.Emblem) (transfer none): a #GList of
+ *          #GEmblem <!-- -->s that is owned by @emblemed
  *
  * Since: 2.18
  **/
@@ -157,7 +212,27 @@
 {
   g_return_val_if_fail (G_IS_EMBLEMED_ICON (emblemed), NULL);
 
-  return emblemed->emblems;
+  return emblemed->priv->emblems;
+}
+
+/**
+ * g_emblemed_icon_clear_emblems:
+ * @emblemed: a #GEmblemedIcon
+ *
+ * Removes all the emblems from @icon.
+ *
+ * Since: 2.28
+ **/
+void
+g_emblemed_icon_clear_emblems (GEmblemedIcon *emblemed)
+{
+  g_return_if_fail (G_IS_EMBLEMED_ICON (emblemed));
+
+  if (emblemed->priv->emblems == NULL)
+    return;
+
+  g_list_free_full (emblemed->priv->emblems, g_object_unref);
+  emblemed->priv->emblems = NULL;
 }
 
 static gint
@@ -193,8 +268,8 @@
   g_return_if_fail (G_IS_EMBLEM (emblem));
 
   g_object_ref (emblem);
-  emblemed->emblems = g_list_insert_sorted (emblemed->emblems, emblem,
-                                            (GCompareFunc) g_emblem_comp);
+  emblemed->priv->emblems = g_list_insert_sorted (emblemed->priv->emblems, emblem,
+                                                  (GCompareFunc) g_emblem_comp);
 }
 
 static guint
@@ -202,9 +277,9 @@
 {
   GEmblemedIcon *emblemed = G_EMBLEMED_ICON (icon);
   GList *list;
-  guint hash = g_icon_hash (emblemed->icon);
+  guint hash = g_icon_hash (emblemed->priv->icon);
 
-  for (list = emblemed->emblems; list != NULL; list = list->next)
+  for (list = emblemed->priv->emblems; list != NULL; list = list->next)
     hash ^= g_icon_hash (G_ICON (list->data));
 
   return hash;
@@ -218,11 +293,11 @@
   GEmblemedIcon *emblemed2 = G_EMBLEMED_ICON (icon2);
   GList *list1, *list2;
 
-  if (!g_icon_equal (emblemed1->icon, emblemed2->icon))
+  if (!g_icon_equal (emblemed1->priv->icon, emblemed2->priv->icon))
     return FALSE;
 
-  list1 = emblemed1->emblems;
-  list2 = emblemed2->emblems;
+  list1 = emblemed1->priv->emblems;
+  list2 = emblemed2->priv->emblems;
 
   while (list1 && list2)
   {
@@ -254,13 +329,13 @@
 
   *out_version = 0;
 
-  s = g_icon_to_string (emblemed_icon->icon);
+  s = g_icon_to_string (emblemed_icon->priv->icon);
   if (s == NULL)
     return FALSE;
 
   g_ptr_array_add (tokens, s);
 
-  for (l = emblemed_icon->emblems; l != NULL; l = l->next)
+  for (l = emblemed_icon->priv->emblems; l != NULL; l = l->next)
     {
       GIcon *emblem_icon = G_ICON (l->data);
 
@@ -306,8 +381,8 @@
     }
 
   emblemed_icon = g_object_new (G_TYPE_EMBLEMED_ICON, NULL);
-  emblemed_icon->icon = g_icon_new_for_string (tokens[0], error);
-  if (emblemed_icon->icon == NULL)
+  emblemed_icon->priv->icon = g_icon_new_for_string (tokens[0], error);
+  if (emblemed_icon->priv->icon == NULL)
     goto fail;
 
   for (n = 1; n < num_tokens; n++)
@@ -328,7 +403,7 @@
           goto fail;
         }
 
-      emblemed_icon->emblems = g_list_append (emblemed_icon->emblems, emblem);
+      emblemed_icon->priv->emblems = g_list_append (emblemed_icon->priv->emblems, emblem);
     }
 
   return G_ICON (emblemed_icon);
diff --git a/gio/gemblemedicon.h b/gio/gemblemedicon.h
index 7a5dc4d..ded6928 100644
--- a/gio/gemblemedicon.h
+++ b/gio/gemblemedicon.h
@@ -47,6 +47,20 @@
  **/
 typedef struct _GEmblemedIcon        GEmblemedIcon;
 typedef struct _GEmblemedIconClass   GEmblemedIconClass;
+typedef struct _GEmblemedIconPrivate GEmblemedIconPrivate;
+
+struct _GEmblemedIcon
+{
+  GObject parent_instance;
+
+  /*< private >*/
+  GEmblemedIconPrivate *priv;
+};
+
+struct _GEmblemedIconClass
+{
+  GObjectClass parent_class;
+};
 
 GType  g_emblemed_icon_get_type    (void) G_GNUC_CONST;
 
@@ -56,6 +70,7 @@
 GList *g_emblemed_icon_get_emblems (GEmblemedIcon *emblemed);
 void   g_emblemed_icon_add_emblem  (GEmblemedIcon *emblemed,
                                     GEmblem       *emblem);
+void   g_emblemed_icon_clear_emblems  (GEmblemedIcon *emblemed);
 
 G_END_DECLS
 
diff --git a/gio/gfile.c b/gio/gfile.c
index 4cfec8f..da3477b 100644
--- a/gio/gfile.c
+++ b/gio/gfile.c
@@ -822,7 +822,7 @@
  * @file: input #GFile.
  * @attributes: an attribute query string.
  * @flags: a set of #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting.
  *
  * Gets the requested information about the files in a directory. The result
@@ -884,9 +884,10 @@
  * @flags: a set of #GFileQueryInfoFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *     request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the requested information about the files in a directory. The result
  * is a #GFileEnumerator object that will give out #GFileInfo objects for
@@ -957,7 +958,7 @@
 /**
  * g_file_query_exists:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  *
  * Utility function to check if a particular file exists. This is
  * implemented using g_file_query_info() and as such does blocking I/O.
@@ -1007,7 +1008,7 @@
  * g_file_query_file_type:
  * @file: input #GFile.
  * @flags: a set of #GFileQueryInfoFlags passed to g_file_query_info().
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  *
  * Utility function to inspect the #GFileType of a file. This is
  * implemented using g_file_query_info() and as such does blocking I/O.
@@ -1047,7 +1048,7 @@
  * @file: input #GFile.
  * @attributes: an attribute query string.
  * @flags: a set of #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError.
  *
  * Gets the requested information about specified @file. The result
@@ -1113,9 +1114,9 @@
  * @flags: a set of #GFileQueryInfoFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Asynchronously gets the requested information about specified @file. The result
  * is a #GFileInfo object that contains key-value attributes (such as type or size
@@ -1187,7 +1188,7 @@
  * g_file_query_filesystem_info:
  * @file: input #GFile.
  * @attributes:  an attribute query string.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError. 
  * 
  * Similar to g_file_query_info(), but obtains information
@@ -1247,9 +1248,9 @@
  * @attributes: an attribute query string.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Asynchronously gets the requested information about the filesystem
  * that the specified @file is on. The result is a #GFileInfo object
@@ -1320,7 +1321,7 @@
 /**
  * g_file_find_enclosing_mount:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError. 
  *
  * Gets a #GMount for the #GFile. 
@@ -1367,9 +1368,9 @@
  * @file: a #GFile
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the mount for the file.
  *
@@ -1435,7 +1436,7 @@
 /**
  * g_file_read:
  * @file: #GFile to read.
- * @cancellable: a #GCancellable
+ * @cancellable: (allow-none): a #GCancellable
  * @error: a #GError, or %NULL
  *
  * Opens a file for reading. The result is a #GFileInputStream that
@@ -1482,7 +1483,7 @@
  * g_file_append_to:
  * @file: input #GFile.
  * @flags: a set of #GFileCreateFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  *
  * Gets an output stream for appending data to the file. If
@@ -1536,7 +1537,7 @@
  * g_file_create:
  * @file: input #GFile.
  * @flags: a set of #GFileCreateFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  *
  * Creates a new file and returns an output stream for writing to it.
@@ -1596,7 +1597,7 @@
  *     current #GFile, or #NULL to ignore.
  * @make_backup: %TRUE if a backup should be created.
  * @flags: a set of #GFileCreateFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  *
  * Returns an output stream for overwriting the file, possibly
@@ -1680,7 +1681,7 @@
 /**
  * g_file_open_readwrite:
  * @file: #GFile to open
- * @cancellable: a #GCancellable
+ * @cancellable: (allow-none): a #GCancellable
  * @error: a #GError, or %NULL
  *
  * Opens an existing file for reading and writing. The result is
@@ -1731,7 +1732,7 @@
  * g_file_create_readwrite:
  * @file: a #GFile
  * @flags: a set of #GFileCreateFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: return location for a #GError, or %NULL
  *
  * Creates a new file and returns a stream for reading and writing to it.
@@ -1794,7 +1795,7 @@
  *     current #GFile, or #NULL to ignore
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: return location for a #GError, or %NULL
  *
  * Returns an output stream for overwriting the file in readwrite mode,
@@ -1846,9 +1847,9 @@
  * @file: input #GFile
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously opens @file for reading.
  *
@@ -1916,9 +1917,9 @@
  * @flags: a set of #GFileCreateFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request. 
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Asynchronously opens @file for appending.
  *
@@ -1988,9 +1989,9 @@
  * @flags: a set of #GFileCreateFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Asynchronously creates a new file and returns an output stream for writing to it.
  * The file must not already exist.
@@ -2064,9 +2065,9 @@
  * @flags: a set of #GFileCreateFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously overwrites the file, replacing the contents, possibly
  * creating a backup copy of the file first.
@@ -2141,9 +2142,9 @@
  * @file: input #GFile.
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously opens @file for reading and writing.
  *
@@ -2216,9 +2217,9 @@
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously creates a new file and returns a stream for reading and
  * writing to it. The file must not already exist.
@@ -2296,9 +2297,9 @@
  * @flags: a set of #GFileCreateFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously overwrites the file in read-write mode, replacing the
  * contents, possibly creating a backup copy of the file first.
@@ -2570,7 +2571,7 @@
  * @source: a #GFile with attributes.
  * @destination: a #GFile to copy attributes to.
  * @flags: a set of #GFileCopyFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  *
  * Copies the file attributes from @source to @destination. 
@@ -2988,7 +2989,7 @@
  * @source: input #GFile.
  * @destination: destination #GFile
  * @flags: set of #GFileCopyFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @progress_callback: (scope call): function to callback with progress information
  * @progress_callback_data: (closure): user data to pass to @progress_callback
  * @error: #GError to set on error, or %NULL
@@ -3105,7 +3106,7 @@
 }
 
 /**
- * g_file_copy_async:
+ * g_file_copy_async: (skip)
  * @source: input #GFile.
  * @destination: destination #GFile
  * @flags: set of #GFileCopyFlags
@@ -3193,7 +3194,7 @@
  * @source: #GFile pointing to the source location.
  * @destination: #GFile pointing to the destination location.
  * @flags: set of #GFileCopyFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @progress_callback: (scope call): #GFileProgressCallback function for updates.
  * @progress_callback_data: (closure): gpointer to user data for the callback function.
  * @error: #GError for returning error conditions, or %NULL
@@ -3320,7 +3321,7 @@
 /**
  * g_file_make_directory
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL 
  *
  * Creates a directory. Note that this will only create a child directory of
@@ -3368,7 +3369,7 @@
 /**
  * g_file_make_directory_with_parents:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL 
  *
  * Creates a directory and any parent directories that may not exist similar to
@@ -3450,7 +3451,7 @@
  * g_file_make_symbolic_link:
  * @file: a #GFile with the name of the symlink to create
  * @symlink_value: a string with the path for the target of the new symlink
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError.
  *
  * Creates a symbolic link named @file which contains the string
@@ -3500,7 +3501,7 @@
 /**
  * g_file_delete:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL 
  * 
  * Deletes a file. If the @file is a directory, it will only be deleted if it 
@@ -3541,7 +3542,7 @@
 /**
  * g_file_trash:
  * @file: #GFile to send to trash.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  *
  * Sends @file to the "Trashcan", if possible. This is similar to
@@ -3585,7 +3586,7 @@
  * g_file_set_display_name:
  * @file: input #GFile.
  * @display_name: a string.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Renames @file to the specified display name.
@@ -3641,9 +3642,9 @@
  * @display_name: a string.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request. 
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Asynchronously sets the display name for a given #GFile.
  * 
@@ -3711,7 +3712,7 @@
 /**
  * g_file_query_settable_attributes:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Obtain the list of settable attributes for the file.
@@ -3767,7 +3768,7 @@
 /**
  * g_file_query_writable_namespaces:
  * @file: input #GFile.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Obtain the list of attribute namespaces where new attributes 
@@ -3824,7 +3825,7 @@
  * @type: The type of the attribute
  * @value_p: a pointer to the value (or the pointer itself if the type is a pointer type)
  * @flags: a set of #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets an attribute in the file with attribute name @attribute to @value.
@@ -3870,7 +3871,7 @@
  * @file: input #GFile.
  * @info: a #GFileInfo.
  * @flags: #GFileQueryInfoFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL 
  * 
  * Tries to set all attributes in the #GFileInfo on the target values, 
@@ -3963,9 +3964,9 @@
  * @flags: a #GFileQueryInfoFlags.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request. 
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback. 
- * @user_data: a #gpointer.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback. 
+ * @user_data: (closure): a #gpointer.
  *
  * Asynchronously sets the attributes of @file with @info.
  * 
@@ -4034,7 +4035,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a string containing the attribute's value.
  * @flags: #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_STRING to @value. 
@@ -4065,7 +4066,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a string containing the attribute's new value.
  * @flags: a #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to @value. 
@@ -4098,7 +4099,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a #guint32 containing the attribute's new value.
  * @flags: a #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT32 to @value. 
@@ -4130,7 +4131,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a #gint32 containing the attribute's new value.
  * @flags: a #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT32 to @value. 
@@ -4162,7 +4163,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a #guint64 containing the attribute's new value.
  * @flags: a #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT64 to @value. 
@@ -4194,7 +4195,7 @@
  * @attribute: a string containing the attribute's name.
  * @value: a #guint64 containing the attribute's new value.
  * @flags: a #GFileQueryInfoFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL
  * 
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT64 to @value. 
@@ -4224,9 +4225,9 @@
  * @file: input #GFile.
  * @flags: flags affecting the operation
  * @mount_operation: a #GMountOperation, or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Mounts a file of type G_FILE_TYPE_MOUNTABLE.
  * Using @mount_operation, you can request callbacks when, for instance, 
@@ -4311,9 +4312,9 @@
  * g_file_unmount_mountable:
  * @file: input #GFile.
  * @flags: flags affecting the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
+ * @user_data: (closure): the data to pass to callback function
  *
  * Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
  *
@@ -4399,9 +4400,9 @@
  * @file: input #GFile.
  * @flags: flags affecting the operation
  * @mount_operation: a #GMountOperation, or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
+ * @user_data: (closure): the data to pass to callback function
  *
  * Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
  *
@@ -4498,9 +4499,9 @@
  * g_file_eject_mountable:
  * @file: input #GFile.
  * @flags: flags affecting the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Starts an asynchronous eject on a mountable.  
  * When this operation has completed, @callback will be called with
@@ -4584,9 +4585,9 @@
  * @file: input #GFile.
  * @flags: flags affecting the operation
  * @mount_operation: a #GMountOperation, or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL.
+ * @user_data: (closure): the data to pass to callback function
  *
  * Starts an asynchronous eject on a mountable.
  * When this operation has completed, @callback will be called with
@@ -4681,7 +4682,7 @@
  * g_file_monitor_directory:
  * @file: input #GFile.
  * @flags: a set of #GFileMonitorFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL.
  * 
  * Obtains a directory monitor for the given file.
@@ -4725,7 +4726,7 @@
  * g_file_monitor_file:
  * @file: input #GFile.
  * @flags: a set of #GFileMonitorFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, or %NULL.
  * 
  * Obtains a file monitor for the given file. If no file notification
@@ -4770,7 +4771,7 @@
  * g_file_monitor:
  * @file: input #GFile
  * @flags: a set of #GFileMonitorFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: a #GError, or %NULL
  * 
  * Obtains a file or directory monitor for the given file, depending
@@ -6379,7 +6380,7 @@
 }
 
 /**
- * g_file_load_partial_contents_async:
+ * g_file_load_partial_contents_async: (skip)
  * @file: input #GFile.
  * @cancellable: optional #GCancellable object, %NULL to ignore.
  * @read_more_callback: a #GFileReadMoreCallback to receive partial data and to specify whether further data should be read.
diff --git a/gio/gfileenumerator.c b/gio/gfileenumerator.c
index ac7a724..b8e7339 100644
--- a/gio/gfileenumerator.c
+++ b/gio/gfileenumerator.c
@@ -173,7 +173,7 @@
 /**
  * g_file_enumerator_next_file:
  * @enumerator: a #GFileEnumerator.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Returns information for the next file in the enumerated object.
@@ -238,7 +238,7 @@
 /**
  * g_file_enumerator_close:
  * @enumerator: a #GFileEnumerator.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Releases all resources used by this enumerator, making the
@@ -305,9 +305,9 @@
  * @num_files: the number of file info objects to request
  * @io_priority: the <link linkend="gioscheduler">io priority</link> 
  *     of the request. 
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Request information for a number of files from the enumerator asynchronously.
  * When all i/o for the operation is finished the @callback will be called with
@@ -439,9 +439,9 @@
  * @enumerator: a #GFileEnumerator.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously closes the file enumerator. 
  *
diff --git a/gio/gfileenumerator.h b/gio/gfileenumerator.h
index a0cfaaf..9cd2f3e 100644
--- a/gio/gfileenumerator.h
+++ b/gio/gfileenumerator.h
@@ -74,7 +74,7 @@
                                      GAsyncReadyCallback   callback,
                                      gpointer              user_data);
   GList *     (* next_files_finish) (GFileEnumerator      *enumerator,
-                                     GAsyncResult         *res,
+                                     GAsyncResult         *result,
                                      GError              **error);
   void        (* close_async)       (GFileEnumerator      *enumerator,
                                      int                   io_priority,
@@ -82,7 +82,7 @@
                                      GAsyncReadyCallback   callback,
                                      gpointer              user_data);
   gboolean    (* close_finish)      (GFileEnumerator      *enumerator,
-                                     GAsyncResult         *res,
+                                     GAsyncResult         *result,
                                      GError              **error);
 
   /*< private >*/
diff --git a/gio/gfileinputstream.c b/gio/gfileinputstream.c
index 685d768..42942b4 100644
--- a/gio/gfileinputstream.c
+++ b/gio/gfileinputstream.c
@@ -112,7 +112,7 @@
  * g_file_input_stream_query_info:
  * @stream: a #GFileInputStream.
  * @attributes: a file attribute query string.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError location to store the error occuring, or %NULL to 
  * ignore.
  *
@@ -180,9 +180,9 @@
  * @attributes: a file attribute query string.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Queries the stream information asynchronously.
  * When the operation is finished @callback will be called. 
diff --git a/gio/gfileinputstream.h b/gio/gfileinputstream.h
index 3c162c7..08c056e 100644
--- a/gio/gfileinputstream.h
+++ b/gio/gfileinputstream.h
@@ -79,7 +79,7 @@
                                      GAsyncReadyCallback   callback,
                                      gpointer              user_data);
   GFileInfo * (* query_info_finish) (GFileInputStream     *stream,
-                                     GAsyncResult         *res,
+                                     GAsyncResult         *result,
                                      GError              **error);
 
   /*< private >*/
diff --git a/gio/gfileiostream.c b/gio/gfileiostream.c
index 1e5f17f..85a8dd9 100644
--- a/gio/gfileiostream.c
+++ b/gio/gfileiostream.c
@@ -115,7 +115,7 @@
  * g_file_io_stream_query_info:
  * @stream: a #GFileIOStream.
  * @attributes: a file attribute query string.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError, %NULL to ignore.
  *
  * Queries a file io stream for the given @attributes.
@@ -196,9 +196,9 @@
  * @attributes: a file attribute query string.
  * @io_priority: the <link linkend="gio-GIOScheduler">I/O priority</link>
  *     of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously queries the @stream for a #GFileInfo. When completed,
  * @callback will be called with a #GAsyncResult which can be used to
diff --git a/gio/gfileiostream.h b/gio/gfileiostream.h
index 09c9922..31497e3 100644
--- a/gio/gfileiostream.h
+++ b/gio/gfileiostream.h
@@ -84,7 +84,7 @@
                                      GAsyncReadyCallback   callback,
                                      gpointer              user_data);
   GFileInfo * (* query_info_finish) (GFileIOStream     *stream,
-                                     GAsyncResult         *res,
+                                     GAsyncResult         *result,
                                      GError              **error);
   char      * (* get_etag)          (GFileIOStream    *stream);
 
diff --git a/gio/gfileoutputstream.h b/gio/gfileoutputstream.h
index b2c27f5..3b5f85d 100644
--- a/gio/gfileoutputstream.h
+++ b/gio/gfileoutputstream.h
@@ -84,7 +84,7 @@
                                      GAsyncReadyCallback   callback,
                                      gpointer              user_data);
   GFileInfo * (* query_info_finish) (GFileOutputStream     *stream,
-                                     GAsyncResult         *res,
+                                     GAsyncResult         *result,
                                      GError              **error);
   char      * (* get_etag)          (GFileOutputStream    *stream);
 
diff --git a/gio/gicon.c b/gio/gicon.c
index 115a3f5..c78acd3 100644
--- a/gio/gicon.c
+++ b/gio/gicon.c
@@ -397,8 +397,8 @@
  * implementations you need to ensure that each #GType is registered
  * with the type system prior to calling g_icon_new_for_string().
  *
- * Returns: An object implementing the #GIcon interface or %NULL if
- * @error is set.
+ * Returns: (transfer full): An object implementing the #GIcon
+ *          interface or %NULL if @error is set.
  *
  * Since: 2.20
  **/
diff --git a/gio/ginetaddress.c b/gio/ginetaddress.c
index 429cac2..0f67e4f 100644
--- a/gio/ginetaddress.c
+++ b/gio/ginetaddress.c
@@ -570,7 +570,7 @@
 }
 
 /**
- * g_inet_address_to_bytes:
+ * g_inet_address_to_bytes: (skip)
  * @address: a #GInetAddress
  *
  * Gets the raw binary address data from @address.
diff --git a/gio/ginetsocketaddress.c b/gio/ginetsocketaddress.c
index 3f0935b..071c49f 100644
--- a/gio/ginetsocketaddress.c
+++ b/gio/ginetsocketaddress.c
@@ -289,7 +289,7 @@
  *
  * Gets @address's #GInetAddress.
  *
- * Returns: (transfer full): the #GInetAddress for @address, which must be
+ * Returns: (transfer none): the #GInetAddress for @address, which must be
  * g_object_ref()'d if it will be stored
  *
  * Since: 2.22
diff --git a/gio/ginputstream.c b/gio/ginputstream.c
index 3071a47..53e84a0 100644
--- a/gio/ginputstream.c
+++ b/gio/ginputstream.c
@@ -139,7 +139,7 @@
  * @stream: a #GInputStream.
  * @buffer: a buffer to read data into (which should be at least count bytes long).
  * @count: the number of bytes that will be read from the stream
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to read @count bytes from the stream into the buffer starting at
@@ -216,8 +216,8 @@
  * @stream: a #GInputStream.
  * @buffer: a buffer to read data into (which should be at least count bytes long).
  * @count: the number of bytes that will be read from the stream
- * @bytes_read: location to store the number of bytes that was read from the stream
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @bytes_read: (out): location to store the number of bytes that was read from the stream
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to read @count bytes from the stream into the buffer starting at
@@ -277,7 +277,7 @@
  * g_input_stream_skip:
  * @stream: a #GInputStream.
  * @count: the number of bytes that will be skipped from the stream
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to skip @count bytes from the stream. Will block during the operation.
@@ -393,7 +393,7 @@
 /**
  * g_input_stream_close:
  * @stream: A #GInputStream.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Closes the stream, releasing resources related to it.
@@ -492,9 +492,9 @@
  * @count: the number of bytes that will be read from the stream
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  * of the request. 
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Request an asynchronous read of @count bytes from the stream into the buffer
  * starting at @buffer. When the operation is finished @callback will be called. 
@@ -617,9 +617,9 @@
  * @count: the number of bytes that will be skipped from the stream
  * @io_priority: the <link linkend="io-priority">I/O priority</link>
  * of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Request an asynchronous skip of @count bytes from the stream.
  * When the operation is finished @callback will be called.
@@ -740,9 +740,9 @@
  * @stream: A #GInputStream.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  * of the request. 
- * @cancellable: optional cancellable object
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Requests an asynchronous closes of the stream, releasing resources related to it.
  * When the operation is finished @callback will be called. 
diff --git a/gio/gio.h b/gio/gio.h
index 306012f..6dcccfe 100644
--- a/gio/gio.h
+++ b/gio/gio.h
@@ -93,7 +93,6 @@
 #include <gio/gnetworkaddress.h>
 #include <gio/gnetworkservice.h>
 #include <gio/goutputstream.h>
-#include <gio/gperiodic.h>
 #include <gio/gpermission.h>
 #include <gio/gpollableinputstream.h>
 #include <gio/gpollableoutputstream.h>
diff --git a/gio/gio.symbols b/gio/gio.symbols
index 13d1e8a..fc4b590 100644
--- a/gio/gio.symbols
+++ b/gio/gio.symbols
@@ -84,6 +84,7 @@
 g_app_info_should_show
 g_app_info_set_as_default_for_type
 g_app_info_set_as_default_for_extension
+g_app_info_set_as_last_used_for_type
 g_app_info_add_supports_type
 g_app_info_can_remove_supports_type
 g_app_info_remove_supports_type
@@ -130,11 +131,12 @@
 g_desktop_app_info_new_from_keyfile
 g_desktop_app_info_new
 g_desktop_app_info_get_filename
-g_desktop_app_info_get_type G_GNUC_CONST
 g_desktop_app_info_get_is_hidden
-g_desktop_app_info_set_desktop_env
+g_desktop_app_info_get_type G_GNUC_CONST
+g_desktop_app_info_launch_uris_as_manager
 g_desktop_app_info_lookup_get_type G_GNUC_CONST
 g_desktop_app_info_lookup_get_default_for_uri_scheme
+g_desktop_app_info_set_desktop_env
 #endif
 #endif
 #endif
@@ -663,6 +665,8 @@
 g_io_stream_has_pending
 g_io_stream_set_pending
 g_io_stream_clear_pending
+g_io_stream_splice_async
+g_io_stream_splice_finish
 #endif
 #endif
 
@@ -1033,6 +1037,7 @@
 g_file_type_get_type G_GNUC_CONST
 g_filesystem_preview_type_get_type G_GNUC_CONST
 g_io_error_enum_get_type G_GNUC_CONST
+g_io_stream_splice_flags_get_type G_GNUC_CONST
 g_mount_mount_flags_get_type G_GNUC_CONST
 g_mount_operation_result_get_type G_GNUC_CONST
 g_drive_start_flags_get_type G_GNUC_CONST
@@ -1081,6 +1086,7 @@
 g_emblemed_icon_get_icon
 g_emblemed_icon_get_emblems
 g_emblemed_icon_add_emblem
+g_emblemed_icon_clear_emblems
 #endif
 #endif
 
@@ -1539,13 +1545,20 @@
 g_settings_backend_path_writable_changed
 g_settings_backend_writable_changed
 g_settings_backend_changed_tree
-#endif
+g_settings_backend_get_default
 #endif
 
-#if IN_HEADER(__G_SETTINGS_BACKEND_H__)
 #if IN_FILE(__G_KEYFILE_SETTINGS_BACKEND_C__)
 g_keyfile_settings_backend_new
 #endif
+
+#if IN_FILE(__G_MEMORY_SETTINGS_BACKEND_C__)
+g_memory_settings_backend_new
+#endif
+
+#if IN_FILE(__G_NULL_SETTINGS_BACKEND_C__)
+g_null_settings_backend_new
+#endif
 #endif
 
 #if IN_HEADER(__G_SETTINGS_H__)
@@ -1971,21 +1984,6 @@
 #endif
 #endif
 
-#if IN_HEADER(__G_PERIODIC_H__)
-#if IN_FILE(__G_PERIODIC_C__)
-g_periodic_block
-g_periodic_damaged
-g_periodic_get_hz
-g_periodic_get_high_priority
-g_periodic_get_low_priority
-g_periodic_get_type
-g_periodic_new
-g_periodic_add
-g_periodic_remove
-g_periodic_unblock
-#endif
-#endif
-
 #if IN_HEADER(__G_POLLABLE_INPUT_STREAM_H__)
 #if IN_FILE(__G_POLLABLE_INPUT_STREAM_C__)
 g_pollable_input_stream_get_type G_GNUC_CONST
@@ -2036,25 +2034,27 @@
 g_tls_certificate_new_from_file
 g_tls_certificate_new_from_files
 g_tls_certificate_new_from_pem
+g_tls_certificate_verify
 #endif
 #endif
 
 #if IN_HEADER(__G_TLS_CONNECTION_H__)
 #if IN_FILE(__G_TLS_CONNECTION_C__)
 g_tls_connection_emit_accept_certificate
-g_tls_connection_emit_need_certificate
 g_tls_connection_get_certificate
 g_tls_connection_get_peer_certificate
+g_tls_connection_get_peer_certificate_errors
 g_tls_connection_get_rehandshake_mode
 g_tls_connection_get_require_close_notify
+g_tls_connection_get_use_system_certdb
 g_tls_connection_get_type G_GNUC_CONST
 g_tls_connection_handshake
 g_tls_connection_handshake_async
 g_tls_connection_handshake_finish
 g_tls_connection_set_certificate
-g_tls_connection_set_peer_certificate
 g_tls_connection_set_rehandshake_mode
 g_tls_connection_set_require_close_notify
+g_tls_connection_set_use_system_certdb
 #endif
 #endif
 
diff --git a/gio/gioenums.h b/gio/gioenums.h
index 039b5dc..0b2c576 100644
--- a/gio/gioenums.h
+++ b/gio/gioenums.h
@@ -572,6 +572,27 @@
 
 
 /**
+ * GIOStreamSpliceFlags:
+ * @G_IO_STREAM_SPLICE_NONE: Do not close either stream.
+ * @G_IO_STREAM_SPLICE_CLOSE_STREAM1: Close the first stream after
+ *     the splice.
+ * @G_IO_STREAM_SPLICE_CLOSE_STREAM2: Close the second stream after
+ *     the splice.
+ * @G_IO_STREAM_SPLICE_WAIT_FOR_BOTH: Wait for both splice operations to finish
+ *     before calling the callback.
+ *
+ * GIOStreamSpliceFlags determine how streams should be spliced.
+ *
+ * Since: 2.28
+ **/
+typedef enum {
+  G_IO_STREAM_SPLICE_NONE          = 0,
+  G_IO_STREAM_SPLICE_CLOSE_STREAM1 = (1 << 0),
+  G_IO_STREAM_SPLICE_CLOSE_STREAM2 = (1 << 1),
+  G_IO_STREAM_SPLICE_WAIT_FOR_BOTH = (1 << 2)
+} GIOStreamSpliceFlags;
+
+/**
  * GEmblemOrigin:
  * @G_EMBLEM_ORIGIN_UNKNOWN: Emblem of unknown origin
  * @G_EMBLEM_ORIGIN_DEVICE: Emblem adds device-specific information
@@ -1251,6 +1272,7 @@
 
 /**
  * GTlsError:
+ * @G_TLS_ERROR_UNAVAILABLE: No TLS provider is available
  * @G_TLS_ERROR_MISC: Miscellaneous TLS error
  * @G_TLS_ERROR_BAD_CERTIFICATE: A certificate could not be parsed
  * @G_TLS_ERROR_NOT_TLS: The TLS handshake failed because the
@@ -1259,7 +1281,7 @@
  *   peer's certificate was not acceptable.
  * @G_TLS_ERROR_CERTIFICATE_REQUIRED: The TLS handshake failed because
  *   the server requested a client-side certificate, but none was
- *   provided. See #GTlsConnection::need-certificate.
+ *   provided. See g_tls_connection_set_certificate().
  * @G_TLS_ERROR_EOF: The TLS connection was closed without proper
  *   notice, which may indicate an attack. See
  *   g_tls_connection_set_require_close_notify().
@@ -1270,6 +1292,7 @@
  * Since: 2.28
  */
 typedef enum {
+  G_TLS_ERROR_UNAVAILABLE,
   G_TLS_ERROR_MISC,
   G_TLS_ERROR_BAD_CERTIFICATE,
   G_TLS_ERROR_NOT_TLS,
diff --git a/gio/giomodule.c b/gio/giomodule.c
index cb05270..00e8c48 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
@@ -26,12 +26,12 @@
 
 #include "giomodule.h"
 #include "giomodule-priv.h"
-#include "gmemorysettingsbackend.h"
 #include "glocalfilemonitor.h"
 #include "glocaldirectorymonitor.h"
 #include "gnativevolumemonitor.h"
 #include "gproxyresolver.h"
 #include "gproxy.h"
+#include "gsettingsbackendinternal.h"
 #include "gsocks4proxy.h"
 #include "gsocks4aproxy.h"
 #include "gsocks5proxy.h"
@@ -598,6 +598,7 @@
 	}
 
       /* Initialize types from built-in "modules" */
+      g_null_settings_backend_get_type ();
       g_memory_settings_backend_get_type ();
 #if defined(HAVE_SYS_INOTIFY_H) || defined(HAVE_LINUX_INOTIFY_H)
       _g_inotify_directory_monitor_get_type ();
diff --git a/gio/giostream.c b/gio/giostream.c
index 7c5bdf0..db3cd92 100644
--- a/gio/giostream.c
+++ b/gio/giostream.c
@@ -361,7 +361,7 @@
 /**
  * g_io_stream_close:
  * @stream: a #GIOStream
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Closes the stream, releasing resources related to it. This will also
@@ -454,9 +454,9 @@
  * g_io_stream_close_async:
  * @stream: a #GIOStream
  * @io_priority: the io priority of the request
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
- * @cancellable: optional cancellable object
+ * @cancellable: (allow-none): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Requests an asynchronous close of the stream, releasing resources
  * related to it. When the operation is finished @callback will be
@@ -606,3 +606,255 @@
 		  g_io_stream_real_close_async);
   return TRUE;
 }
+
+typedef struct
+{
+  GIOStream *stream1;
+  GIOStream *stream2;
+  GIOStreamSpliceFlags flags;
+  gint io_priority;
+  GCancellable *cancellable;
+  gulong cancelled_id;
+  GCancellable *op1_cancellable;
+  GCancellable *op2_cancellable;
+  guint completed;
+  GError *error;
+} SpliceContext;
+
+static void
+splice_context_free (SpliceContext *ctx)
+{
+  g_object_unref (ctx->stream1);
+  g_object_unref (ctx->stream2);
+  if (ctx->cancellable != NULL)
+    g_object_unref (ctx->cancellable);
+  g_object_unref (ctx->op1_cancellable);
+  g_object_unref (ctx->op2_cancellable);
+  g_clear_error (&ctx->error);
+  g_slice_free (SpliceContext, ctx);
+}
+
+static void
+splice_complete (GSimpleAsyncResult *simple,
+                 SpliceContext      *ctx)
+{
+  if (ctx->cancelled_id != 0)
+    g_cancellable_disconnect (ctx->cancellable, ctx->cancelled_id);
+  ctx->cancelled_id = 0;
+
+  if (ctx->error != NULL)
+    g_simple_async_result_set_from_error (simple, ctx->error);
+  g_simple_async_result_complete (simple);
+}
+
+static void
+splice_close_cb (GObject      *iostream,
+                 GAsyncResult *res,
+                 gpointer      user_data)
+{
+  GSimpleAsyncResult *simple = user_data;
+  SpliceContext *ctx;
+  GError *error = NULL;
+
+  g_io_stream_close_finish (G_IO_STREAM (iostream), res, &error);
+
+  ctx = g_simple_async_result_get_op_res_gpointer (simple);
+  ctx->completed++;
+
+  /* Keep the first error that occured */
+  if (error != NULL && ctx->error == NULL)
+    ctx->error = error;
+  else
+    g_clear_error (&error);
+
+  /* If all operations are done, complete now */
+  if (ctx->completed == 4)
+    splice_complete (simple, ctx);
+
+  g_object_unref (simple);
+}
+
+static void
+splice_cb (GObject      *ostream,
+           GAsyncResult *res,
+           gpointer      user_data)
+{
+  GSimpleAsyncResult *simple = user_data;
+  SpliceContext *ctx;
+  GError *error = NULL;
+
+  g_output_stream_splice_finish (G_OUTPUT_STREAM (ostream), res, &error);
+
+  ctx = g_simple_async_result_get_op_res_gpointer (simple);
+  ctx->completed++;
+
+  /* ignore cancellation error if it was not requested by the user */
+  if (error != NULL &&
+      g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
+      (ctx->cancellable == NULL ||
+       !g_cancellable_is_cancelled (ctx->cancellable)))
+    g_clear_error (&error);
+
+  /* Keep the first error that occured */
+  if (error != NULL && ctx->error == NULL)
+    ctx->error = error;
+  else
+    g_clear_error (&error);
+
+   if (ctx->completed == 1 &&
+       (ctx->flags & G_IO_STREAM_SPLICE_WAIT_FOR_BOTH) == 0)
+    {
+      /* We don't want to wait for the 2nd operation to finish, cancel it */
+      g_cancellable_cancel (ctx->op1_cancellable);
+      g_cancellable_cancel (ctx->op2_cancellable);
+    }
+  else if (ctx->completed == 2)
+    {
+      if (ctx->cancellable == NULL ||
+          !g_cancellable_is_cancelled (ctx->cancellable))
+        {
+          g_cancellable_reset (ctx->op1_cancellable);
+          g_cancellable_reset (ctx->op2_cancellable);
+        }
+
+      /* Close the IO streams if needed */
+      if ((ctx->flags & G_IO_STREAM_SPLICE_CLOSE_STREAM1) != 0)
+        g_io_stream_close_async (ctx->stream1, ctx->io_priority,
+            ctx->op1_cancellable, splice_close_cb, g_object_ref (simple));
+      else
+        ctx->completed++;
+
+      if ((ctx->flags & G_IO_STREAM_SPLICE_CLOSE_STREAM2) != 0)
+        g_io_stream_close_async (ctx->stream2, ctx->io_priority,
+            ctx->op2_cancellable, splice_close_cb, g_object_ref (simple));
+      else
+        ctx->completed++;
+
+      /* If all operations are done, complete now */
+      if (ctx->completed == 4)
+        splice_complete (simple, ctx);
+    }
+
+  g_object_unref (simple);
+}
+
+static void
+splice_cancelled_cb (GCancellable       *cancellable,
+                     GSimpleAsyncResult *simple)
+{
+  SpliceContext *ctx;
+
+  ctx = g_simple_async_result_get_op_res_gpointer (simple);
+  g_cancellable_cancel (ctx->op1_cancellable);
+  g_cancellable_cancel (ctx->op2_cancellable);
+}
+
+/**
+ * g_io_stream_splice_async:
+ * @stream1: a #GIOStream.
+ * @stream2: a #GIOStream.
+ * @flags: a set of #GIOStreamSpliceFlags.
+ * @io_priority: the io priority of the request.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
+ *
+ * Asyncronously splice the output stream of @stream1 to the input stream of
+ * @stream2, and splice the output stream of @stream2 to the input stream of
+ * @stream1.
+ *
+ * When the operation is finished @callback will be called.
+ * You can then call g_io_stream_splice_finish() to get the
+ * result of the operation.
+ *
+ * Since: 2.28
+ **/
+void
+g_io_stream_splice_async (GIOStream            *stream1,
+                          GIOStream            *stream2,
+                          GIOStreamSpliceFlags  flags,
+                          gint                  io_priority,
+                          GCancellable         *cancellable,
+                          GAsyncReadyCallback   callback,
+                          gpointer              user_data)
+{
+  GSimpleAsyncResult *simple;
+  SpliceContext *ctx;
+  GInputStream *istream;
+  GOutputStream *ostream;
+
+  if (cancellable != NULL && g_cancellable_is_cancelled (cancellable))
+    {
+      g_simple_async_report_error_in_idle (NULL, callback,
+          user_data, G_IO_ERROR, G_IO_ERROR_CANCELLED,
+          "Operation has been cancelled");
+      return;
+    }
+
+  ctx = g_slice_new0 (SpliceContext);
+  ctx->stream1 = g_object_ref (stream1);
+  ctx->stream2 = g_object_ref (stream2);
+  ctx->flags = flags;
+  ctx->io_priority = io_priority;
+  ctx->op1_cancellable = g_cancellable_new ();
+  ctx->op2_cancellable = g_cancellable_new ();
+  ctx->completed = 0;
+
+  simple = g_simple_async_result_new (NULL, callback, user_data,
+      g_io_stream_splice_finish);
+  g_simple_async_result_set_op_res_gpointer (simple, ctx,
+      (GDestroyNotify) splice_context_free);
+
+  if (cancellable != NULL)
+    {
+      ctx->cancellable = g_object_ref (cancellable);
+      ctx->cancelled_id = g_cancellable_connect (cancellable,
+          G_CALLBACK (splice_cancelled_cb), g_object_ref (simple),
+          g_object_unref);
+    }
+
+  istream = g_io_stream_get_input_stream (stream1);
+  ostream = g_io_stream_get_output_stream (stream2);
+  g_output_stream_splice_async (ostream, istream, G_OUTPUT_STREAM_SPLICE_NONE,
+      io_priority, ctx->op1_cancellable, splice_cb,
+      g_object_ref (simple));
+
+  istream = g_io_stream_get_input_stream (stream2);
+  ostream = g_io_stream_get_output_stream (stream1);
+  g_output_stream_splice_async (ostream, istream, G_OUTPUT_STREAM_SPLICE_NONE,
+      io_priority, ctx->op2_cancellable, splice_cb,
+      g_object_ref (simple));
+
+  g_object_unref (simple);
+}
+
+/**
+ * g_io_stream_splice_finish:
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occuring, or %NULL to
+ * ignore.
+ *
+ * Finishes an asynchronous io stream splice operation.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise.
+ *
+ * Since: 2.28
+ **/
+gboolean
+g_io_stream_splice_finish (GAsyncResult  *result,
+                           GError       **error)
+{
+  GSimpleAsyncResult *simple;
+
+  g_return_val_if_fail (G_IS_SIMPLE_ASYNC_RESULT (result), FALSE);
+
+  simple = G_SIMPLE_ASYNC_RESULT (result);
+
+  if (g_simple_async_result_propagate_error (simple, error))
+    return FALSE;
+
+  g_return_val_if_fail (g_simple_async_result_is_valid (result, NULL,
+      g_io_stream_splice_finish), FALSE);
+
+  return TRUE;
+}
diff --git a/gio/giostream.h b/gio/giostream.h
index 048fd4f..90283dd 100644
--- a/gio/giostream.h
+++ b/gio/giostream.h
@@ -88,6 +88,17 @@
 GInputStream * g_io_stream_get_input_stream  (GIOStream            *stream);
 GOutputStream *g_io_stream_get_output_stream (GIOStream            *stream);
 
+void           g_io_stream_splice_async      (GIOStream            *stream1,
+					      GIOStream            *stream2,
+					      GIOStreamSpliceFlags  flags,
+					      int                   io_priority,
+					      GCancellable         *cancellable,
+					      GAsyncReadyCallback   callback,
+					      gpointer              user_data);
+
+gboolean       g_io_stream_splice_finish     (GAsyncResult         *result,
+                                              GError              **error);
+
 gboolean       g_io_stream_close             (GIOStream            *stream,
 					      GCancellable         *cancellable,
 					      GError              **error);
diff --git a/gio/gloadableicon.c b/gio/gloadableicon.c
index 1cad7fc..db86fd0 100644
--- a/gio/gloadableicon.c
+++ b/gio/gloadableicon.c
@@ -62,8 +62,9 @@
  * g_loadable_icon_load:
  * @icon: a #GLoadableIcon.
  * @size: an integer.
- * @type:  a location to store the type of the loaded icon, %NULL to ignore.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @type: (out) (allow-none): a location to store the type of the
+ *        loaded icon, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError location to store the error occuring, or %NULL to 
  * ignore.
  * 
@@ -92,9 +93,10 @@
  * g_loadable_icon_load_async:
  * @icon: a #GLoadableIcon.
  * @size: an integer.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *            request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Loads an icon asynchronously. To finish this function, see 
  * g_loadable_icon_load_finish(). For the synchronous, blocking 
diff --git a/gio/glocalfile.c b/gio/glocalfile.c
index 4641f2e..9e4aace 100644
--- a/gio/glocalfile.c
+++ b/gio/glocalfile.c
@@ -701,6 +701,8 @@
       return "xfs";
     case 0x012FD16D:
       return "xiafs";
+    case 0x52345362:
+      return "reiser4";
     default:
       return NULL;
     }
diff --git a/gio/gmemoryinputstream.c b/gio/gmemoryinputstream.c
index 397c6a5..9107b22 100644
--- a/gio/gmemoryinputstream.c
+++ b/gio/gmemoryinputstream.c
@@ -203,9 +203,9 @@
 
 /**
  * g_memory_input_stream_new_from_data:
- * @data: input data
+ * @data: (array length=len) (element-type guint8): input data
  * @len: length of the data, may be -1 if @data is a nul-terminated string
- * @destroy: function that is called to free @data, or %NULL
+ * @destroy: (allow-none): function that is called to free @data, or %NULL
  *
  * Creates a new #GMemoryInputStream with data in memory of a given size.
  * 
@@ -229,9 +229,9 @@
 /**
  * g_memory_input_stream_add_data:
  * @stream: a #GMemoryInputStream
- * @data: input data
+ * @data: (array length=len) (element-type guint8): input data
  * @len: length of the data, may be -1 if @data is a nul-terminated string
- * @destroy: function that is called to free @data, or %NULL
+ * @destroy: (allow-none): function that is called to free @data, or %NULL
  *
  * Appends @data to data that can be read from the input stream
  */
diff --git a/gio/gmemoryoutputstream.c b/gio/gmemoryoutputstream.c
index 3291be4..b6b532d 100644
--- a/gio/gmemoryoutputstream.c
+++ b/gio/gmemoryoutputstream.c
@@ -194,7 +194,7 @@
                                                        G_PARAM_STATIC_STRINGS));
 
   /**
-   * GMemoryOutputStream:realloc-function:
+   * GMemoryOutputStream:realloc-function: (skip)
    *
    * Function with realloc semantics called to enlarge the buffer.
    *
@@ -209,7 +209,7 @@
                                                          G_PARAM_STATIC_STRINGS));
 
   /**
-   * GMemoryOutputStream:destroy-function:
+   * GMemoryOutputStream:destroy-function: (skip)
    *
    * Function called with the buffer as argument when the stream is destroyed.
    *
@@ -328,7 +328,7 @@
 }
 
 /**
- * g_memory_output_stream_new:
+ * g_memory_output_stream_new: (skip)
  * @data: pointer to a chunk of memory to use, or %NULL
  * @size: the size of @data
  * @realloc_function: a function with realloc() semantics (like g_realloc())
@@ -376,7 +376,7 @@
 }
 
 /**
- * g_memory_output_stream_get_data: (skip)
+ * g_memory_output_stream_get_data:
  * @ostream: a #GMemoryOutputStream
  *
  * Gets any loaded data from the @ostream.
@@ -384,7 +384,7 @@
  * Note that the returned pointer may become invalid on the next
  * write or truncate operation on the stream.
  *
- * Returns: pointer to the stream's data
+ * Returns: (transfer none): pointer to the stream's data
  **/
 gpointer
 g_memory_output_stream_get_data (GMemoryOutputStream *ostream)
@@ -398,7 +398,7 @@
  * g_memory_output_stream_get_size:
  * @ostream: a #GMemoryOutputStream
  *
- * Gets the size of the currently allocated data area (availible from
+ * Gets the size of the currently allocated data area (available from
  * g_memory_output_stream_get_data()). If the stream isn't
  * growable (no realloc was passed to g_memory_output_stream_new()) then
  * this is the maximum size of the stream and further writes
diff --git a/gio/gmemorysettingsbackend.c b/gio/gmemorysettingsbackend.c
index 8176b60..eceebc1 100644
--- a/gio/gmemorysettingsbackend.c
+++ b/gio/gmemorysettingsbackend.c
@@ -22,9 +22,8 @@
 
 #include "config.h"
 
-#include "gmemorysettingsbackend.h"
 #include "gsimplepermission.h"
-#include "gsettingsbackend.h"
+#include "gsettingsbackendinternal.h"
 #include "giomodule.h"
 
 
@@ -370,3 +369,9 @@
   backend_class->remove = g_memory_settings_backend_remove;
   object_class->finalize = g_memory_settings_backend_finalize;
 }
+
+GSettingsBackend *
+g_memory_settings_backend_new (void)
+{
+  return g_object_new (G_TYPE_MEMORY_SETTINGS_BACKEND, NULL);
+}
diff --git a/gio/gmemorysettingsbackend.h b/gio/gmemorysettingsbackend.h
deleted file mode 100644
index 9b7756c..0000000
--- a/gio/gmemorysettingsbackend.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright © 2010 Codethink Limited
- *
- * 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 of the licence, 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ryan Lortie <desrt@desrt.ca>
- */
-
-#ifndef __GMEMORY_SETTINGS_BACKEND_H__
-#define __GMEMORY_SETTINGS_BACKEND_H__
-
-#include <glib-object.h>
-
-G_GNUC_INTERNAL
-GType g_memory_settings_backend_get_type (void);
-
-#endif /* __G_MEMORY_SETTINGS_BACKEND_H__ */
diff --git a/gio/gmount.c b/gio/gmount.c
index 983a9fe..4868fad 100644
--- a/gio/gmount.c
+++ b/gio/gmount.c
@@ -329,8 +329,8 @@
  * g_mount_unmount:
  * @mount: a #GMount.
  * @flags: flags affecting the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  * 
  * Unmounts a mount. This is an asynchronous operation, and is 
@@ -408,8 +408,8 @@
  * g_mount_eject:
  * @mount: a #GMount.
  * @flags: flags affecting the unmount if required for eject
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  * 
  * Ejects a mount. This is an asynchronous operation, and is 
@@ -486,9 +486,10 @@
  * g_mount_unmount_with_operation:
  * @mount: a #GMount.
  * @flags: flags affecting the operation
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  *
  * Unmounts a mount. This is an asynchronous operation, and is
@@ -573,9 +574,10 @@
  * g_mount_eject_with_operation:
  * @mount: a #GMount.
  * @flags: flags affecting the unmount if required for eject
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  *
  * Ejects a mount. This is an asynchronous operation, and is
@@ -658,9 +660,10 @@
  * g_mount_remount:
  * @mount: a #GMount.
  * @flags: flags affecting the operation
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  * 
  * Remounts a mount. This is an asynchronous operation, and is 
@@ -741,7 +744,7 @@
  * @mount: a #GMount
  * @force_rescan: Whether to force a rescan of the content. 
  *     Otherwise a cached result will be used if available
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @callback: a #GAsyncReadyCallback
  * @user_data: user data passed to @callback
  * 
@@ -831,7 +834,7 @@
  * @mount: a #GMount
  * @force_rescan: Whether to force a rescan of the content.
  *     Otherwise a cached result will be used if available
- * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
  * @error: a #GError location to store the error occuring, or %NULL to
  *     ignore
  *
diff --git a/gio/gnetworkaddress.c b/gio/gnetworkaddress.c
index 3f3962d..3a58325 100644
--- a/gio/gnetworkaddress.c
+++ b/gio/gnetworkaddress.c
@@ -781,7 +781,8 @@
   GSocketAddressEnumerator parent_instance;
 
   GNetworkAddress *addr;
-  GList *a;
+  GList *addresses;
+  GList *next;
 } GNetworkAddressAddressEnumerator;
 
 typedef struct {
@@ -811,31 +812,34 @@
     G_NETWORK_ADDRESS_ADDRESS_ENUMERATOR (enumerator);
   GSocketAddress *sockaddr;
 
-  if (!addr_enum->addr->priv->sockaddrs)
+  if (addr_enum->addresses == NULL)
     {
-      GResolver *resolver = g_resolver_get_default ();
-      GList *addresses;
+      if (!addr_enum->addr->priv->sockaddrs)
+        {
+          GResolver *resolver = g_resolver_get_default ();
+          GList *addresses;
 
-      addresses = g_resolver_lookup_by_name (resolver,
-                                             addr_enum->addr->priv->hostname,
-                                             cancellable, error);
-      g_object_unref (resolver);
+          addresses = g_resolver_lookup_by_name (resolver,
+                                                 addr_enum->addr->priv->hostname,
+                                                 cancellable, error);
+          g_object_unref (resolver);
 
-      if (!addresses)
-        return NULL;
+          if (!addresses)
+            return NULL;
 
-      g_network_address_set_addresses (addr_enum->addr, addresses);
-      addr_enum->a = addr_enum->addr->priv->sockaddrs;
+          g_network_address_set_addresses (addr_enum->addr, addresses);
+        }
+          
+      addr_enum->addresses = addr_enum->addr->priv->sockaddrs;
+      addr_enum->next = addr_enum->addresses;
     }
 
-  if (!addr_enum->a)
+  if (addr_enum->next == NULL)
     return NULL;
-  else
-    {
-      sockaddr = addr_enum->a->data;
-      addr_enum->a = addr_enum->a->next;
-      return g_object_ref (sockaddr);
-    }
+
+  sockaddr = addr_enum->next->data;
+  addr_enum->next = addr_enum->next->next;
+  return g_object_ref (sockaddr);
 }
 
 static void
@@ -850,24 +854,21 @@
   GList *addresses;
   GError *error = NULL;
 
-  addresses = g_resolver_lookup_by_name_finish (resolver, result, &error);
   if (!addr_enum->addr->priv->sockaddrs)
     {
+      addresses = g_resolver_lookup_by_name_finish (resolver, result, &error);
+
       if (error)
-        {
-          g_simple_async_result_take_error (simple, error);
-        }
+        g_simple_async_result_take_error (simple, error);
       else
-        {
-          g_network_address_set_addresses (addr_enum->addr, addresses);
-          addr_enum->a = addr_enum->addr->priv->sockaddrs;
-        }
+        g_network_address_set_addresses (addr_enum->addr, addresses);
     }
-  else if (error)
-    g_error_free (error);
 
   g_object_unref (resolver);
 
+  addr_enum->addresses = addr_enum->addr->priv->sockaddrs;
+  addr_enum->next = addr_enum->addresses;
+
   g_simple_async_result_complete (simple);
   g_object_unref (simple);
 }
@@ -886,21 +887,26 @@
                                       callback, user_data,
                                       g_network_address_address_enumerator_next_async);
 
-  if (!addr_enum->addr->priv->sockaddrs)
+  if (addr_enum->addresses == NULL)
     {
-      GResolver *resolver = g_resolver_get_default ();
+      if (!addr_enum->addr->priv->sockaddrs)
+        {
+          GResolver *resolver = g_resolver_get_default ();
 
-      g_simple_async_result_set_op_res_gpointer (simple, g_object_ref (addr_enum), g_object_unref);
-      g_resolver_lookup_by_name_async (resolver,
-                                       addr_enum->addr->priv->hostname,
-                                       cancellable,
-                                       got_addresses, simple);
+          g_simple_async_result_set_op_res_gpointer (simple, g_object_ref (addr_enum), g_object_unref);
+          g_resolver_lookup_by_name_async (resolver,
+                                           addr_enum->addr->priv->hostname,
+                                           cancellable,
+                                           got_addresses, simple);
+          return;
+        }
+
+      addr_enum->addresses = addr_enum->addr->priv->sockaddrs;
+      addr_enum->next = addr_enum->addresses;
     }
-  else
-    {
-      g_simple_async_result_complete_in_idle (simple);
-      g_object_unref (simple);
-    }
+
+  g_simple_async_result_complete_in_idle (simple);
+  g_object_unref (simple);
 }
 
 static GSocketAddress *
@@ -915,12 +921,12 @@
 
   if (g_simple_async_result_propagate_error (simple, error))
     return NULL;
-  else if (!addr_enum->a)
+  else if (!addr_enum->next)
     return NULL;
   else
     {
-      sockaddr = addr_enum->a->data;
-      addr_enum->a = addr_enum->a->next;
+      sockaddr = addr_enum->next->data;
+      addr_enum->next = addr_enum->next->next;
       return g_object_ref (sockaddr);
     }
 }
diff --git a/gio/gnullsettingsbackend.c b/gio/gnullsettingsbackend.c
index a2bead0..507aa8c 100644
--- a/gio/gnullsettingsbackend.c
+++ b/gio/gnullsettingsbackend.c
@@ -21,7 +21,8 @@
 
 #include "config.h"
 
-#include "gnullsettingsbackend.h"
+#include "gsettingsbackendinternal.h"
+#include "giomodule.h"
 #include "gsimplepermission.h"
 
 
@@ -34,10 +35,11 @@
 typedef GSettingsBackendClass GNullSettingsBackendClass;
 typedef GSettingsBackend      GNullSettingsBackend;
 
-static GType g_null_settings_backend_get_type (void);
-G_DEFINE_TYPE (GNullSettingsBackend,
-               g_null_settings_backend,
-               G_TYPE_SETTINGS_BACKEND)
+G_DEFINE_TYPE_WITH_CODE (GNullSettingsBackend,
+                         g_null_settings_backend,
+                         G_TYPE_SETTINGS_BACKEND,
+                         g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME,
+                                                         g_define_type_id, "null", 10))
 
 static GVariant *
 g_null_settings_backend_read (GSettingsBackend   *backend,
diff --git a/gio/gnullsettingsbackend.h b/gio/gnullsettingsbackend.h
deleted file mode 100644
index ea07f52..0000000
--- a/gio/gnullsettingsbackend.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright © 2010 Codethink Limited
- *
- * 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 of the licence, 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ryan Lortie <desrt@desrt.ca>
- */
-
-#ifndef __G_NULL_SETTINGS_BACKEND_H__
-#define __G_NULL_SETTINGS_BACKEND_H__
-
-#include <gio/gsettingsbackend.h>
-
-G_GNUC_INTERNAL
-GSettingsBackend * g_null_settings_backend_new (void);
-
-#endif /* __G_NULL_SETTINGS_BACKEND_H__ */
diff --git a/gio/goutputstream.c b/gio/goutputstream.c
index 5152de5..02f013e 100644
--- a/gio/goutputstream.c
+++ b/gio/goutputstream.c
@@ -150,7 +150,7 @@
  * @stream: a #GOutputStream.
  * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write. 
  * @count: the number of bytes to write
- * @cancellable: optional cancellable object
+ * @cancellable: (allow-none): optional cancellable object
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to write @count bytes from @buffer into the stream. Will block
@@ -229,9 +229,9 @@
  * @stream: a #GOutputStream.
  * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write. 
  * @count: the number of bytes to write
- * @bytes_written: location to store the number of bytes that was 
+ * @bytes_written: (out): location to store the number of bytes that was 
  *     written to the stream
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Tries to write @count bytes from @buffer into the stream. Will block
@@ -290,7 +290,7 @@
 /**
  * g_output_stream_flush:
  * @stream: a #GOutputStream.
- * @cancellable: optional cancellable object
+ * @cancellable: (allow-none): optional cancellable object
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Flushed any outstanding buffers in the stream. Will block during 
@@ -341,7 +341,7 @@
  * @stream: a #GOutputStream.
  * @source: a #GInputStream.
  * @flags: a set of #GOutputStreamSpliceFlags.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError location to store the error occuring, or %NULL to
  * ignore.
  *
@@ -468,7 +468,7 @@
 /**
  * g_output_stream_close:
  * @stream: A #GOutputStream.
- * @cancellable: optional cancellable object
+ * @cancellable: (allow-none): optional cancellable object
  * @error: location to store the error occuring, or %NULL to ignore
  *
  * Closes the stream, releasing resources related to it.
@@ -655,9 +655,9 @@
  * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write. 
  * @count: the number of bytes to write
  * @io_priority: the io priority of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Request an asynchronous write of @count bytes from @buffer into 
  * the stream. When the operation is finished @callback will be called.
@@ -812,9 +812,9 @@
  * @source: a #GInputStream. 
  * @flags: a set of #GOutputStreamSpliceFlags.
  * @io_priority: the io priority of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
- * @callback: a #GAsyncReadyCallback. 
- * @user_data: user data passed to @callback.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
+ * @callback: (scope async): a #GAsyncReadyCallback. 
+ * @user_data: (closure): user data passed to @callback.
  * 
  * Splices a stream asynchronously.
  * When the operation is finished @callback will be called.
@@ -908,9 +908,9 @@
  * g_output_stream_flush_async:
  * @stream: a #GOutputStream.
  * @io_priority: the io priority of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  * 
  * Flushes a stream asynchronously.
  * For behaviour details see g_output_stream_flush().
@@ -1003,9 +1003,9 @@
  * g_output_stream_close_async:
  * @stream: A #GOutputStream.
  * @io_priority: the io priority of the request.
- * @callback: callback to call when the request is satisfied
- * @user_data: the data to pass to callback function
- * @cancellable: optional cancellable object
+ * @cancellable: (allow-none): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Requests an asynchronous close of the stream, releasing resources 
  * related to it. When the operation is finished @callback will be 
diff --git a/gio/goutputstream.h b/gio/goutputstream.h
index e28bded..995d0dd 100644
--- a/gio/goutputstream.h
+++ b/gio/goutputstream.h
@@ -100,7 +100,7 @@
                                  int                       io_priority,
                                  GCancellable             *cancellable,
                                  GAsyncReadyCallback       callback,
-                                 gpointer                  data);
+                                 gpointer                  user_data);
   gssize      (* splice_finish) (GOutputStream            *stream,
                                  GAsyncResult             *result,
                                  GError                  **error);
diff --git a/gio/gperiodic.c b/gio/gperiodic.c
deleted file mode 100644
index af7a2d5..0000000
--- a/gio/gperiodic.c
+++ /dev/null
@@ -1,765 +0,0 @@
-/*
- * Copyright © 2010 Codethink Limited
- *
- * 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 of the
- * licence, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- *
- * Author: Ryan Lortie <desrt@desrt.ca>
- */
-
-#include "config.h"
-
-#include "gperiodic.h"
-
-#include "gio-marshal.h"
-
-/**
- * SECTION:gperiodic
- * @title: GPeriodic
- * @short_description: a periodic event clock
- *
- * #GPeriodic is a periodic event clock that fires a configurable number
- * of times per second and is capable of being put into synch with an
- * external time source.
- *
- * A number of #GPeriodicTickFuncs are registered with
- * g_periodic_add() and are called each time the clock "ticks".
- *
- * The tick functions can report "damage" (ie: updates that need to be
- * performed) that are handled in a "repair" phase that follows all the
- * tick functions having been run.  It is also possible to report damage
- * while the clock is not running, in which case the rate of repairs
- * will be rate limited as if the clock were running.
- *
- * #GPeriodic has a configurable priority range consisting of a high and
- * low value.  Other sources with a priority higher than the high value
- * might starve #GPeriodic and sources with the priority lower than the
- * low value may be starved by #GPeriodic.
- *
- * #GPeriodic will engage in dynamic scheduling with respect to sources
- * that have their priorities within the high to low range.  A given
- * #GPeriodic will ensure that the events dispatched from itself are
- * generally using less than 50% of the CPU (on average) if other tasks
- * are pending.  If no other sources within the range are pending then
- * #GPeriodic will use up to all of the available CPU (which can lead to
- * starvation of lower-priority sources, as mentioned above).  The 50%
- * figure is entirely arbitrary and may change or become configurable in
- * the future.
- *
- * For example, if a #GPeriodic has been set to run at 10Hz and a
- * particular iteration uses 140ms of time, then 2 ticks will be
- * "skipped" to give other sources a chance to run (ie: the next tick
- * will occur 300ms later rather than 100ms later, giving 160ms of time
- * for other sources).
- *
- * This means that the high priority value for #GPeriodic should be set
- * quite high (above anything else) and the low priority value for
- * #GPeriodic should be set lower than everything except true "idle"
- * handlers (ie: things that you want to run only when the program is
- * truly idle).
- *
- * #GPeriodic generally assumes that although the things attached to it
- * may be poorly behaved in terms of non-yielding behaviour (either
- * individually or in aggregate), the other sources on the main loop
- * should be "well behaved".  Other sources should try not to block the
- * CPU for a substantial portion of the periodic interval.
- *
- * The sources attached to a #GPeriodic are permitted to be somewhat
- * less well-behaved because they are generally rendering the UI for the
- * user (which should be done smoothly) and also because they will be
- * throttled by #GPeriodic.
- *
- * #GPeriodic is intended to be used as a paint clock for managing
- * geometry updates and painting of windows.
- *
- * Since: 2.28
- **/
-
-/**
- * GPeriodic:
- *
- * #GPeriodic is an opaque structure type.
- *
- * Since: 2.28
- **/
-
-typedef struct
-{
-  GPeriodicTickFunc callback;
-  gpointer          user_data;
-  GDestroyNotify    notify;
-  guint             id;
-} GPeriodicTick;
-
-typedef struct
-{
-  GSource    source;
-  GPeriodic *periodic;
-} GPeriodicSource;
-
-struct _GPeriodicPrivate
-{
-  GSource *source;            /* GPeriodicSource */
-  guint64  last_run;
-  guint    blocked;
-  guint    hz;
-  guint    skip_frames;
-  guint    stop_skip_id;
-  gint     low_priority;
-
-  GSList  *ticks;             /* List<GPeriodicTick> */
-
-  guint    damaged   : 1;
-
-  /* debug */
-  guint    in_tick   : 1;
-  guint    in_repair : 1;
-};
-
-G_DEFINE_TYPE (GPeriodic, g_periodic, G_TYPE_OBJECT)
-
-#define PERIODIC_FROM_SOURCE(src) (((GPeriodicSource *) (src))->periodic)
-
-enum
-{
-  PROP_NONE,
-  PROP_HZ,
-  PROP_HIGH_PRIORITY,
-  PROP_LOW_PRIORITY
-};
-
-static guint g_periodic_tick;
-static guint g_periodic_repair;
-
-static guint64
-g_periodic_get_microticks (GPeriodic *periodic)
-{
-  return g_source_get_time (periodic->priv->source) * periodic->priv->hz;
-}
-
-static gboolean
-g_periodic_stop_skip (gpointer data)
-{
-  GPeriodic *periodic = data;
-
-  periodic->priv->skip_frames = 0;
-
-  g_message ("Skipping frames ends");
-
-  periodic->priv->stop_skip_id = 0;
-
-  return FALSE;
-}
-
-static void
-g_periodic_real_tick (GPeriodic *periodic,
-                      gint64     timestamp)
-{
-  GSList *iter;
-
-  for (iter = periodic->priv->ticks; iter; iter = iter->next)
-    {
-      GPeriodicTick *tick = iter->data;
-
-      tick->callback (periodic, timestamp, tick->user_data);
-    }
-}
-
-static void
-g_periodic_real_repair (GPeriodic *periodic)
-{
-  periodic->priv->damaged = FALSE;
-}
-
-static void
-g_periodic_run (GPeriodic *periodic)
-{
-  gint64 start, usec;
-
-  g_assert (periodic->priv->blocked == 0);
-
-  start = g_get_monotonic_time ();
-
-  if (periodic->priv->ticks)
-    {
-      guint64 microseconds;
-
-      periodic->priv->in_tick = TRUE;
-      microseconds = periodic->priv->last_run / periodic->priv->hz;
-      g_signal_emit (periodic, g_periodic_tick, 0, microseconds);
-      periodic->priv->in_tick = FALSE;
-    }
-
-  g_assert (periodic->priv->blocked == 0);
-
-  if (periodic->priv->damaged)
-    {
-      periodic->priv->in_repair = TRUE;
-      g_signal_emit (periodic, g_periodic_repair, 0);
-      periodic->priv->in_repair = FALSE;
-    }
-
-  g_assert (!periodic->priv->damaged);
-
-  usec = g_get_monotonic_time () - start;
-  g_assert (usec >= 0);
-
-  /* Take the time it took to render, multiply by two and round down to
-   * a whole number of frames.  This ensures that we don't take more
-   * than 50% of the CPU with rendering.
-   *
-   * Examples (at 10fps for easy math.  1 frame = 100ms):
-   *
-   *   0-49ms to render: no frames skipped
-   *
-   *     We used less than half of the time to render.  OK.  We will run
-   *     the next frame 100ms after this one ran (no skips).
-   *
-   *   50-99ms to render: 1 frame skipped
-   *
-   *     We used more than half the time.  Skip one frame so that we run
-   *     200ms later rather than 100ms later.  We already used up to
-   *     99ms worth of that 200ms window, so that gives 101ms for other
-   *     things to run (50%).  For figures closer to 50ms the other
-   *     stuff will actually get more than 50%.
-   *
-   *   100-150ms to render: 2 frames skipped, etc.
-   */
-  periodic->priv->skip_frames = 2 * usec * periodic->priv->hz / 1000000;
-
-  if (periodic->priv->skip_frames)
-    {
-      g_message ("Slow painting; (possibly) skipping %d frames\n",
-                 periodic->priv->skip_frames);
-
-      if (periodic->priv->stop_skip_id == 0)
-        periodic->priv->stop_skip_id =
-          g_idle_add_full (periodic->priv->low_priority,
-                           g_periodic_stop_skip,
-                           periodic, NULL);
-    }
-}
-
-static gboolean
-g_periodic_prepare (GSource *source,
-                    gint    *timeout)
-{
-  GPeriodic *periodic = PERIODIC_FROM_SOURCE (source);
-
-  if ((periodic->priv->ticks || periodic->priv->damaged) && !periodic->priv->blocked)
-    /* We need to run. */
-    {
-      gint64 remaining;
-
-      remaining = periodic->priv->last_run + 1000000 * (1 + periodic->priv->skip_frames) -
-                  g_periodic_get_microticks (periodic);
-
-      if (remaining > 0)
-        /* It's too soon.  Wait some more before running. */
-        {
-          /* Round-up the timeout.
-           *
-           * If we round down, then we will quite often wake to discover
-           * that not enough time has passed and want to sleep again, so
-           * save ourselves the future bother.
-           */
-          *timeout = (remaining + periodic->priv->hz - 1) / periodic->priv->hz / 1000;
-
-          return FALSE;
-        }
-
-      else
-        /* Enough time has passed.  Run now. */
-        {
-          *timeout = 0;
-          return TRUE;
-        }
-    }
-  else
-    /* We shouldn't be running now at all. */
-    {
-      *timeout = -1;
-      return FALSE;
-    }
-}
-
-static gboolean
-g_periodic_check (GSource *source)
-{
-  GPeriodic *periodic = PERIODIC_FROM_SOURCE (source);
-
-  if ((periodic->priv->ticks || periodic->priv->damaged) && !periodic->priv->blocked)
-    /* We need to run. */
-    {
-      guint64 now = g_periodic_get_microticks (periodic);
-
-      /* Run if it's not too soon. */
-      return !(now < periodic->priv->last_run + 1000000 * (periodic->priv->skip_frames + 1));
-    }
-
-  else
-    /* We shouldn't be running now at all. */
-    return FALSE;
-}
-
-static gboolean
-g_periodic_dispatch (GSource     *source,
-                     GSourceFunc  callback,
-                     gpointer     user_data)
-{
-  GPeriodic *periodic = PERIODIC_FROM_SOURCE (source);
-  guint64 elapsed_ticks;
-  guint64 now;
-
-  g_assert (periodic->priv->blocked == 0);
-
-  /* Update the last_run.
-   *
-   * In the normal case we want to add exactly 1 tick to it.  This
-   * ensures that the clock runs at the proper rate in the normal case
-   * (ie: the dispatch overhead time is not lost).
-   *
-   * If more than one tick has elapsed, we set it equal to the current
-   * time.  This has two purposes:
-   *
-   *   - sets last_run to something reasonable if the clock is running
-   *     for the first time or after a long period of inactivity
-   *
-   *   - resets our stride if we missed a frame
-   */
-  now = g_periodic_get_microticks (periodic);
-  elapsed_ticks = (now - periodic->priv->last_run) / 1000000;
-  g_assert (elapsed_ticks > 0);
-
-  if G_LIKELY (elapsed_ticks == 1)
-    periodic->priv->last_run += 1000000;
-  else
-    periodic->priv->last_run = now;
-
-  g_periodic_run (periodic);
-
-  return TRUE;
-}
-
-static void
-g_periodic_get_property (GObject    *object,
-                         guint       prop_id,
-                         GValue     *value,
-                         GParamSpec *pspec)
-{
-  GPeriodic *periodic = G_PERIODIC (object);
-
-  switch (prop_id)
-    {
-    case PROP_HIGH_PRIORITY:
-      g_value_set_int (value, g_source_get_priority (periodic->priv->source));
-      break;
-
-    case PROP_LOW_PRIORITY:
-      g_value_set_int (value, periodic->priv->low_priority);
-      break;
-
-    case PROP_HZ:
-      g_value_set_uint (value, periodic->priv->hz);
-      break;
-
-    default:
-      g_assert_not_reached ();
-    }
-}
-
-static void
-g_periodic_set_property (GObject      *object,
-                         guint         prop_id,
-                         const GValue *value,
-                         GParamSpec   *pspec)
-{
-  GPeriodic *periodic = G_PERIODIC (object);
-
-  switch (prop_id)
-    {
-    case PROP_HIGH_PRIORITY:
-      g_source_set_priority (periodic->priv->source, g_value_get_int (value));
-      break;
-
-    case PROP_LOW_PRIORITY:
-      periodic->priv->low_priority = g_value_get_int (value);
-      break;
-
-    case PROP_HZ:
-      periodic->priv->hz = g_value_get_uint (value);
-      break;
-
-    default:
-      g_assert_not_reached ();
-    }
-}
-
-static void
-g_periodic_finalize (GObject *object)
-{
-  GPeriodic *periodic = G_PERIODIC (object);
-
-  g_source_destroy (periodic->priv->source);
-  g_source_unref (periodic->priv->source);
-
-  G_OBJECT_CLASS (g_periodic_parent_class)
-    ->finalize (object);
-}
-
-static void
-g_periodic_init (GPeriodic *periodic)
-{
-  static GSourceFuncs source_funcs = {
-    g_periodic_prepare, g_periodic_check, g_periodic_dispatch
-  };
-
-  periodic->priv = G_TYPE_INSTANCE_GET_PRIVATE (periodic,
-                                                G_TYPE_PERIODIC,
-                                                GPeriodicPrivate);
-
-  periodic->priv->source = g_source_new (&source_funcs,
-                                         sizeof (GPeriodicSource));
-  ((GPeriodicSource *) periodic->priv->source)->periodic = periodic;
-  g_source_attach (periodic->priv->source,
-                   g_main_context_get_thread_default ());
-}
-
-static void
-g_periodic_class_init (GPeriodicClass *class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (class);
-
-  class->tick = g_periodic_real_tick;
-  class->repair = g_periodic_real_repair;
-
-  object_class->get_property = g_periodic_get_property;
-  object_class->set_property = g_periodic_set_property;
-  object_class->finalize = g_periodic_finalize;
-
-  /**
-   * GPeriodic::tick
-   * @periodic: the #GPeriodic on which the signal was emitted
-   * @timestamp: the timestamp at the time of the tick
-   *
-   * The ::tick signal gets emitted whenever the clock "fires".
-   */
-  g_periodic_tick = g_signal_new ("tick", G_TYPE_PERIODIC,
-                                  G_SIGNAL_RUN_LAST,
-                                  G_STRUCT_OFFSET(GPeriodicClass, tick),
-                                  NULL, NULL, _gio_marshal_VOID__INT64,
-                                  G_TYPE_NONE, 1, G_TYPE_INT64);
-
-  /**
-   * GPeriodic::repair:
-   * @periodic: the #GPeriodic on which the signal was emitted
-   *
-   * The ::repair signal gets emitted to start the "repair" phase.
-   */
-  g_periodic_repair = g_signal_new ("repair", G_TYPE_PERIODIC,
-                                    G_SIGNAL_RUN_LAST,
-                                    G_STRUCT_OFFSET (GPeriodicClass, repair),
-                                    NULL, NULL, g_cclosure_marshal_VOID__VOID,
-                                    G_TYPE_NONE, 0);
-
-  g_object_class_install_property (object_class, PROP_HZ,
-    g_param_spec_uint ("hz", "ticks per second",
-                       "rate (in Hz) at which the 'tick' signal is emitted",
-                       1, 120, 1, G_PARAM_READWRITE |
-                       G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (object_class, PROP_HIGH_PRIORITY,
-    g_param_spec_int ("high-priority", "high priority level",
-                      "the GSource priority level to run at",
-                      G_MININT, G_MAXINT, 0, G_PARAM_READWRITE |
-                      G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (object_class, PROP_LOW_PRIORITY,
-    g_param_spec_int ("low-priority", "low priority level",
-                      "ignore tasks below this priority level",
-                      G_MININT, G_MAXINT, 0, G_PARAM_READWRITE |
-                      G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
-
-  g_type_class_add_private (class, sizeof (GPeriodicPrivate));
-}
-
-/**
- * g_periodic_block:
- * @periodic: a #GPeriodic clock
- *
- * Temporarily blocks @periodic from running in order to bring it in
- * synch with an external time source.
- *
- * This function must be called from a handler of the #GPeriodic::repair
- * signal.
- *
- * If this function is called, emission of the #GPeriodic::tick signal
- * will be suspended until g_periodic_unblock() is called an equal number
- * of times. Once that happens, the ::tick signal will run immediately
- * and future ::tick signals will be emitted relative to the time at
- * which the last call to g_periodic_unblock() occured.
- *
- * Since: 2.28
- **/
-void
-g_periodic_block (GPeriodic *periodic)
-{
-  g_return_if_fail (G_IS_PERIODIC (periodic));
-  g_return_if_fail (periodic->priv->in_repair);
-
-  periodic->priv->blocked++;
-}
-
-/**
- * g_periodic_unblock:
- * @periodic: a #GPeriodic clock
- * @unblock_time: the unblock time
- *
- * Reverses the effect of a previous call to g_periodic_block().
- *
- * If this call removes the last block, the ::tick signal is
- * immediately run. The ::repair signal may also be run if the clock
- * is marked as damaged.
- *
- * @unblock_time is the monotonic time, as per g_get_monotonic_time(),
- * at which the event causing the unblock occured.
- *
- * This function may not be called from handlers of any signal emitted
- * by @periodic.
- *
- * Since: 2.28
- **/
-void
-g_periodic_unblock (GPeriodic       *periodic,
-                    gint64           unblock_time)
-{
-  g_return_if_fail (G_IS_PERIODIC (periodic));
-  g_return_if_fail (!periodic->priv->in_repair);
-  g_return_if_fail (!periodic->priv->in_tick);
-  g_return_if_fail (periodic->priv->blocked);
-
-  if (--periodic->priv->blocked)
-    {
-      periodic->priv->last_run = unblock_time * periodic->priv->hz;
-      g_periodic_run (periodic);
-    }
-}
-
-/**
- * g_periodic_add:
- * @periodic: a #GPeriodic clock
- * @callback: a #GPeriodicTickFunc function
- * @user_data: data for @callback
- * @notify: for freeing @user_data when it is no longer needed
- *
- * Request periodic calls to @callback to start. The periodicity of
- * the calls is determined by the #GPeriodic:hz property.
- *
- * This function may not be called from a handler of the ::repair
- * signal, but it is perfectly reasonable to call it from a handler
- * of the ::tick signal.
- *
- * The callback may be cancelled later by using g_periodic_remove()
- * on the return value of this function.
- *
- * Returns: a non-zero tag identifying this callback
- *
- * Since: 2.28
- **/
-
-/**
- * GPeriodicTickFunc:
- * @periodic: the #GPeriodic clock that is ticking
- * @timestamp: the timestamp at the time of the tick
- * @user_data: the user data given to g_periodic_add()
- *
- * The signature of the callback function that is called when the
- * #GPeriodic clock ticks.
- *
- * The @timestamp parameter is equal for all callbacks called during
- * a particular tick on a given clock.
- *
- * Since: 2.28
- **/
-guint
-g_periodic_add (GPeriodic         *periodic,
-                GPeriodicTickFunc  callback,
-                gpointer           user_data,
-                GDestroyNotify     notify)
-{
-  GPeriodicTick *tick;
-  static guint id;
-
-  g_return_val_if_fail (G_IS_PERIODIC (periodic), 0);
-  g_return_val_if_fail (!periodic->priv->in_repair, 0);
-
-  tick = g_slice_new (GPeriodicTick);
-  tick->callback = callback;
-  tick->user_data = user_data;
-  tick->notify = notify;
-  tick->id = ++id;
-
-  periodic->priv->ticks = g_slist_prepend (periodic->priv->ticks, tick);
-
-  return tick->id;
-}
-
-/**
- * g_periodic_remove:
- * @periodic: a #GPeriodic clock
- * @tag: the ID of the callback to remove
- *
- * Reverse the effect of a previous call to g_periodic_start().
- *
- * @tag is the ID returned by that function.
- *
- * This function may not be called from a handler of the ::repair
- * signal, but it is perfectly reasonable to call it from a handler
- * of the ::tick signal.
- *
- * Since: 2.28
- **/
-void
-g_periodic_remove (GPeriodic *periodic,
-                   guint      tag)
-{
-  GSList **iter;
-
-  g_return_if_fail (G_IS_PERIODIC (periodic));
-  g_return_if_fail (!periodic->priv->in_repair);
-
-  for (iter = &periodic->priv->ticks; *iter; iter = &(*iter)->next)
-    {
-      GPeriodicTick *tick = (*iter)->data;
-
-      if (tick->id == tag)
-        {
-          /* do this first, in case the destroy notify re-enters */
-          *iter = g_slist_remove (*iter, tick);
-
-          if (tick->notify)
-            tick->notify (tick->user_data);
-
-          g_slice_free (GPeriodicTick, tick);
-          return;
-        }
-    }
-
-  g_critical ("GPeriodic: tag %u not registered", tag);
-}
-
-/**
- * g_periodic_damaged:
- * @periodic: a #GPeriodic clock
- *
- * Report damage and schedule the ::repair signal to be emitted
- * during the next repair phase.
- *
- * You may not call this function during the repair phase.
- *
- * Since: 2.28
- **/
-void
-g_periodic_damaged (GPeriodic *periodic)
-{
-  g_return_if_fail (G_IS_PERIODIC (periodic));
-  g_return_if_fail (!periodic->priv->in_repair);
-
-  periodic->priv->damaged = TRUE;
-}
-
-/**
- * g_periodic_get_hz:
- * @periodic: a #GPeriodic clock
- *
- * Gets the frequency of the clock.
- *
- * Returns: the frequency of the clock, in Hz
- *
- * Since: 2.28
- **/
-guint
-g_periodic_get_hz (GPeriodic *periodic)
-{
-  return periodic->priv->hz;
-}
-
-/**
- * g_periodic_get_high_priority:
- * @periodic: a #GPeriodic clock
- *
- * Gets the #GSource priority of the clock.
- *
- * Returns: the high priority level
- *
- * Since: 2.28
- **/
-gint
-g_periodic_get_high_priority (GPeriodic *periodic)
-{
-  return g_source_get_priority (periodic->priv->source);
-}
-
-/**
- * g_periodic_get_low_priority:
- * @periodic: a #GPeriodic clock
- *
- * Gets the priority level that #GPeriodic uses to check for mainloop
- * inactivity.  Other sources scheduled below this level of priority are
- * effectively ignored by #GPeriodic and may be starved.
- *
- * Returns: the low priority level
- *
- * Since: 2.28
- **/
-gint
-g_periodic_get_low_priority (GPeriodic *periodic)
-{
-  return periodic->priv->low_priority;
-}
-
-/**
- * g_periodic_new:
- * @hz: the frequency of the new clock in Hz (between 1 and 120)
- * @high_priority: the #GSource priority to run at
- * @low_priority: ignore tasks below this priority
- *
- * Creates a new #GPeriodic clock.
- *
- * The created clock is attached to the thread-default main context
- * in effect at the time of the call to this function.
- * See g_main_context_push_thread_default() for more information.
- *
- * Due to the fact that #GMainContext is only accurate to the nearest
- * millisecond, the frequency can not meaningfully get too close to
- * 1000.  For this reason, it is arbitrarily bounded at 120.
- *
- * Returns: a new #GPeriodic
- *
- * Since: 2.28
- **/
-GPeriodic *
-g_periodic_new (guint hz,
-                gint  high_priority,
-                gint  low_priority)
-{
-  g_return_val_if_fail (1 <= hz && hz <= 120, NULL);
-
-  return g_object_new (G_TYPE_PERIODIC,
-                       "hz", hz,
-                       "high-priority", high_priority,
-                       "low-priority", low_priority,
-                       NULL);
-}
diff --git a/gio/gperiodic.h b/gio/gperiodic.h
deleted file mode 100644
index 3f61fc7..0000000
--- a/gio/gperiodic.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright © 2010 Codethink Limited
- *
- * 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 of the
- * licence, 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- *
- * Author: Ryan Lortie <desrt@desrt.ca>
- */
-
-#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
-#error "Only <gio/gio.h> can be included directly."
-#endif
-
-#ifndef __G_PERIODIC_H__
-#define __G_PERIODIC_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define G_TYPE_PERIODIC                                     (g_periodic_get_type ())
-#define G_PERIODIC(inst)                                    (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
-                                                             G_TYPE_PERIODIC, GPeriodic))
-#define G_IS_PERIODIC(inst)                                 (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_PERIODIC))
-
-typedef struct _GPeriodicPrivate                            GPeriodicPrivate;
-typedef struct _GPeriodicClass                              GPeriodicClass;
-typedef struct _GPeriodic                                   GPeriodic;
-
-struct _GPeriodicClass
-{
-  GObjectClass parent_class;
-
-  void (*tick)   (GPeriodic *periodic,
-                  gint64     timestamp);
-  void (*repair) (GPeriodic *periodic);
-
-  /*< private >*/
-  gpointer padding[14];
-};
-
-struct _GPeriodic
-{
-  GObject parent_instance;
-  /*< private >*/
-  GPeriodicPrivate *priv;
-};
-
-typedef void         (* GPeriodicTickFunc)                              (GPeriodic           *periodic,
-                                                                         gint64               timestamp,
-                                                                         gpointer             user_data);
-
-GType                   g_periodic_get_type                             (void);
-GPeriodic *             g_periodic_new                                  (guint                hz,
-                                                                         gint                 high_priority,
-                                                                         gint                 low_priority);
-guint                   g_periodic_get_hz                               (GPeriodic           *periodic);
-gint                    g_periodic_get_high_priority                    (GPeriodic           *periodic);
-gint                    g_periodic_get_low_priority                     (GPeriodic           *periodic);
-
-guint                   g_periodic_add                                  (GPeriodic           *periodic,
-                                                                         GPeriodicTickFunc    callback,
-                                                                         gpointer             user_data,
-                                                                         GDestroyNotify       notify);
-void                    g_periodic_remove                               (GPeriodic           *periodic,
-                                                                         guint                tag);
-
-void                    g_periodic_block                                (GPeriodic           *periodic);
-void                    g_periodic_unblock                              (GPeriodic           *periodic,
-                                                                         gint64               unblock_time);
-
-void                    g_periodic_damaged                              (GPeriodic           *periodic);
-
-G_END_DECLS
-
-#endif /* __G_PERIODIC_H__ */
diff --git a/gio/gpollableinputstream.c b/gio/gpollableinputstream.c
index d6937d8..912eaea 100644
--- a/gio/gpollableinputstream.c
+++ b/gio/gpollableinputstream.c
@@ -115,9 +115,9 @@
 }
 
 /**
- * g_pollable_input_stream_create_source:
+ * g_pollable_input_stream_create_source: (skip)
  * @stream: a #GPollableInputStream.
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  *
  * Creates a #GSource that triggers when @stream can be read, or
  * @cancellable is triggered or an error occurs. The callback on the
@@ -128,7 +128,7 @@
  * triggers, so you should use g_pollable_input_stream_read_nonblocking()
  * rather than g_input_stream_read() from the callback.
  *
- * Returns: a new #GSource
+ * Returns: (transfer full): a new #GSource
  *
  * Since: 2.28
  */
@@ -165,7 +165,7 @@
  * @buffer: a buffer to read data into (which should be at least @size
  *     bytes long).
  * @size: the number of bytes you want to read
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Attempts to read up to @size bytes from @stream into @buffer, as
@@ -180,6 +180,7 @@
  * may happen if you call this method after a source triggers due
  * to having been cancelled.
  *
+ * Virtual: read_nonblocking
  * Return value: the number of bytes read, or -1 on error (including
  *   %G_IO_ERROR_WOULD_BLOCK).
  */
@@ -275,7 +276,7 @@
 };
 
 /**
- * g_pollable_source_new:
+ * g_pollable_source_new: (skip)
  * @pollable_stream: the stream associated with the new source
  *
  * Utility method for #GPollableInputStream and #GPollableOutputStream
@@ -284,7 +285,7 @@
  * anything on its own; use g_source_add_child_source() to add other
  * sources to it to cause it to trigger.
  *
- * Return value: the new #GSource.
+ * Return value: (transfer full): the new #GSource.
  *
  * Since: 2.28
  */
diff --git a/gio/gpollableoutputstream.c b/gio/gpollableoutputstream.c
index b4efb3f..7879e88 100644
--- a/gio/gpollableoutputstream.c
+++ b/gio/gpollableoutputstream.c
@@ -116,9 +116,9 @@
 }
 
 /**
- * g_pollable_output_stream_create_source:
+ * g_pollable_output_stream_create_source: (skip)
  * @stream: a #GPollableOutputStream.
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  *
  * Creates a #GSource that triggers when @stream can be written, or
  * @cancellable is triggered or an error occurs. The callback on the
@@ -129,7 +129,7 @@
  * triggers, so you should use g_pollable_output_stream_write_nonblocking()
  * rather than g_output_stream_write() from the callback.
  *
- * Returns: a new #GSource
+ * Returns: (transfer full): a new #GSource
  *
  * Since: 2.28
  */
@@ -163,9 +163,10 @@
 /**
  * g_pollable_output_stream_write_nonblocking:
  * @stream: a #GPollableOutputStream
- * @buffer: a buffer to write data from
+ * @buffer: (array length=size) (element-type guint8): a buffer to write
+ *     data from
  * @size: the number of bytes you want to write
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Attempts to write up to @size bytes from @buffer to @stream, as
@@ -180,6 +181,7 @@
  * may happen if you call this method after a source triggers due
  * to having been cancelled.
  *
+ * Virtual: write_nonblocking
  * Return value: the number of bytes written, or -1 on error (including
  *   %G_IO_ERROR_WOULD_BLOCK).
  */
diff --git a/gio/gproxy.c b/gio/gproxy.c
index b40e23c..d24e86e 100644
--- a/gio/gproxy.c
+++ b/gio/gproxy.c
@@ -56,7 +56,8 @@
  * Lookup "gio-proxy" extension point for a proxy implementation that supports
  * specified protocol.
  *
- * Return value: return a #GProxy or NULL if protocol is not supported.
+ * Return value: (transfer full): return a #GProxy or NULL if protocol
+ *               is not supported.
  *
  * Since: 2.26
  **/
@@ -84,7 +85,7 @@
  * @proxy: a #GProxy
  * @connection: a #GIOStream
  * @proxy_address: a #GProxyAddress
- * @cancellable: a #GCancellable
+ * @cancellable: (allow-none): a #GCancellable
  * @error: return #GError
  *
  * Given @connection to communicate with a proxy (eg, a
@@ -123,9 +124,9 @@
  * @proxy: a #GProxy
  * @connection: a #GIOStream
  * @proxy_address: a #GProxyAddress
- * @cancellable: a #GCancellable
- * @callback: a #GAsyncReadyCallback
- * @user_data: callback data
+ * @cancellable: (allow-none): a #GCancellable
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): callback data
  *
  * Asynchronous version of g_proxy_connect().
  *
diff --git a/gio/gproxyaddress.c b/gio/gproxyaddress.c
index 61dfc7d..68ef294 100644
--- a/gio/gproxyaddress.c
+++ b/gio/gproxyaddress.c
@@ -233,8 +233,10 @@
  * @protocol: The proxy protocol to support, in lower case (e.g. socks, http).
  * @dest_hostname: The destination hostname the the proxy should tunnel to.
  * @dest_port: The destination port to tunnel to.
- * @username: The username to authenticate to the proxy server (or %NULL).
- * @password: The password to authenticate to the proxy server (or %NULL).
+ * @username: (allow-none): The username to authenticate to the proxy server
+ *     (or %NULL).
+ * @password: (allow-none): The password to authenticate to the proxy server
+ *     (or %NULL).
  *
  * Creates a new #GProxyAddress for @inetaddr with @protocol that should
  * tunnel through @dest_hostname and @dest_port.
diff --git a/gio/gproxyresolver.c b/gio/gproxyresolver.c
index f6b6001..f273ecf 100644
--- a/gio/gproxyresolver.c
+++ b/gio/gproxyresolver.c
@@ -141,7 +141,7 @@
  * g_proxy_resolver_lookup:
  * @resolver: a #GProxyResolver
  * @uri: a URI representing the destination to connect to
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: return location for a #GError, or %NULL
  *
  * Looks into the system proxy configuration to determine what proxy,
@@ -160,8 +160,9 @@
  * Direct connection should not be attempted unless it is part of the
  * returned array of proxies.
  *
- * Return value: (transfer full) (element-type utf8): A NULL-terminated array of proxy URIs. Must be freed with
- *               g_strfreev().
+ * Return value: (transfer full) (array zero-terminated=1): A
+ *               NULL-terminated array of proxy URIs. Must be freed
+ *               with g_strfreev().
  *
  * Since: 2.26
  */
@@ -185,9 +186,9 @@
  * g_proxy_resolver_lookup_async:
  * @resolver: a #GProxyResolver
  * @uri: a URI representing the destination to connect to
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to call after resolution completes
- * @user_data: data for @callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
  * Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more
  * details.
@@ -221,8 +222,9 @@
  * g_proxy_resolver_lookup_async() is complete. See
  * g_proxy_resolver_lookup() for more details.
  *
- * Return value: (transfer full) (element-type utf8): A NULL-terminated array of proxy URIs. Must be freed with
- *               g_strfreev().
+ * Return value: (transfer full) (array zero-terminated=1): A
+ *               NULL-terminated array of proxy URIs. Must be freed
+ *               with g_strfreev().
  *
  * Since: 2.26
  */
diff --git a/gio/gresolver.c b/gio/gresolver.c
index 01c6db0..657505b 100644
--- a/gio/gresolver.c
+++ b/gio/gresolver.c
@@ -215,7 +215,7 @@
  * g_resolver_lookup_by_name:
  * @resolver: a #GResolver
  * @hostname: the hostname to look up
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: return location for a #GError, or %NULL
  *
  * Synchronously resolves @hostname to determine its associated IP
@@ -279,9 +279,9 @@
  * g_resolver_lookup_by_name_async:
  * @resolver: a #GResolver
  * @hostname: the hostname to look up the address of
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to call after resolution completes
- * @user_data: data for @callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
  * Begins asynchronously resolving @hostname to determine its
  * associated IP address(es), and eventually calls @callback, which
@@ -401,7 +401,7 @@
  * g_resolver_lookup_by_address:
  * @resolver: a #GResolver
  * @address: the address to reverse-resolve
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: return location for a #GError, or %NULL
  *
  * Synchronously reverse-resolves @address to determine its
@@ -437,9 +437,9 @@
  * g_resolver_lookup_by_address_async:
  * @resolver: a #GResolver
  * @address: the address to reverse-resolve
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to call after resolution completes
- * @user_data: data for @callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
  * Begins asynchronously reverse-resolving @address to determine its
  * associated hostname, and eventually calls @callback, which must
@@ -521,7 +521,7 @@
  * @service: the service type to look up (eg, "ldap")
  * @protocol: the networking protocol to use for @service (eg, "tcp")
  * @domain: the DNS domain to look up the service in
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: return location for a #GError, or %NULL
  *
  * Synchronously performs a DNS SRV lookup for the given @service and
@@ -585,9 +585,9 @@
  * @service: the service type to look up (eg, "ldap")
  * @protocol: the networking protocol to use for @service (eg, "tcp")
  * @domain: the DNS domain to look up the service in
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to call after resolution completes
- * @user_data: data for @callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
  * Begins asynchronously performing a DNS SRV lookup for the given
  * @service and @protocol in the given @domain, and eventually calls
diff --git a/gio/gschema.dtd b/gio/gschema.dtd
index 218b544..96ff014 100644
--- a/gio/gschema.dtd
+++ b/gio/gschema.dtd
@@ -1,10 +1,12 @@
 <!ELEMENT schemalist (schema|enum)* >
 <!ATTLIST schemalist gettext-domain #IMPLIED >
 
-<!ELEMENT schema (key|child)* >
+<!ELEMENT schema (key|child|override)* >
 <!ATTLIST schema id             CDATA #REQUIRED
                  path           CDATA #IMPLIED
-                 gettext-domain CDATA #IMPLIED >
+                 gettext-domain CDATA #IMPLIED
+                 extends        CDATA #IMPLIED
+                 list-of        CDATA #IMPLIED >
 
 <!-- enumerated and flags types -->
 <!-- each value element maps a nick to a numeric value -->
@@ -64,3 +66,8 @@
 <!ELEMENT child EMPTY >
 <!ATTLIST child name   CDATA #REQUIRED
                 schema CDATA #REQUIRED >
+
+<!ELEMENT override (#PCDATA) >
+<!ATTLIST override name    CDATA #REQUIRED
+                   l10n    CDATA #IMPLIED
+                   context CDATA #IMPLIED >
diff --git a/gio/gseekable.c b/gio/gseekable.c
index 976243d..cde639b 100644
--- a/gio/gseekable.c
+++ b/gio/gseekable.c
@@ -89,7 +89,7 @@
  * @seekable: a #GSeekable.
  * @offset: a #goffset.
  * @type: a #GSeekType.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError location to store the error occuring, or %NULL to 
  * ignore.
  * 
@@ -143,7 +143,7 @@
  * g_seekable_truncate:
  * @seekable: a #GSeekable.
  * @offset: a #goffset.
- * @cancellable: optional #GCancellable object, %NULL to ignore. 
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. 
  * @error: a #GError location to store the error occuring, or %NULL to 
  * ignore.
  * 
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c
index a7447ae..de43782 100644
--- a/gio/gsettings-tool.c
+++ b/gio/gsettings-tool.c
@@ -408,7 +408,9 @@
    * To handle this case, try to parse again with an extra level
    * of quotes.
    */
-  if (new == NULL && strstr (error->message, "unknown keyword"))
+  if (new == NULL &&
+      g_error_matches (error, G_VARIANT_PARSE_ERROR,
+                       G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD))
     {
       value = freeme = g_strdup_printf ("\"%s\"", value);
       new = g_variant_parse (type, value, NULL, NULL, NULL);
diff --git a/gio/gsettings.c b/gio/gsettings.c
index b31f462..c9a23b7 100644
--- a/gio/gsettings.c
+++ b/gio/gsettings.c
@@ -223,6 +223,7 @@
   PROP_BACKEND,
   PROP_PATH,
   PROP_HAS_UNAPPLIED,
+  PROP_DELAY_APPLY
 };
 
 enum
@@ -448,6 +449,10 @@
       g_value_set_boolean (value, g_settings_get_has_unapplied (settings));
       break;
 
+     case PROP_DELAY_APPLY:
+      g_value_set_boolean (value, settings->priv->delayed != NULL);
+      break;
+
      default:
       g_assert_not_reached ();
     }
@@ -567,7 +572,8 @@
   /**
    * GSettings::change-event:
    * @settings: the object on which the signal was emitted
-   * @keys: an array of #GQuark<!-- -->s for the changed keys, or %NULL
+   * @keys: (array length=n_keys) (element-type GQuark) (allow-none):
+   *        an array of #GQuark<!-- -->s for the changed keys, or %NULL
    * @n_keys: the length of the @keys array, or 0
    * @returns: %TRUE to stop other handlers from being invoked for the
    *           event. FALSE to propagate the event further.
@@ -612,7 +618,7 @@
   g_settings_signals[SIGNAL_WRITABLE_CHANGED] =
     g_signal_new ("writable-changed", G_TYPE_SETTINGS,
                   G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
-                  G_STRUCT_OFFSET (GSettingsClass, changed),
+                  G_STRUCT_OFFSET (GSettingsClass, writable_changed),
                   NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE,
                   1, G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE);
 
@@ -701,6 +707,20 @@
                            FALSE,
                            G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
+   /**
+    * GSettings:delay-apply:
+    *
+    * Whether the #GSettings object is in 'delay-apply' mode. See
+    * g_settings_delay() for details.
+    *
+    * Since: 2.28
+    */
+   g_object_class_install_property (object_class, PROP_DELAY_APPLY,
+     g_param_spec_boolean ("delay-apply",
+                           P_("Delay-apply mode"),
+                           P_("Whether this settings object is in 'delay-apply' mode"),
+                           FALSE,
+                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 }
 
 /* Construction (new, new_with_path, etc.) {{{1 */
@@ -1588,8 +1608,8 @@
  * g_settings_get_mapped:
  * @settings: a #GSettings object
  * @key: the key to get the value for
- * @mapping: the function to map the value in the settings database to
- *           the value used by the application
+ * @mapping: (scope call): the function to map the value in the
+ *           settings database to the value used by the application
  * @user_data: user data for @mapping
  * @returns: (transfer full): the result, which may be %NULL
  *
@@ -1887,16 +1907,15 @@
  * g_settings_get_strv:
  * @settings: a #GSettings object
  * @key: the key to get the value for
- * @returns: a newly-allocated, %NULL-terminated array of strings
+ * @returns: (array zero-terminated=1) (transfer full): a
+ * newly-allocated, %NULL-terminated array of strings, the value that
+ * is stored at @key in @settings.
  *
  * A convenience variant of g_settings_get() for string arrays.
  *
  * It is a programmer error to give a @key that isn't specified as
  * having an array of strings type in the schema for @settings.
  *
- * Returns: (array zero-terminated=1) (transfer full): the value that is
- * stored at @key in @settings.
- *
  * Since: 2.26
  */
 gchar **
@@ -1976,6 +1995,8 @@
   g_settings_backend_watch (settings->priv->backend,
                             &listener_vtable, G_OBJECT (settings),
                             settings->priv->main_context);
+
+  g_object_notify (G_OBJECT (settings), "delay-apply");
 }
 
 /**
@@ -2119,7 +2140,7 @@
  * @returns: (transfer full): a 'child' settings object
  *
  * Creates a 'child' settings object which has a base path of
- * <replaceable>base-path</replaceable>/@name", where
+ * <replaceable>base-path</replaceable>/@name, where
  * <replaceable>base-path</replaceable> is the base path of @settings.
  *
  * The schema for the child settings object must have been declared
@@ -2558,7 +2579,7 @@
  * g_settings_bind:
  * @settings: a #GSettings object
  * @key: the key to bind
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  * @property: the name of the property to bind
  * @flags: flags for the binding
  *
@@ -2609,10 +2630,10 @@
 }
 
 /**
- * g_settings_bind_with_mapping:
+ * g_settings_bind_with_mapping: (skip)
  * @settings: a #GSettings object
  * @key: the key to bind
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  * @property: the name of the property to bind
  * @flags: flags for the binding
  * @get_mapping: a function that gets called to convert values
@@ -2825,7 +2846,7 @@
  * g_settings_bind_writable:
  * @settings: a #GSettings object
  * @key: the key to bind
- * @object: a #GObject
+ * @object: (type GObject.Object):a #GObject
  * @property: the name of a boolean property to bind
  * @inverted: whether to 'invert' the value
  *
diff --git a/gio/gsettings.h b/gio/gsettings.h
index 57c15f6..f30c44a 100644
--- a/gio/gsettings.h
+++ b/gio/gsettings.h
@@ -188,8 +188,9 @@
 /**
  * GSettingsGetMapping:
  * @value: the #GVariant to map, or %NULL
- * @result: the result of the mapping
- * @user_data: the user data that was passed to g_settings_get_mapped()
+ * @result: (out): the result of the mapping
+ * @user_data: (closure): the user data that was passed to
+ * g_settings_get_mapped()
  * @returns: %TRUE if the conversion succeeded, %FALSE in case of an error
  *
  * The type of the function that is used to convert from a value stored
diff --git a/gio/gsettingsbackend.c b/gio/gsettingsbackend.c
index 954a4ac..ee0a93f 100644
--- a/gio/gsettingsbackend.c
+++ b/gio/gsettingsbackend.c
@@ -24,7 +24,6 @@
 #include "config.h"
 
 #include "gsettingsbackendinternal.h"
-#include "gnullsettingsbackend.h"
 #include "gsimplepermission.h"
 #include "giomodule-priv.h"
 #include "gio-marshal.h"
@@ -402,7 +401,7 @@
  * g_settings_backend_keys_changed:
  * @backend: a #GSettingsBackend implementation
  * @path: the path containing the changes
- * @items: the %NULL-terminated list of changed keys
+ * @items: (array zero-terminated=1): the %NULL-terminated list of changed keys
  * @origin_tag: the origin tag
  *
  * Signals that a list of keys have possibly changed.  Backend
@@ -610,9 +609,11 @@
 /**
  * g_settings_backend_flatten_tree:
  * @tree: a #GTree containing the changes
- * @path: the location to save the path
- * @keys: the location to save the relative keys
- * @values: the location to save the values, or %NULL
+ * @path: (out): the location to save the path
+ * @keys: (out) (transfer container) (array zero-terminated=1): the
+ *        location to save the relative keys
+ * @values: (out) (allow-none) (transfer container) (array zero-terminated=1):
+ *          the location to save the values, or %NULL
  *
  * Calculate the longest common prefix of all keys in a tree and write
  * out an array of the key names relative to that prefix and,
@@ -925,15 +926,17 @@
                           g_free, (GDestroyNotify) g_variant_unref);
 }
 
-/*< private >
+/**
  * g_settings_backend_get_default:
- * @returns: the default #GSettingsBackend
+ * @returns: (transfer full): the default #GSettingsBackend
  *
  * Returns the default #GSettingsBackend. It is possible to override
  * the default by setting the <envar>GSETTINGS_BACKEND</envar>
  * environment variable to the name of a settings backend.
  *
  * The user gets a reference to the backend.
+ *
+ * Since: 2.28
  */
 GSettingsBackend *
 g_settings_backend_get_default (void)
diff --git a/gio/gsettingsbackend.h b/gio/gsettingsbackend.h
index 2f4aeaa..2854529 100644
--- a/gio/gsettingsbackend.h
+++ b/gio/gsettingsbackend.h
@@ -148,10 +148,16 @@
                                                                          GTree               *tree,
                                                                          gpointer             origin_tag);
 
+GSettingsBackend *      g_settings_backend_get_default                  (void);
+
 GSettingsBackend *      g_keyfile_settings_backend_new                  (const gchar         *filename,
                                                                          const gchar         *root_path,
                                                                          const gchar         *root_group);
 
+GSettingsBackend *      g_null_settings_backend_new                     (void);
+
+GSettingsBackend *      g_memory_settings_backend_new                   (void);
+
 G_END_DECLS
 
 #endif /* __G_SETTINGS_BACKEND_H__ */
diff --git a/gio/gsettingsbackendinternal.h b/gio/gsettingsbackendinternal.h
index 6a4230c..8a423e0 100644
--- a/gio/gsettingsbackendinternal.h
+++ b/gio/gsettingsbackendinternal.h
@@ -126,8 +126,12 @@
                                                                          const gchar                    *id);
 
 G_GNUC_INTERNAL
-GSettingsBackend *      g_settings_backend_get_default                  (void);
-G_GNUC_INTERNAL
 void                    g_settings_backend_sync_default                 (void);
 
+G_GNUC_INTERNAL
+GType                   g_null_settings_backend_get_type                (void);
+
+G_GNUC_INTERNAL
+GType                   g_memory_settings_backend_get_type              (void);
+
 #endif  /* __G_SETTINGS_BACKEND_INTERNAL_H__ */
diff --git a/gio/gsimpleactiongroup.c b/gio/gsimpleactiongroup.c
index ecc1dce..df359b9 100644
--- a/gio/gsimpleactiongroup.c
+++ b/gio/gsimpleactiongroup.c
@@ -160,7 +160,7 @@
   if (action == NULL)
     return;
 
-  return g_action_set_state (action, value);
+  g_action_set_state (action, value);
 }
 
 static void
@@ -176,7 +176,7 @@
   if (action == NULL)
     return;
 
-  return g_action_activate (action, parameter);
+  g_action_activate (action, parameter);
 }
 
 static void
diff --git a/gio/gsimpleasyncresult.c b/gio/gsimpleasyncresult.c
index 2166bea..b58b2e5 100644
--- a/gio/gsimpleasyncresult.c
+++ b/gio/gsimpleasyncresult.c
@@ -187,7 +187,7 @@
  *       return;
  *     }
  *
- *   _baker_prepare_cake (self, radius, baked_cb, user_data);
+ *   _baker_prepare_cake (self, radius, baked_cb, simple);
  * }
  *
  * Cake *
@@ -299,10 +299,9 @@
 
 /**
  * g_simple_async_result_new:
- * @source_object: a #GObject the asynchronous function was called with,
- * or %NULL.
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
+ * @source_object: (allow-none): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  * @source_tag: the asynchronous function.
  *
  * Creates a #GSimpleAsyncResult.
@@ -333,9 +332,9 @@
 
 /**
  * g_simple_async_result_new_from_error:
- * @source_object: a #GObject, or %NULL.
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
+ * @source_object: (allow-none): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  * @error: a #GError
  *
  * Creates a #GSimpleAsyncResult from an error condition.
@@ -361,10 +360,10 @@
 }
 
 /**
- * g_simple_async_result_new_take_error:
+ * g_simple_async_result_new_take_error: (skip)
  * @source_object: (allow-none): a #GObject, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: (allow-none): user data passed to @callback
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data passed to @callback
  * @error: a #GError
  *
  * Creates a #GSimpleAsyncResult from an error condition, and takes over the
@@ -394,9 +393,9 @@
 
 /**
  * g_simple_async_result_new_error:
- * @source_object: a #GObject, or %NULL.
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
+ * @source_object: (allow-none): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  * @domain: a #GQuark.
  * @code: an error code.
  * @format: a string with format characters.
@@ -489,7 +488,7 @@
 /**
  * g_simple_async_result_propagate_error:
  * @simple: a #GSimpleAsyncResult.
- * @dest: a location to propegate the error to.
+ * @dest: (out): a location to propagate the error to.
  *
  * Propagates an error from within the simple asynchronous result to
  * a given destination.
@@ -513,7 +512,7 @@
 }
 
 /**
- * g_simple_async_result_set_op_res_gpointer:
+ * g_simple_async_result_set_op_res_gpointer: (skip)
  * @simple: a #GSimpleAsyncResult.
  * @op_res: a pointer result from an asynchronous function.
  * @destroy_op_res: a #GDestroyNotify function.
@@ -632,7 +631,7 @@
 }
 
 /**
- * g_simple_async_result_take_error:
+ * g_simple_async_result_take_error: (skip)
  * @simple: a #GSimpleAsyncResult
  * @error: a #GError
  *
@@ -655,7 +654,7 @@
 }
 
 /**
- * g_simple_async_result_set_error_va:
+ * g_simple_async_result_set_error_va: (skip)
  * @simple: a #GSimpleAsyncResult.
  * @domain: a #GQuark (usually #G_IO_ERROR).
  * @code: an error code.
@@ -683,7 +682,7 @@
 }
 
 /**
- * g_simple_async_result_set_error:
+ * g_simple_async_result_set_error: (skip)
  * @simple: a #GSimpleAsyncResult.
  * @domain: a #GQuark (usually #G_IO_ERROR).
  * @code: an error code.
@@ -851,11 +850,11 @@
 }
 
 /**
- * g_simple_async_result_run_in_thread:
+ * g_simple_async_result_run_in_thread: (skip)
  * @simple: a #GSimpleAsyncResult.
  * @func: a #GSimpleAsyncThreadFunc.
  * @io_priority: the io priority of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  *
  * Runs the asynchronous job in a separate thread and then calls
  * g_simple_async_result_complete_in_idle() on @simple to return
@@ -934,8 +933,8 @@
 }
 
 /**
- * g_simple_async_report_error_in_idle:
- * @object: a #GObject.
+ * g_simple_async_report_error_in_idle: (skip)
+ * @object: (allow-none): a #GObject, or %NULL.
  * @callback: a #GAsyncReadyCallback.
  * @user_data: user data passed to @callback.
  * @domain: a #GQuark containing the error domain (usually #G_IO_ERROR).
@@ -959,7 +958,7 @@
   GSimpleAsyncResult *simple;
   va_list args;
  
-  g_return_if_fail (G_IS_OBJECT (object));
+  g_return_if_fail (!object || G_IS_OBJECT (object));
   g_return_if_fail (domain != 0);
   g_return_if_fail (format != NULL);
 
@@ -976,9 +975,9 @@
 
 /**
  * g_simple_async_report_gerror_in_idle:
- * @object: a #GObject.
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
+ * @object: (allow-none): a #GObject, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  * @error: the #GError to report
  *
  * Reports an error in an idle function. Similar to
@@ -993,7 +992,7 @@
 {
   GSimpleAsyncResult *simple;
  
-  g_return_if_fail (G_IS_OBJECT (object));
+  g_return_if_fail (!object || G_IS_OBJECT (object));
   g_return_if_fail (error != NULL);
 
   simple = g_simple_async_result_new_from_error (object,
@@ -1005,8 +1004,8 @@
 }
 
 /**
- * g_simple_async_report_take_gerror_in_idle:
- * @object: a #GObject.
+ * g_simple_async_report_take_gerror_in_idle: (skip)
+ * @object: (allow-none): a #GObject, or %NULL
  * @callback: a #GAsyncReadyCallback.
  * @user_data: user data passed to @callback.
  * @error: the #GError to report
@@ -1025,7 +1024,7 @@
 {
   GSimpleAsyncResult *simple;
 
-  g_return_if_fail (G_IS_OBJECT (object));
+  g_return_if_fail (!object || G_IS_OBJECT (object));
   g_return_if_fail (error != NULL);
 
   simple = g_simple_async_result_new_take_error (object,
diff --git a/gio/gsocket.c b/gio/gsocket.c
index ae45802..01792a7 100644
--- a/gio/gsocket.c
+++ b/gio/gsocket.c
@@ -1479,7 +1479,7 @@
 /**
  * g_socket_accept:
  * @socket: a #GSocket.
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Accept incoming connections on a connection-based socket. This removes
@@ -1591,7 +1591,7 @@
  * g_socket_connect:
  * @socket: a #GSocket.
  * @address: a #GSocketAddress specifying the remote address.
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Connect the socket to the specified remote address.
@@ -1737,7 +1737,7 @@
  * @buffer: a buffer to read data into (which should be at least @size
  *     bytes long).
  * @size: the number of bytes you want to read from the socket
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Receive data (up to @size bytes) from a socket. This is mainly used by
@@ -1786,7 +1786,7 @@
  *     bytes long).
  * @size: the number of bytes you want to read from the socket
  * @blocking: whether to do blocking or non-blocking I/O
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * This behaves exactly the same as g_socket_receive(), except that
@@ -1864,7 +1864,7 @@
  * @buffer: a buffer to read data into (which should be at least @size
  *     bytes long).
  * @size: the number of bytes you want to read from the socket
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Receive data (up to @size bytes) from a socket.
@@ -1913,9 +1913,9 @@
 /**
  * g_socket_send:
  * @socket: a #GSocket
- * @buffer: the buffer containing the data to send.
+ * @buffer: (array length=size): the buffer containing the data to send.
  * @size: the number of bytes to send
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Tries to send @size bytes from @buffer on the socket. This is
@@ -1953,10 +1953,10 @@
 /**
  * g_socket_send_with_blocking:
  * @socket: a #GSocket
- * @buffer: the buffer containing the data to send.
+ * @buffer: (array length=size): the buffer containing the data to send.
  * @size: the number of bytes to send
  * @blocking: whether to do blocking or non-blocking I/O
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * This behaves exactly the same as g_socket_send(), except that
@@ -2032,9 +2032,9 @@
  * g_socket_send_to:
  * @socket: a #GSocket
  * @address: a #GSocketAddress, or %NULL
- * @buffer: the buffer containing the data to send.
+ * @buffer: (array length=size): the buffer containing the data to send.
  * @size: the number of bytes to send
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Tries to send @size bytes from @buffer to @address. If @address is
@@ -2468,6 +2468,10 @@
   GSocketSourceFunc func = (GSocketSourceFunc)callback;
   GSocketSource *socket_source = (GSocketSource *)source;
 
+#ifdef G_OS_WIN32
+  socket_source->pollfd.revents = update_condition (socket_source->socket);
+#endif
+
   return (*func) (socket_source->socket,
 		  socket_source->pollfd.revents & socket_source->condition,
 		  user_data);
@@ -2588,10 +2592,10 @@
 }
 
 /**
- * g_socket_create_source:
+ * g_socket_create_source: (skip)
  * @socket: a #GSocket
  * @condition: a #GIOCondition mask to monitor
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  *
  * Creates a %GSource that can be attached to a %GMainContext to monitor
  * for the availibility of the specified @condition on the socket.
@@ -2692,7 +2696,7 @@
  * g_socket_condition_wait:
  * @socket: a #GSocket
  * @condition: a #GIOCondition mask to wait for
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: a #GError pointer, or %NULL
  *
  * Waits for @condition to become true on @socket. When the condition
@@ -2819,13 +2823,13 @@
  * g_socket_send_message:
  * @socket: a #GSocket
  * @address: a #GSocketAddress, or %NULL
- * @vectors: an array of #GOutputVector structs
+ * @vectors: (array length=num_vectors): an array of #GOutputVector structs
  * @num_vectors: the number of elements in @vectors, or -1
- * @messages: a pointer to an array of #GSocketControlMessages, or
- *   %NULL.
+ * @messages: (array length=num_messages) (allow-none): a pointer to an
+ *   array of #GSocketControlMessages, or %NULL.
  * @num_messages: number of elements in @messages, or -1.
  * @flags: an int containing #GSocketMsgFlags flags
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Send data to @address on @socket.  This is the most complicated and
@@ -3117,14 +3121,14 @@
  * g_socket_receive_message:
  * @socket: a #GSocket
  * @address: a pointer to a #GSocketAddress pointer, or %NULL
- * @vectors: an array of #GInputVector structs
+ * @vectors: (array length=num_vectors): an array of #GInputVector structs
  * @num_vectors: the number of elements in @vectors, or -1
- * @messages: a pointer which may be filled with an array of
- *     #GSocketControlMessages, or %NULL
+ * @messages: (array length=num_messages) (allow-none): a pointer which
+ *    may be filled with an array of #GSocketControlMessages, or %NULL
  * @num_messages: a pointer which will be filled with the number of
  *    elements in @messages, or %NULL
  * @flags: a pointer to an int containing #GSocketMsgFlags flags
- * @cancellable: a %GCancellable or %NULL
+ * @cancellable: (allow-none): a %GCancellable or %NULL
  * @error: a #GError pointer, or %NULL
  *
  * Receive data from a socket.  This is the most complicated and
diff --git a/gio/gsocketaddressenumerator.c b/gio/gsocketaddressenumerator.c
index 1886f36..2193860 100644
--- a/gio/gsocketaddressenumerator.c
+++ b/gio/gsocketaddressenumerator.c
@@ -50,7 +50,7 @@
 /**
  * g_socket_address_enumerator_next:
  * @enumerator: a #GSocketAddressEnumerator
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: a #GError.
  *
  * Retrieves the next #GSocketAddress from @enumerator. Note that this
@@ -115,9 +115,10 @@
 /**
  * g_socket_address_enumerator_next_async:
  * @enumerator: a #GSocketAddressEnumerator
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request
+ *     is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously retrieves the next #GSocketAddress from @enumerator
  * and then calls @callback, which must call
diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c
index 0464322..bb60fcc 100644
--- a/gio/gsocketclient.c
+++ b/gio/gsocketclient.c
@@ -723,7 +723,7 @@
  * g_socket_client_connect:
  * @client: a #GSocketClient.
  * @connectable: a #GSocketConnectable specifying the remote address.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Tries to resolve the @connectable and make a network connection to it..
@@ -864,15 +864,16 @@
 
       if (connection && client->priv->tls)
 	{
-	  GTlsClientConnection *tlsconn;
+	  GIOStream *tlsconn;
 
 	  tlsconn = g_tls_client_connection_new (connection, connectable, &last_error);
 	  g_object_unref (connection);
-	  connection = (GIOStream *)tlsconn;
+	  connection = tlsconn;
 
 	  if (tlsconn)
 	    {
-	      g_tls_client_connection_set_validation_flags (tlsconn, client->priv->tls_validation_flags);
+	      g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (tlsconn),
+                                                            client->priv->tls_validation_flags);
 	      if (!g_tls_connection_handshake (G_TLS_CONNECTION (tlsconn),
 					       cancellable, &last_error))
 		{
@@ -904,7 +905,7 @@
  * @client: a #GSocketClient
  * @host_and_port: the name and optionally port of the host to connect to
  * @default_port: the default port to connect to
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: a pointer to a #GError, or %NULL
  *
  * This is a helper function for g_socket_client_connect().
@@ -968,7 +969,7 @@
  * @client: a #GSocketConnection
  * @domain: a domain name
  * @service: the name of the service to connect to
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: a pointer to a #GError, or %NULL
  * @returns: (transfer full): a #GSocketConnection if successful, or %NULL on error
  *
@@ -1010,7 +1011,7 @@
  * @client: a #GSocketClient
  * @uri: A network URI
  * @default_port: the default port to connect to
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
  * @error: a pointer to a #GError, or %NULL
  *
  * This is a helper function for g_socket_client_connect().
@@ -1019,7 +1020,9 @@
  *
  * @uri may be any valid URI containing an "authority" (hostname/port)
  * component. If a port is not specified in the URI, @default_port
- * will be used.
+ * will be used. TLS will be negotiated if #GSocketClient:tls is %TRUE.
+ * (#GSocketClient does not know to automatically assume TLS for
+ * certain URI schemes.)
  *
  * Using this rather than g_socket_client_connect() or
  * g_socket_client_connect_to_host() allows #GSocketClient to
@@ -1166,7 +1169,7 @@
 static void
 g_socket_client_tls_handshake (GSocketClientAsyncConnectData *data)
 {
-  GTlsClientConnection *tlsconn;
+  GIOStream *tlsconn;
 
   if (!data->client->priv->tls)
     {
@@ -1179,7 +1182,8 @@
 					 &data->last_error);
   if (tlsconn)
     {
-      g_tls_client_connection_set_validation_flags (tlsconn, data->client->priv->tls_validation_flags);
+      g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (tlsconn),
+                                                    data->client->priv->tls_validation_flags);
       g_tls_connection_handshake_async (G_TLS_CONNECTION (tlsconn),
 					G_PRIORITY_DEFAULT,
 					data->cancellable,
@@ -1418,9 +1422,9 @@
  * g_socket_client_connect_async:
  * @client: a #GTcpClient
  * @connectable: a #GSocketConnectable specifying the remote address.
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of g_socket_client_connect().
  *
@@ -1467,9 +1471,9 @@
  * @client: a #GTcpClient
  * @host_and_port: the name and optionally the port of the host to connect to
  * @default_port: the default port to connect to
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of g_socket_client_connect_to_host().
  *
@@ -1512,9 +1516,9 @@
  * @client: a #GSocketClient
  * @domain: a domain name
  * @service: the name of the service to connect to
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of
  * g_socket_client_connect_to_service().
@@ -1543,9 +1547,9 @@
  * @client: a #GSocketClient
  * @uri: a network uri
  * @default_port: the default port to connect to
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of g_socket_client_connect_to_uri().
  *
diff --git a/gio/gsocketcontrolmessage.c b/gio/gsocketcontrolmessage.c
index cce8258..a2a6f44 100644
--- a/gio/gsocketcontrolmessage.c
+++ b/gio/gsocketcontrolmessage.c
@@ -153,7 +153,7 @@
  * @level: a socket level
  * @type: a socket control message type for the given @level
  * @size: the size of the data in bytes
- * @data: pointer to the message data
+ * @data: (array length=size) (element-type guint8): pointer to the message data
  *
  * Tries to deserialize a socket control message of a given
  * @level and @type. This will ask all known (to GType) subclasses
diff --git a/gio/gsocketlistener.c b/gio/gsocketlistener.c
index babefcd..ddfbffa 100644
--- a/gio/gsocketlistener.c
+++ b/gio/gsocketlistener.c
@@ -199,7 +199,7 @@
  * g_socket_listener_add_socket:
  * @listener: a #GSocketListener
  * @socket: a listening #GSocket
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (allow-none): Optional #GObject identifying this source
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Adds @socket to the set of sockets that we try to accept
@@ -253,7 +253,7 @@
  * @address: a #GSocketAddress
  * @type: a #GSocketType
  * @protocol: a #GSocketProtocol
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (allow-none): Optional #GObject identifying this source
  * @effective_address: (out) (allow-none): location to store the address that was bound to, or %NULL.
  * @error: #GError for error reporting, or %NULL to ignore.
  *
@@ -344,7 +344,7 @@
  * g_socket_listener_add_inet_port:
  * @listener: a #GSocketListener
  * @port: an IP port number (non-zero)
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (allow-none): Optional #GObject identifying this source
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Helper function for g_socket_listener_add_address() that
@@ -563,7 +563,7 @@
  * g_socket_listener_accept_socket:
  * @listener: a #GSocketListener
  * @source_object: (out) (transfer none) (allow-none): location where #GObject pointer will be stored, or %NULL.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Blocks waiting for a client to connect to any of the sockets added
@@ -640,7 +640,7 @@
  * g_socket_listener_accept:
  * @listener: a #GSocketListener
  * @source_object: (out) (transfer none) (allow-none): location where #GObject pointer will be stored, or %NULL
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting, or %NULL to ignore.
  *
  * Blocks waiting for a client to connect to any of the sockets added
@@ -724,9 +724,9 @@
 /**
  * g_socket_listener_accept_socket_async:
  * @listener: a #GSocketListener
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of g_socket_listener_accept_socket().
  *
@@ -769,7 +769,7 @@
  * g_socket_listener_accept_socket_finish:
  * @listener: a #GSocketListener
  * @result: a #GAsyncResult.
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (out) (transfer none) (allow-none): Optional #GObject identifying this source
  * @error: a #GError location to store the error occuring, or %NULL to
  * ignore.
  *
@@ -808,9 +808,9 @@
 /**
  * g_socket_listener_accept_async:
  * @listener: a #GSocketListener
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data for the callback
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
  * This is the asynchronous version of g_socket_listener_accept().
  *
@@ -836,7 +836,7 @@
  * g_socket_listener_accept_finish:
  * @listener: a #GSocketListener
  * @result: a #GAsyncResult.
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (out) (transfer none) (allow-none): Optional #GObject identifying this source
  * @error: a #GError location to store the error occuring, or %NULL to
  * ignore.
  *
@@ -927,7 +927,7 @@
 /**
  * g_socket_listener_add_any_inet_port:
  * @listener: a #GSocketListener
- * @source_object: Optional #GObject identifying this source
+ * @source_object: (allow-none): Optional #GObject identifying this source
  * @error: a #GError location to store the error occuring, or %NULL to
  * ignore.
  *
diff --git a/gio/gsocks5proxy.c b/gio/gsocks5proxy.c
index 07fc8ce..a4da21e 100644
--- a/gio/gsocks5proxy.c
+++ b/gio/gsocks5proxy.c
@@ -399,7 +399,7 @@
 
       default: /* Unknown error */
 	g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED,
-			     _("Unkown SOCKSv5 proxy error."));
+			     _("Unknown SOCKSv5 proxy error."));
 	return FALSE;
 	break;
     }
diff --git a/gio/gthemedicon.c b/gio/gthemedicon.c
index f6cde15..e723a49 100644
--- a/gio/gthemedicon.c
+++ b/gio/gthemedicon.c
@@ -275,7 +275,7 @@
 
 /**
  * g_themed_icon_new_from_names:
- * @iconnames: an array of strings containing icon names.
+ * @iconnames: (array length=len): an array of strings containing icon names.
  * @len: the length of the @iconnames array, or -1 if @iconnames is 
  *     %NULL-terminated
  * 
diff --git a/gio/gtlscertificate.c b/gio/gtlscertificate.c
index be1f9af..8e0067c 100644
--- a/gio/gtlscertificate.c
+++ b/gio/gtlscertificate.c
@@ -53,11 +53,6 @@
 
 G_DEFINE_ABSTRACT_TYPE (GTlsCertificate, g_tls_certificate, G_TYPE_OBJECT);
 
-struct _GTlsCertificatePrivate
-{
-  GTlsCertificate *issuer;
-};
-
 enum
 {
   PROP_0,
@@ -72,9 +67,6 @@
 static void
 g_tls_certificate_init (GTlsCertificate *cert)
 {
-  cert->priv = G_TYPE_INSTANCE_GET_PRIVATE (cert,
-					    G_TYPE_TLS_CERTIFICATE,
-					    GTlsCertificatePrivate);
 }
 
 static void
@@ -83,17 +75,7 @@
 				GValue     *value,
 				GParamSpec *pspec)
 {
-  GTlsCertificate *cert = G_TLS_CERTIFICATE (object);
-
-  switch (prop_id)
-    {
-    case PROP_ISSUER:
-      g_value_set_object (value, cert->priv->issuer);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-    }
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 }
 
 static void
@@ -102,28 +84,7 @@
 				const GValue *value,
 				GParamSpec   *pspec)
 {
-  GTlsCertificate *cert = G_TLS_CERTIFICATE (object);
-
-  switch (prop_id)
-    {
-    case PROP_ISSUER:
-      cert->priv->issuer = g_value_dup_object (value);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-    }
-}
-
-static void
-g_tls_certificate_finalize (GObject *object)
-{
-  GTlsCertificate *cert = G_TLS_CERTIFICATE (object);
-
-  if (cert->priv->issuer)
-    g_object_unref (cert->priv->issuer);
-
-  G_OBJECT_CLASS (g_tls_certificate_parent_class)->finalize (object);
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 }
 
 static void
@@ -131,11 +92,8 @@
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (class);
 
-  g_type_class_add_private (class, sizeof (GTlsCertificatePrivate));
-
   gobject_class->set_property = g_tls_certificate_set_property;
   gobject_class->get_property = g_tls_certificate_get_property;
-  gobject_class->finalize = g_tls_certificate_finalize;
 
   /**
    * GTlsCertificate:certificate:
@@ -482,5 +440,49 @@
 GTlsCertificate *
 g_tls_certificate_get_issuer (GTlsCertificate  *cert)
 {
-  return cert->priv->issuer;
+  GTlsCertificate *issuer;
+
+  g_object_get (G_OBJECT (cert), "issuer", &issuer, NULL);
+  if (issuer)
+    g_object_unref (issuer);
+
+  return issuer;
+}
+
+/**
+ * g_tls_certificate_verify:
+ * @cert: a #GTlsCertificate
+ * @identity: (allow-none): the expected peer identity
+ * @trusted_ca: (allow-none): the certificate of a trusted authority
+ *
+ * This verifies @cert and returns a set of #GTlsCertificateFlags
+ * indicating any problems found with it. This can be used to verify a
+ * certificate outside the context of making a connection, or to
+ * check a certificate against a CA that is not part of the system
+ * CA database.
+ *
+ * If @identity is not %NULL, @cert's name(s) will be compared against
+ * it, and %G_TLS_CERTIFICATE_BAD_IDENTITY will be set in the return
+ * value if it does not match. If @identity is %NULL, that bit will
+ * never be set in the return value.
+ *
+ * If @trusted_ca is not %NULL, then @cert (or one of the certificates
+ * in its chain) must be signed by it, or else
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA will be set in the return value. If
+ * @trusted_ca is %NULL, that bit will never be set in the return
+ * value.
+ *
+ * (All other #GTlsCertificateFlags values will always be set or unset
+ * as appropriate.)
+ *
+ * Return value: the appropriate #GTlsCertificateFlags
+ *
+ * Since: 2.28
+ */
+GTlsCertificateFlags
+g_tls_certificate_verify (GTlsCertificate     *cert,
+			  GSocketConnectable  *identity,
+			  GTlsCertificate     *trusted_ca)
+{
+  return G_TLS_CERTIFICATE_GET_CLASS (cert)->verify (cert, identity, trusted_ca);
 }
diff --git a/gio/gtlscertificate.h b/gio/gtlscertificate.h
index f8a7fd1..40cabf9 100644
--- a/gio/gtlscertificate.h
+++ b/gio/gtlscertificate.h
@@ -49,26 +49,34 @@
 {
   GObjectClass parent_class;
 
+  GTlsCertificateFlags  (* verify) (GTlsCertificate     *cert,
+				    GSocketConnectable  *identity,
+				    GTlsCertificate     *trusted_ca);
+
   /*< private >*/
   /* Padding for future expansion */
   gpointer padding[8];
 };
 
-GType            g_tls_certificate_get_type           (void) G_GNUC_CONST;
+GType                 g_tls_certificate_get_type           (void) G_GNUC_CONST;
 
-GTlsCertificate *g_tls_certificate_new_from_pem       (const gchar      *data,
-						       gssize            length,
-						       GError          **error);
+GTlsCertificate      *g_tls_certificate_new_from_pem       (const gchar         *data,
+							    gssize               length,
+							    GError             **error);
 
-GTlsCertificate *g_tls_certificate_new_from_file      (const gchar      *file,
-						       GError          **error);
-GTlsCertificate *g_tls_certificate_new_from_files     (const gchar      *cert_file,
-						       const gchar      *key_file,
-						       GError          **error);
-GList           *g_tls_certificate_list_new_from_file (const gchar      *file,
-						       GError          **error);
+GTlsCertificate      *g_tls_certificate_new_from_file      (const gchar         *file,
+							    GError             **error);
+GTlsCertificate      *g_tls_certificate_new_from_files     (const gchar         *cert_file,
+							    const gchar         *key_file,
+							    GError             **error);
+GList                *g_tls_certificate_list_new_from_file (const gchar         *file,
+							    GError             **error);
 
-GTlsCertificate *g_tls_certificate_get_issuer         (GTlsCertificate  *cert);
+GTlsCertificate      *g_tls_certificate_get_issuer         (GTlsCertificate     *cert);
+
+GTlsCertificateFlags  g_tls_certificate_verify             (GTlsCertificate     *cert,
+							    GSocketConnectable  *identity,
+							    GTlsCertificate     *trusted_ca);
 
 G_END_DECLS
 
diff --git a/gio/gtlsclientconnection.c b/gio/gtlsclientconnection.c
index 1faea96..4b87b60 100644
--- a/gio/gtlsclientconnection.c
+++ b/gio/gtlsclientconnection.c
@@ -38,8 +38,6 @@
  *
  * #GTlsClientConnection is the client-side subclass of
  * #GTlsConnection, representing a client-side TLS connection.
- *
- * Since: 2.28
  */
 
 /**
@@ -131,18 +129,19 @@
    * A list of the distinguished names of the Certificate Authorities
    * that the server will accept client certificates signed by. If the
    * server requests a client certificate during the handshake, then
-   * this property will be set by the time the
-   * #GTlsConnection::need-certificate signal is emitted.
+   * this property will be set after the handshake completes.
+   *
+   * Each item in the list is a #GByteArray which contains the complete
+   * subject DN of the certificate authority.
    *
    * Since: 2.28
    */
   g_object_interface_install_property (iface,
-				       g_param_spec_boxed ("accepted-cas",
-							   P_("Accepted CAs"),
-							   P_("Distinguished names of the CAs the server accepts certificates from"),
-							   G_TYPE_STRV,
-							   G_PARAM_READABLE |
-							   G_PARAM_STATIC_STRINGS));
+				       g_param_spec_pointer ("accepted-cas",
+							     P_("Accepted CAs"),
+							     P_("Distinguished names of the CAs the server accepts certificates from"),
+							     G_PARAM_READABLE |
+							     G_PARAM_STATIC_STRINGS));
 }
 
 /**
@@ -159,7 +158,7 @@
  *
  * Since: 2.28
  */
-GTlsClientConnection *
+GIOStream *
 g_tls_client_connection_new (GIOStream           *base_io_stream,
 			     GSocketConnectable  *server_identity,
 			     GError             **error)
@@ -173,7 +172,7 @@
 			 "base-io-stream", base_io_stream,
 			 "server-identity", server_identity,
 			 NULL);
-  return G_TLS_CLIENT_CONNECTION (conn);
+  return G_IO_STREAM (conn);
 }
 
 /**
@@ -200,10 +199,11 @@
 /**
  * g_tls_client_connection_set_validation_flags:
  * @conn: the #GTlsClientConnection
- * @flags: the #GTlsCertificatelags to use
+ * @flags: the #GTlsCertificateFlags to use
  *
  * Sets @conn's validation flags, to override the default set of
- * checks performed when validating a server certificate.
+ * checks performed when validating a server certificate. By default,
+ * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
  *
  * Since: 2.28
  */
@@ -316,15 +316,19 @@
  * during the TLS handshake if the server requests a certificate.
  * Otherwise, it will be %NULL.
  *
- * Return value: (transfer full) (array zero-terminated=1): the list
- * of CA names, which you must free (eg, with g_strfreev()).
+ * Each item in the list is a #GByteArray which contains the complete
+ * subject DN of the certificate authority.
+ *
+ * Return value: (element-type GByteArray) (transfer full): the list of
+ * CA DNs. You should unref each element with g_byte_array_unref() and then
+ * the free the list with g_list_free().
  *
  * Since: 2.28
  */
-char **
+GList *
 g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn)
 {
-  char **accepted_cas = NULL;
+  GList *accepted_cas = NULL;
 
   g_return_val_if_fail (G_IS_TLS_CLIENT_CONNECTION (conn), NULL);
 
diff --git a/gio/gtlsclientconnection.h b/gio/gtlsclientconnection.h
index 2bfa8c4..fd6088a 100644
--- a/gio/gtlsclientconnection.h
+++ b/gio/gtlsclientconnection.h
@@ -52,7 +52,7 @@
 
 GType                 g_tls_client_connection_get_type             (void) G_GNUC_CONST;
 
-GTlsClientConnection *g_tls_client_connection_new                  (GIOStream               *base_io_stream,
+GIOStream *           g_tls_client_connection_new                  (GIOStream               *base_io_stream,
 								    GSocketConnectable      *server_identity,
 								    GError                 **error);
 
@@ -65,7 +65,7 @@
 gboolean              g_tls_client_connection_get_use_ssl3         (GTlsClientConnection    *conn);
 void                  g_tls_client_connection_set_use_ssl3         (GTlsClientConnection    *conn,
 								    gboolean                 use_ssl3);
-char **               g_tls_client_connection_get_accepted_cas     (GTlsClientConnection    *conn);
+GList *               g_tls_client_connection_get_accepted_cas     (GTlsClientConnection    *conn);
 
 G_END_DECLS
 
diff --git a/gio/gtlsconnection.c b/gio/gtlsconnection.c
index e55f6f5..b358778 100644
--- a/gio/gtlsconnection.c
+++ b/gio/gtlsconnection.c
@@ -63,15 +63,8 @@
 					   guint         prop_id,
 					   const GValue *value,
 					   GParamSpec   *pspec);
-static void g_tls_connection_finalize     (GObject      *object);
-
-static gboolean g_tls_connection_certificate_accumulator (GSignalInvocationHint *ihint,
-							  GValue                *return_accu,
-							  const GValue          *handler_return,
-							  gpointer               dummy);
 
 enum {
-  NEED_CERTIFICATE,
   ACCEPT_CERTIFICATE,
 
   LAST_SIGNAL
@@ -84,12 +77,10 @@
   PROP_BASE_IO_STREAM,
   PROP_REQUIRE_CLOSE_NOTIFY,
   PROP_REHANDSHAKE_MODE,
+  PROP_USE_SYSTEM_CERTDB,
   PROP_CERTIFICATE,
-  PROP_PEER_CERTIFICATE
-};
-
-struct _GTlsConnectionPrivate {
-  GTlsCertificate *certificate, *peer_certificate;
+  PROP_PEER_CERTIFICATE,
+  PROP_PEER_CERTIFICATE_ERRORS
 };
 
 static void
@@ -97,11 +88,8 @@
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-  g_type_class_add_private (klass, sizeof (GTlsConnectionPrivate));
-
   gobject_class->get_property = g_tls_connection_get_property;
   gobject_class->set_property = g_tls_connection_set_property;
-  gobject_class->finalize = g_tls_connection_finalize;
 
   /**
    * GTlsConnection:base-io-stream:
@@ -119,6 +107,23 @@
 							G_PARAM_CONSTRUCT_ONLY |
 							G_PARAM_STATIC_STRINGS));
   /**
+   * GTlsConnection:use-system-certdb:
+   *
+   * Whether or not the system certificate database will be used to
+   * verify peer certificates. See
+   * g_tls_connection_set_use_system_certdb().
+   *
+   * Since: 2.28
+   */
+  g_object_class_install_property (gobject_class, PROP_USE_SYSTEM_CERTDB,
+				   g_param_spec_boolean ("use-system-certdb",
+							 P_("Use system certificate database"),
+							 P_("Whether to verify peer certificates against the system certificate database"),
+							 TRUE,
+							 G_PARAM_READWRITE |
+							 G_PARAM_CONSTRUCT |
+							 G_PARAM_STATIC_STRINGS));
+  /**
    * GTlsConnection:require-close-notify:
    *
    * Whether or not proper TLS close notification is required.
@@ -132,6 +137,7 @@
 							 P_("Whether to require proper TLS close notification"),
 							 TRUE,
 							 G_PARAM_READWRITE |
+							 G_PARAM_CONSTRUCT |
 							 G_PARAM_STATIC_STRINGS));
   /**
    * GTlsConnection:rehandshake-mode:
@@ -148,6 +154,7 @@
 						      G_TYPE_TLS_REHANDSHAKE_MODE,
 						      G_TLS_REHANDSHAKE_SAFELY,
 						      G_PARAM_READWRITE |
+						      G_PARAM_CONSTRUCT |
 						      G_PARAM_STATIC_STRINGS));
   /**
    * GTlsConnection:certificate:
@@ -167,8 +174,13 @@
   /**
    * GTlsConnection:peer-certificate:
    *
-   * The connection's peer's certificate, after it has been set during
-   * the TLS handshake.
+   * The connection's peer's certificate, after the TLS handshake has
+   * completed and the certificate has been accepted. Note in
+   * particular that this is not yet set during the emission of
+   * #GTlsConnection::accept-certificate.
+   *
+   * (You can watch for a #GObject::notify signal on this property to
+   * detect when a handshake has occurred.)
    *
    * Since: 2.28
    */
@@ -179,56 +191,26 @@
 							G_TYPE_TLS_CERTIFICATE,
 							G_PARAM_READABLE |
 							G_PARAM_STATIC_STRINGS));
-
   /**
-   * GTlsConnection::need-certificate:
-   * @conn: a #GTlsConnection
+   * GTlsConnection:peer-certificate-errors:
    *
-   * Emitted during the TLS handshake if a certificate is needed and
-   * one has not been set via g_tls_connection_set_certificate().
-   *
-   * For server-side connections, a certificate is always needed, and
-   * the connection will fail if none is provided.
-   *
-   * For client-side connections, the signal will be emitted only if
-   * the server has requested a certificate; you can call
-   * g_tls_client_connection_get_accepted_cas() to get a list of
-   * Certificate Authorities that the server will accept certificates
-   * from. If you do not return a certificate (and have not provided
-   * one via g_tls_connection_set_certificate()) then the server may
-   * reject the handshake, in which case the operation will eventually
-   * fail with %G_TLS_ERROR_CERTIFICATE_REQUIRED.
-   *
-   * Note that if this signal is emitted as part of asynchronous I/O
-   * in the main thread, then you should not attempt to interact with
-   * the user before returning from the signal handler. If you want to
-   * let the user choose a certificate to return, you would have to
-   * return %NULL from the signal handler on the first attempt, and
-   * then after the connection attempt returns a
-   * %G_TLS_ERROR_CERTIFICATE_REQUIRED, you can interact with the
-   * user, create a new connection, and call
-   * g_tls_connection_set_certificate() on it before handshaking (or
-   * just connect to the signal again and return the certificate the
-   * next time).
-   *
-   * If you are doing I/O in another thread, you do not
-   * need to worry about this, and can simply block in the signal
-   * handler until the UI thread returns an answer.
-   *
-   * Return value: the certificate to send to the peer, or %NULL to
-   * send no certificate. If you return a certificate, the signal
-   * emission will be stopped and further handlers will not be called.
+   * The errors noticed-and-ignored while verifying
+   * #GTlsConnection:peer-certificate. Normally this should be %0, but
+   * it may not be if #GTlsClientConnection::validation-flags is not
+   * %G_TLS_CERTIFICATE_VALIDATE_ALL, or if
+   * #GTlsConnection::accept-certificate overrode the default
+   * behavior.
    *
    * Since: 2.28
    */
-  signals[NEED_CERTIFICATE] =
-    g_signal_new (I_("need-certificate"),
-		  G_TYPE_TLS_CONNECTION,
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (GTlsConnectionClass, need_certificate),
-		  g_tls_connection_certificate_accumulator, NULL,
-		  _gio_marshal_OBJECT__VOID,
-		  G_TYPE_TLS_CERTIFICATE, 0);
+  g_object_class_install_property (gobject_class, PROP_PEER_CERTIFICATE_ERRORS,
+				   g_param_spec_flags ("peer-certificate-errors",
+						       P_("Peer Certificate Errors"),
+						       P_("Errors found with the peer's certificate"),
+						       G_TYPE_TLS_CERTIFICATE_FLAGS,
+						       0,
+						       G_PARAM_READABLE |
+						       G_PARAM_STATIC_STRINGS));
 
   /**
    * GTlsConnection::accept-certificate:
@@ -255,10 +237,20 @@
    * certificate, and the certificate will only be accepted if a
    * handler returns %TRUE.
    *
-   * As with #GTlsConnection::need_certificate, you should not
-   * interact with the user during the signal emission if the signal
-   * was emitted as part of an asynchronous operation in the main
-   * thread.
+   * Note that if this signal is emitted as part of asynchronous I/O
+   * in the main thread, then you should not attempt to interact with
+   * the user before returning from the signal handler. If you want to
+   * let the user decide whether or not to accept the certificate, you
+   * would have to return %FALSE from the signal handler on the first
+   * attempt, and then after the connection attempt returns a
+   * %G_TLS_ERROR_HANDSHAKE, you can interact with the user, and if
+   * the user decides to accept the certificate, remember that fact,
+   * create a new connection, and return %TRUE from the signal handler
+   * the next time.
+   *
+   * If you are doing I/O in another thread, you do not
+   * need to worry about this, and can simply block in the signal
+   * handler until the UI thread returns an answer.
    *
    * Return value: %TRUE to accept @peer_cert (which will also
    * immediately end the signal emission). %FALSE to allow the signal
@@ -282,20 +274,6 @@
 static void
 g_tls_connection_init (GTlsConnection *conn)
 {
-  conn->priv = G_TYPE_INSTANCE_GET_PRIVATE (conn, G_TYPE_TLS_CONNECTION, GTlsConnectionPrivate);
-}
-
-static void
-g_tls_connection_finalize (GObject *object)
-{
-  GTlsConnection *conn = G_TLS_CONNECTION (object);
-
-  if (conn->priv->certificate)
-    g_object_unref (conn->priv->certificate);
-  if (conn->priv->peer_certificate)
-    g_object_unref (conn->priv->peer_certificate);
-
-  G_OBJECT_CLASS (g_tls_connection_parent_class)->finalize (object);
 }
 
 static void
@@ -304,22 +282,7 @@
 			       GValue     *value,
 			       GParamSpec *pspec)
 {
-  GTlsConnection *conn = G_TLS_CONNECTION (object);
-
-  switch (prop_id)
-    {
-    case PROP_CERTIFICATE:
-      g_value_set_object (value, conn->priv->certificate);
-      break;
-
-    case PROP_PEER_CERTIFICATE:
-      g_value_set_object (value, conn->priv->peer_certificate);
-      break;
-
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 }
 
 static void
@@ -328,18 +291,57 @@
 			       const GValue *value,
 			       GParamSpec   *pspec)
 {
-  GTlsConnection *conn = G_TLS_CONNECTION (object);
+  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+}
 
-  switch (prop_id)
-    {
-    case PROP_CERTIFICATE:
-      g_tls_connection_set_certificate (conn, g_value_get_object (value));
-      break;
+/**
+ * g_tls_connection_set_use_system_certdb:
+ * @conn: a #GTlsConnection
+ * @use_system_certdb: whether to use the system certificate database
+ *
+ * Sets whether @conn uses the system certificate database to verify
+ * peer certificates. This is %TRUE by default. If set to %FALSE, then
+ * peer certificate validation will always set the
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
+ * #GTlsConnection::accept-certificate will always be emitted on
+ * client-side connections, unless that bit is not set in
+ * #GTlsClientConnection:validation-flags).
+ *
+ * Since: 2.28
+ */
+void
+g_tls_connection_set_use_system_certdb (GTlsConnection *conn,
+					gboolean        use_system_certdb)
+{
+  g_return_if_fail (G_IS_TLS_CONNECTION (conn));
 
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
+  g_object_set (G_OBJECT (conn),
+		"use-system-certdb", use_system_certdb,
+		NULL);
+}
+
+/**
+ * g_tls_connection_get_use_system_certdb:
+ * @conn: a #GTlsConnection
+ *
+ * Gets whether @conn uses the system certificate database to verify
+ * peer certificates. See g_tls_connection_set_use_system_certdb().
+ *
+ * Return value: whether @conn uses the system certificate database
+ *
+ * Since: 2.28
+ */
+gboolean
+g_tls_connection_get_use_system_certdb (GTlsConnection *conn)
+{
+  gboolean use_system_certdb;
+
+  g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), TRUE);
+
+  g_object_get (G_OBJECT (conn),
+		"use-system-certdb", &use_system_certdb,
+		NULL);
+  return use_system_certdb;
 }
 
 /**
@@ -348,9 +350,23 @@
  * @certificate: the certificate to use for @conn
  *
  * This sets the certificate that @conn will present to its peer
- * during the TLS handshake. If this is not set,
- * #GTlsConnection::need-certificate will be emitted during the
- * handshake if needed.
+ * during the TLS handshake. For a #GTlsServerConnection, it is
+ * mandatory to set this, and that will normally be done at construct
+ * time.
+ *
+ * For a #GTlsClientConnection, this is optional. If a handshake fails
+ * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server
+ * requires a certificate, and if you try connecting again, you should
+ * call this method first. You can call
+ * g_tls_client_connection_get_accepted_cas() on the failed connection
+ * to get a list of Certificate Authorities that the server will
+ * accept certificates from.
+ *
+ * (It is also possible that a server will allow the connection with
+ * or without a certificate; in that case, if you don't provide a
+ * certificate, you can tell that the server requested one by the fact
+ * that g_tls_client_connection_get_accepted_cas() will return
+ * non-%NULL.)
  *
  * Since: 2.28
  */
@@ -361,10 +377,7 @@
   g_return_if_fail (G_IS_TLS_CONNECTION (conn));
   g_return_if_fail (G_IS_TLS_CERTIFICATE (certificate));
 
-  if (conn->priv->certificate)
-    g_object_unref (conn->priv->certificate);
-  conn->priv->certificate = certificate ? g_object_ref (certificate) : NULL;
-  g_object_notify (G_OBJECT (conn), "certificate");
+  g_object_set (G_OBJECT (conn), "certificate", certificate, NULL);
 }
 
 /**
@@ -372,38 +385,73 @@
  * @conn: a #GTlsConnection
  *
  * Gets @conn's certificate, as set by
- * g_tls_connection_set_certificate() or returned from one of the
- * signals.
+ * g_tls_connection_set_certificate().
  *
- * Return value: @conn's certificate, or %NULL
+ * Return value: (transfer none): @conn's certificate, or %NULL
  *
  * Since: 2.28
  */
 GTlsCertificate *
 g_tls_connection_get_certificate (GTlsConnection *conn)
 {
+  GTlsCertificate *certificate;
+
   g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), NULL);
 
-  return conn->priv->certificate;
+  g_object_get (G_OBJECT (conn), "certificate", &certificate, NULL);
+  if (certificate)
+    g_object_unref (certificate);
+
+  return certificate;
 }
 
 /**
  * g_tls_connection_get_peer_certificate:
  * @conn: a #GTlsConnection
  *
- * Gets @conn's peer's certificate after it has been set during the
- * handshake.
+ * Gets @conn's peer's certificate after the handshake has completed.
+ * (It is not set during the emission of
+ * #GTlsConnection::accept-certificate.)
  *
- * Return value: @conn's peer's certificate, or %NULL
+ * Return value: (transfer none): @conn's peer's certificate, or %NULL
  *
  * Since: 2.28
  */
 GTlsCertificate *
 g_tls_connection_get_peer_certificate (GTlsConnection *conn)
 {
+  GTlsCertificate *peer_certificate;
+
   g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), NULL);
 
-  return conn->priv->peer_certificate;
+  g_object_get (G_OBJECT (conn), "peer-certificate", &peer_certificate, NULL);
+  if (peer_certificate)
+    g_object_unref (peer_certificate);
+
+  return peer_certificate;
+}
+
+/**
+ * g_tls_connection_get_peer_certificate_errors:
+ * @conn: a #GTlsConnection
+ *
+ * Gets the errors associated with validating @conn's peer's
+ * certificate, after the handshake has completed. (It is not set
+ * during the emission of #GTlsConnection::accept-certificate.)
+ *
+ * Return value: @conn's peer's certificate errors
+ *
+ * Since: 2.28
+ */
+GTlsCertificateFlags
+g_tls_connection_get_peer_certificate_errors (GTlsConnection *conn)
+{
+  GTlsCertificateFlags errors;
+
+  g_return_val_if_fail (G_IS_TLS_CONNECTION (conn), 0);
+
+  g_object_get (G_OBJECT (conn), "peer-certificate-errors", &errors, NULL);
+  return errors;
 }
 
 /**
@@ -411,13 +459,12 @@
  * @conn: a #GTlsConnection
  * @require_close_notify: whether or not to require close notification
  *
- * Sets whether or not @conn requires a proper TLS close notification
- * before closing the connection. If this is %TRUE (the default), then
- * calling g_io_stream_close() on @conn will send a TLS close
- * notification, and likewise it will expect to receive a close
- * notification before the connection is closed when reading, and will
- * return a %G_TLS_ERROR_EOF error if the connection is closed without
- * proper notification (since this may indicate a network error, or
+ * Sets whether or not @conn expects a proper TLS close notification
+ * before the connection is closed. If this is %TRUE (the default),
+ * then @conn will expect to receive a TLS close notification from its
+ * peer before the connection is closed, and will return a
+ * %G_TLS_ERROR_EOF error if the connection is closed without proper
+ * notification (since this may indicate a network error, or
  * man-in-the-middle attack).
  *
  * In some protocols, the application will know whether or not the
@@ -426,9 +473,18 @@
  * somehow self-delimiting); in this case, the close notify is
  * redundant and sometimes omitted. (TLS 1.1 explicitly allows this;
  * in TLS 1.0 it is technically an error, but often done anyway.) You
- * can use g_tls_connection_set_require_close_notify() to tell @conn to
- * allow an "unannounced" connection close, in which case it is up to
- * the application to check that the data has been fully received.
+ * can use g_tls_connection_set_require_close_notify() to tell @conn
+ * to allow an "unannounced" connection close, in which case the close
+ * will show up as a 0-length read, as in a non-TLS
+ * #GSocketConnection, and it is up to the application to check that
+ * the data has been fully received.
+ *
+ * Note that this only affects the behavior when the peer closes the
+ * connection; when the application calls g_io_stream_close() itself
+ * on @conn, this will send a close notification regardless of the
+ * setting of this property. If you explicitly want to do an unclean
+ * close, you can close @conn's #GTlsConnection:base-io-stream rather
+ * than closing @conn itself.
  *
  * Since: 2.28
  */
@@ -447,8 +503,8 @@
  * g_tls_connection_get_require_close_notify:
  * @conn: a #GTlsConnection
  *
- * Tests whether or not @conn requires a proper TLS close notification
- * before closing the connection. See
+ * Tests whether or not @conn expects a proper TLS close notification
+ * when the connection is closed. See
  * g_tls_connection_set_require_close_notify() for details.
  *
  * Return value: %TRUE if @conn requires a proper TLS close
@@ -558,8 +614,7 @@
  * However, you may call g_tls_connection_handshake() later on to
  * renegotiate parameters (encryption methods, etc) with the client.
  *
- * #GTlsConnection::accept_certificate and
- * #GTlsConnection::need_certificate may be emitted during the
+ * #GTlsConnection::accept_certificate may be emitted during the
  * handshake.
  *
  * Return value: success or failure
@@ -599,9 +654,9 @@
 {
   g_return_if_fail (G_IS_TLS_CONNECTION (conn));
 
-  return G_TLS_CONNECTION_GET_CLASS (conn)->handshake_async (conn, io_priority,
-							     cancellable,
-							     callback, user_data);
+  G_TLS_CONNECTION_GET_CLASS (conn)->handshake_async (conn, io_priority,
+						      cancellable,
+						      callback, user_data);
 }
 
 /**
@@ -644,42 +699,6 @@
 }
 
 
-static gboolean
-g_tls_connection_certificate_accumulator (GSignalInvocationHint *ihint,
-					  GValue                *return_accu,
-					  const GValue          *handler_return,
-					  gpointer               dummy)
-{
-  GTlsCertificate *cert;
-
-  cert = g_value_get_object (handler_return);
-  if (cert)
-    g_value_set_object (return_accu, cert);
-
-  return cert != NULL;
-}
-
-/**
- * g_tls_connection_emit_need_certificate:
- * @conn: a #GTlsConnection
- *
- * Used by #GTlsConnection implementations to emit the
- * #GTlsConnection::need-certificate signal.
- *
- * Returns: a new #GTlsCertificate
- *
- * Since: 2.28
- */
-GTlsCertificate *
-g_tls_connection_emit_need_certificate (GTlsConnection *conn)
-{
-  GTlsCertificate *cert = NULL;
-
-  g_signal_emit (conn, signals[NEED_CERTIFICATE], 0,
-		 &cert);
-  return cert;
-}
-
 /**
  * g_tls_connection_emit_accept_certificate:
  * @conn: a #GTlsConnection
@@ -705,23 +724,3 @@
 		 peer_cert, errors, &accept);
   return accept;
 }
-
-/**
- * g_tls_connection_set_peer_certificate:
- * @conn: a #GTlsConnection
- * @certificate: the peer certificate
- *
- * Used by #GTlsConnection implementations to set the connection's
- * peer certificate.
- *
- * Since: 2.28
- */
-void
-g_tls_connection_set_peer_certificate (GTlsConnection  *conn,
-				       GTlsCertificate *certificate)
-{
-  if (conn->priv->peer_certificate)
-    g_object_unref (conn->priv->peer_certificate);
-  conn->priv->peer_certificate = certificate ? g_object_ref (certificate) : NULL;
-  g_object_notify (G_OBJECT (conn), "peer-certificate");
-}
diff --git a/gio/gtlsconnection.h b/gio/gtlsconnection.h
index 86f1f68..7786c43 100644
--- a/gio/gtlsconnection.h
+++ b/gio/gtlsconnection.h
@@ -58,8 +58,6 @@
   GIOStreamClass parent_class;
 
   /* signals */
-  GTlsCertificate * ( *need_certificate)   (GTlsConnection       *connection);
-
   gboolean          ( *accept_certificate) (GTlsConnection       *connection,
 					    GTlsCertificate      *peer_cert,
 					    GTlsCertificateFlags  errors);
@@ -83,34 +81,39 @@
   gpointer padding[8];
 };
 
-GType                g_tls_connection_get_type                 (void) G_GNUC_CONST;
+GType                 g_tls_connection_get_type                    (void) G_GNUC_CONST;
 
-void                 g_tls_connection_set_certificate          (GTlsConnection       *conn,
-								GTlsCertificate      *certificate);
-GTlsCertificate     *g_tls_connection_get_certificate          (GTlsConnection       *conn);
+void                  g_tls_connection_set_use_system_certdb       (GTlsConnection       *conn,
+								    gboolean              use_system_certdb);
+gboolean              g_tls_connection_get_use_system_certdb       (GTlsConnection       *conn);
 
-GTlsCertificate     *g_tls_connection_get_peer_certificate     (GTlsConnection       *conn);
+void                  g_tls_connection_set_certificate             (GTlsConnection       *conn,
+								    GTlsCertificate      *certificate);
+GTlsCertificate      *g_tls_connection_get_certificate             (GTlsConnection       *conn);
 
-void                 g_tls_connection_set_require_close_notify (GTlsConnection       *conn,
-								gboolean              require_close_notify);
-gboolean             g_tls_connection_get_require_close_notify (GTlsConnection       *conn);
+GTlsCertificate      *g_tls_connection_get_peer_certificate        (GTlsConnection       *conn);
+GTlsCertificateFlags  g_tls_connection_get_peer_certificate_errors (GTlsConnection       *conn);
 
-void                 g_tls_connection_set_rehandshake_mode     (GTlsConnection       *conn,
-								GTlsRehandshakeMode   mode);
-GTlsRehandshakeMode  g_tls_connection_get_rehandshake_mode     (GTlsConnection       *conn);
+void                  g_tls_connection_set_require_close_notify    (GTlsConnection       *conn,
+								    gboolean              require_close_notify);
+gboolean              g_tls_connection_get_require_close_notify    (GTlsConnection       *conn);
 
-gboolean             g_tls_connection_handshake                (GTlsConnection       *conn,
-								GCancellable         *cancellable,
-								GError              **error);
+void                  g_tls_connection_set_rehandshake_mode        (GTlsConnection       *conn,
+								    GTlsRehandshakeMode   mode);
+GTlsRehandshakeMode   g_tls_connection_get_rehandshake_mode        (GTlsConnection       *conn);
 
-void                 g_tls_connection_handshake_async          (GTlsConnection       *conn,
-								int                   io_priority,
-								GCancellable         *cancellable,
-								GAsyncReadyCallback   callback,
-								gpointer              user_data);
-gboolean             g_tls_connection_handshake_finish         (GTlsConnection       *conn,
-								GAsyncResult         *result,
-								GError              **error);
+gboolean              g_tls_connection_handshake                   (GTlsConnection       *conn,
+								    GCancellable         *cancellable,
+								    GError              **error);
+
+void                  g_tls_connection_handshake_async             (GTlsConnection       *conn,
+								    int                   io_priority,
+								    GCancellable         *cancellable,
+								    GAsyncReadyCallback   callback,
+								    gpointer              user_data);
+gboolean              g_tls_connection_handshake_finish            (GTlsConnection       *conn,
+								    GAsyncResult         *result,
+								    GError              **error);
 
 /**
  * G_TLS_ERROR:
@@ -124,13 +127,9 @@
 
 
 /*< protected >*/
-GTlsCertificate     *g_tls_connection_emit_need_certificate    (GTlsConnection       *conn);
-gboolean             g_tls_connection_emit_accept_certificate  (GTlsConnection       *conn,
-								GTlsCertificate      *peer_cert,
-								GTlsCertificateFlags  errors);
-
-void                 g_tls_connection_set_peer_certificate     (GTlsConnection       *conn,
-								GTlsCertificate      *certificate);
+gboolean              g_tls_connection_emit_accept_certificate     (GTlsConnection       *conn,
+								    GTlsCertificate      *peer_cert,
+								    GTlsCertificateFlags  errors);
 
 G_END_DECLS
 
diff --git a/gio/gtlsserverconnection.c b/gio/gtlsserverconnection.c
index 791a0dd..4965656 100644
--- a/gio/gtlsserverconnection.c
+++ b/gio/gtlsserverconnection.c
@@ -78,7 +78,7 @@
  *
  * Since: 2.28
  */
-GTlsServerConnection *
+GIOStream *
 g_tls_server_connection_new (GIOStream        *base_io_stream,
 			     GTlsCertificate  *certificate,
 			     GError          **error)
@@ -92,5 +92,5 @@
 			 "base-io-stream", base_io_stream,
 			 "certificate", certificate,
 			 NULL);
-  return G_TLS_SERVER_CONNECTION (conn);
+  return G_IO_STREAM (conn);
 }
diff --git a/gio/gtlsserverconnection.h b/gio/gtlsserverconnection.h
index 976996e..c909d55 100644
--- a/gio/gtlsserverconnection.h
+++ b/gio/gtlsserverconnection.h
@@ -52,7 +52,7 @@
 
 GType                 g_tls_server_connection_get_type                 (void) G_GNUC_CONST;
 
-GTlsServerConnection *g_tls_server_connection_new                      (GIOStream        *base_io_stream,
+GIOStream *           g_tls_server_connection_new                      (GIOStream        *base_io_stream,
 									GTlsCertificate  *certificate,
 									GError          **error);
 
diff --git a/gio/gunixconnection.c b/gio/gunixconnection.c
index 82510f5..7106fb7 100644
--- a/gio/gunixconnection.c
+++ b/gio/gunixconnection.c
@@ -304,7 +304,7 @@
 /**
  * g_unix_connection_send_credentials:
  * @connection: A #GUnixConnection.
- * @cancellable: A #GCancellable or %NULL.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Passes the credentials of the current user the receiving side
@@ -372,7 +372,7 @@
 /**
  * g_unix_connection_receive_credentials:
  * @connection: A #GUnixConnection.
- * @cancellable: A #GCancellable or %NULL.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
  * Receives credentials from the sending end of the connection.  The
diff --git a/gio/gunixfdlist.c b/gio/gunixfdlist.c
index e9425db..68af47e 100644
--- a/gio/gunixfdlist.c
+++ b/gio/gunixfdlist.c
@@ -161,7 +161,7 @@
 
 /**
  * g_unix_fd_list_new_from_array:
- * @fds: the initial list of file descriptors
+ * @fds: (array length=n_fds): the initial list of file descriptors
  * @n_fds: the length of #fds, or -1
  *
  * Creates a new #GUnixFDList containing the file descriptors given in
@@ -201,7 +201,8 @@
 /**
  * g_unix_fd_list_steal_fds:
  * @list: a #GUnixFDList
- * @length: pointer to the length of the returned array, or %NULL
+ * @length: (out) (allow-none): pointer to the length of the returned
+ *     array, or %NULL
  *
  * Returns the array of file descriptors that is contained in this
  * object.
@@ -222,7 +223,8 @@
  * This function never returns %NULL. In case there are no file
  * descriptors contained in @list, an empty array is returned.
  *
- * Returns: an array of file descriptors
+ * Returns: (array length=length) (transfer full): an array of file
+ *     descriptors
  *
  * Since: 2.24
  */
@@ -255,7 +257,8 @@
 /**
  * g_unix_fd_list_peek_fds:
  * @list: a #GUnixFDList
- * @length: pointer to the length of the returned array, or %NULL
+ * @length: (out) (allow-none): pointer to the length of the returned
+ *     array, or %NULL
  *
  * Returns the array of file descriptors that is contained in this
  * object.
@@ -271,7 +274,8 @@
  * This function never returns %NULL. In case there are no file
  * descriptors contained in @list, an empty array is returned.
  *
- * Returns: an array of file descriptors
+ * Returns: (array length=length) (transfer none): an array of file
+ *     descriptors
  *
  * Since: 2.24
  */
diff --git a/gio/gunixfdmessage.c b/gio/gunixfdmessage.c
index 7dc0f8b..aaf749b 100644
--- a/gio/gunixfdmessage.c
+++ b/gio/gunixfdmessage.c
@@ -257,7 +257,8 @@
 /**
  * g_unix_fd_message_steal_fds:
  * @message: a #GUnixFDMessage
- * @length: pointer to the length of the returned array, or %NULL
+ * @length: (out) (allow-none): pointer to the length of the returned
+ *     array, or %NULL
  *
  * Returns the array of file descriptors that is contained in this
  * object.
@@ -277,7 +278,8 @@
  * This function never returns %NULL. In case there are no file
  * descriptors contained in @message, an empty array is returned.
  *
- * Returns: an array of file descriptors
+ * Returns: (array length=length) (transfer full): an array of file
+ *     descriptors
  *
  * Since: 2.22
  **/
diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
index f110351..054bfe7 100644
--- a/gio/gunixmounts.c
+++ b/gio/gunixmounts.c
@@ -1075,15 +1075,16 @@
 }
 
 /**
- * g_unix_mounts_get:
- * @time_read: (allow-none): guint64 to contain a timestamp, or %NULL
+ * g_unix_mounts_get: (skip)
+ * @time_read: (out) (allow-none): guint64 to contain a timestamp, or %NULL
  *
  * Gets a #GList of #GUnixMountEntry containing the unix mounts.
  * If @time_read is set, it will be filled with the mount
  * timestamp, allowing for checking if the mounts have changed
  * with g_unix_mounts_changed_since().
  *
- * Returns: (element-type utf8) (transfer full): a #GList of the UNIX mounts.
+ * Returns: (element-type GUnixMountEntry) (transfer full):
+ *     a #GList of the UNIX mounts.
  **/
 GList *
 g_unix_mounts_get (guint64 *time_read)
@@ -1095,15 +1096,15 @@
 }
 
 /**
- * g_unix_mount_at:
+ * g_unix_mount_at: (skip)
  * @mount_path: path for a possible unix mount.
- * @time_read: guint64 to contain a timestamp.
+ * @time_read: (out) (allow-none): guint64 to contain a timestamp.
  * 
  * Gets a #GUnixMountEntry for a given mount path. If @time_read
  * is set, it will be filled with a unix timestamp for checking
  * if the mounts have changed since with g_unix_mounts_changed_since().
  * 
- * Returns: (transfer full): a #GUnixMount. 
+ * Returns: (transfer full): a #GUnixMountEntry.
  **/
 GUnixMountEntry *
 g_unix_mount_at (const char *mount_path,
@@ -1130,15 +1131,16 @@
 }
 
 /**
- * g_unix_mount_points_get:
- * @time_read: (allow-none): guint64 to contain a timestamp.
+ * g_unix_mount_points_get: (skip)
+ * @time_read: (out) (allow-none): guint64 to contain a timestamp.
  *
  * Gets a #GList of #GUnixMountPoint containing the unix mount points.
  * If @time_read is set, it will be filled with the mount timestamp,
  * allowing for checking if the mounts have changed with
  * g_unix_mounts_points_changed_since().
  *
- * Returns: (element-type utf8) (transfer full): a #GList of the UNIX mountpoints.
+ * Returns: (element-type GUnixMountPoint) (transfer full):
+ *     a #GList of the UNIX mountpoints.
  **/
 GList *
 g_unix_mount_points_get (guint64 *time_read)
diff --git a/gio/gunixsocketaddress.c b/gio/gunixsocketaddress.c
index a1e06b1..440ab25 100644
--- a/gio/gunixsocketaddress.c
+++ b/gio/gunixsocketaddress.c
@@ -349,7 +349,7 @@
 
 /**
  * g_unix_socket_address_new_abstract:
- * @path: the abstract name
+ * @path: (array length=path_len) (element-type gchar): the abstract name
  * @path_len: the length of @path, or -1
  *
  * Creates a new %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
@@ -369,7 +369,7 @@
 
 /**
  * g_unix_socket_address_new_with_type:
- * @path: the name
+ * @path: (array length=path_len) (element-type gchar): the name
  * @path_len: the length of @path, or -1
  * @type: a #GUnixSocketAddressType
  *
diff --git a/gio/gvolume.c b/gio/gvolume.c
index df1b78d..8e96288 100644
--- a/gio/gvolume.c
+++ b/gio/gvolume.c
@@ -301,8 +301,8 @@
  * @volume: a #GVolume.
  * @flags: flags affecting the operation
  * @mount_operation: (allow-none): a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data that gets passed to @callback
  * 
  * Mounts a volume. This is an asynchronous operation, and is
@@ -378,8 +378,8 @@
  * g_volume_eject:
  * @volume: a #GVolume.
  * @flags: flags affecting the unmount if required for eject
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (allow-none): a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data that gets passed to @callback
  * 
  * Ejects a volume. This is an asynchronous operation, and is
@@ -451,8 +451,9 @@
  * g_volume_eject_with_operation:
  * @volume: a #GVolume.
  * @flags: flags affecting the unmount if required for eject
- * @mount_operation: a #GMountOperation or %NULL to avoid user interaction.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @mount_operation: (allow-none): a #GMountOperation or %NULL to
+ *     avoid user interaction.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
  * @callback: a #GAsyncReadyCallback, or %NULL.
  * @user_data: user data passed to @callback.
  *
diff --git a/gio/tests/.gitignore b/gio/tests/.gitignore
index 0663fef..7e201bb 100644
--- a/gio/tests/.gitignore
+++ b/gio/tests/.gitignore
@@ -55,6 +55,7 @@
 gsettings.store
 httpd
 icons
+io-stream
 live-g-file
 memory-input-stream
 memory-output-stream
diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am
index def7392..5f49e6c 100644
--- a/gio/tests/Makefile.am
+++ b/gio/tests/Makefile.am
@@ -18,6 +18,7 @@
 	$(top_builddir)/gio/libgio-2.0.la
 
 TEST_PROGS +=	 		\
+	io-stream		\
 	actions 		\
 	memory-input-stream 	\
 	memory-output-stream 	\
@@ -102,6 +103,9 @@
 TEST_PROGS += win32-streams
 endif
 
+io_stream_SOURCES = io-stream.c
+io_stream_LDADD   = $(progs_ldadd)
+
 actions_LDADD	  = $(progs_ldadd)
 
 memory_input_stream_SOURCES	  = memory-input-stream.c
diff --git a/gio/tests/desktop-app-info.c b/gio/tests/desktop-app-info.c
index 9d9e181..6c6e313 100644
--- a/gio/tests/desktop-app-info.c
+++ b/gio/tests/desktop-app-info.c
@@ -82,7 +82,7 @@
 
   if (g_file_test ("/usr/share/applications/gedit.desktop", G_FILE_TEST_EXISTS))
     {
-      info = (GAppInfo*)g_desktop_app_info_new ("gedit.desktop");
+      info = (GAppInfo*)g_desktop_app_info_new_from_filename ("/usr/share/applications/gedit.desktop");
       g_assert (info);
      
       res = g_app_info_can_delete (info);
@@ -205,9 +205,6 @@
   app = g_list_nth_data (apps, 0);
   g_assert (g_app_info_equal (info1, app));
 
-  app = g_list_nth_data (apps, 1);
-  g_assert (g_app_info_equal (info2, app));
-
   /* check that Test1 is the first recommended app */
   recomm = g_app_info_get_recommended_for_type ("text/x-python");
   g_assert (recomm != NULL);
@@ -246,6 +243,56 @@
 }
 
 static void
+test_last_used (void)
+{
+  GList *applications;
+  GAppInfo *info1, *info2, *default_app;
+  GError *error = NULL;
+
+  info1 = create_app_info ("Test1");
+  info2 = create_app_info ("Test2");
+
+  g_app_info_set_as_default_for_type (info1, "application/x-test", &error);
+  g_assert (error == NULL);
+
+  g_app_info_add_supports_type (info2, "application/x-test", &error);
+  g_assert (error == NULL);
+
+  applications = g_app_info_get_recommended_for_type ("application/x-test");
+  g_assert (g_list_length (applications) == 2);
+
+  /* the first should be the default app now */
+  g_assert (g_app_info_equal (g_list_nth_data (applications, 0), info1));
+  g_assert (g_app_info_equal (g_list_nth_data (applications, 1), info2));
+
+  g_list_free_full (applications, g_object_unref);
+
+  g_app_info_set_as_last_used_for_type (info2, "application/x-test", &error);
+  g_assert (error == NULL);
+
+  applications = g_app_info_get_recommended_for_type ("application/x-test");
+  g_assert (g_list_length (applications) == 2);
+
+  default_app = g_app_info_get_default_for_type ("application/x-test", FALSE);
+  g_assert (g_app_info_equal (default_app, info1));
+
+  /* the first should be the other app now */
+  g_assert (g_app_info_equal (g_list_nth_data (applications, 0), info2));
+  g_assert (g_app_info_equal (g_list_nth_data (applications, 1), info1));
+
+  g_list_free_full (applications, g_object_unref);
+
+  g_app_info_reset_type_associations ("application/x-test");
+
+  g_app_info_delete (info1);
+  g_app_info_delete (info2);
+
+  g_object_unref (info1);
+  g_object_unref (info2);
+  g_object_unref (default_app);
+}
+
+static void
 cleanup_dir_recurse (GFile *parent, GFile *root)
 {
   gboolean res;
@@ -322,6 +369,7 @@
   g_test_add_func ("/desktop-app-info/delete", test_delete);
   g_test_add_func ("/desktop-app-info/default", test_default);
   g_test_add_func ("/desktop-app-info/fallback", test_fallback);
+  g_test_add_func ("/desktop-app-info/lastused", test_last_used);
 
   result = g_test_run ();
 
diff --git a/gio/tests/gdbus-connection.c b/gio/tests/gdbus-connection.c
index 866e27c..5c2939e 100644
--- a/gio/tests/gdbus-connection.c
+++ b/gio/tests/gdbus-connection.c
@@ -880,6 +880,18 @@
 
   m2 = g_dbus_message_copy (m, &error);
   g_assert_no_error (error);
+  g_dbus_message_set_serial (m2, data.serial);
+  /* lock the message to test PRESERVE_SERIAL flag. */
+  g_dbus_message_lock (m2);
+  g_dbus_connection_send_message (c, m2, G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL, &data.serial, &error);
+  g_object_unref (m2);
+  g_assert_no_error (error);
+
+  while (data.num_handled == 2)
+    g_thread_yield ();
+
+  m2 = g_dbus_message_copy (m, &error);
+  g_assert_no_error (error);
   r = g_dbus_connection_send_message_with_reply_sync (c,
                                                       m2,
                                                       G_DBUS_SEND_MESSAGE_FLAGS_NONE,
@@ -891,7 +903,7 @@
   g_assert_no_error (error);
   g_assert (r != NULL);
   g_object_unref (r);
-  g_assert_cmpint (data.num_handled, ==, 3);
+  g_assert_cmpint (data.num_handled, ==, 4);
 
   g_dbus_connection_remove_filter (c, filter_id);
 
@@ -908,8 +920,8 @@
   g_assert_no_error (error);
   g_assert (r != NULL);
   g_object_unref (r);
-  g_assert_cmpint (data.num_handled, ==, 3);
-  g_assert_cmpint (data.num_outgoing, ==, 3);
+  g_assert_cmpint (data.num_handled, ==, 4);
+  g_assert_cmpint (data.num_outgoing, ==, 4);
 
   /* this is safe; testserver will exit once the bus goes away */
   g_assert (g_spawn_command_line_async (SRCDIR "/gdbus-testserver.py", NULL));
diff --git a/gio/tests/io-stream.c b/gio/tests/io-stream.c
new file mode 100644
index 0000000..dbac08b
--- /dev/null
+++ b/gio/tests/io-stream.c
@@ -0,0 +1,185 @@
+/* GLib testing framework examples and tests
+ * Copyright (C) 2010 Collabora Ltd.
+ * Authors: Xavier Claessens <xclaesse@gmail.com>
+ *
+ * This work is provided "as is"; redistribution and modification
+ * in whole or in part, in any medium, physical or electronic is
+ * permitted without restriction.
+ *
+ * This work 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.
+ *
+ * In no event shall the authors or contributors be liable for any
+ * direct, indirect, incidental, special, exemplary, or consequential
+ * damages (including, but not limited to, procurement of substitute
+ * goods or services; loss of use, data, or profits; or business
+ * interruption) however caused and on any theory of liability, whether
+ * in contract, strict liability, or tort (including negligence or
+ * otherwise) arising in any way out of the use of this software, even
+ * if advised of the possibility of such damage.
+ */
+
+#include <glib/glib.h>
+#include <gio/gio.h>
+#include <stdlib.h>
+#include <string.h>
+
+typedef struct
+{
+  GIOStream parent;
+  GInputStream *input_stream;
+  GOutputStream *output_stream;
+} GTestIOStream;
+
+typedef struct
+{
+  GIOStreamClass parent_class;
+} GTestIOStreamClass;
+
+G_DEFINE_TYPE (GTestIOStream, g_test_io_stream, G_TYPE_IO_STREAM);
+
+
+static GInputStream *
+get_input_stream (GIOStream *io_stream)
+{
+  GTestIOStream *self =  (GTestIOStream *) io_stream;
+
+  return self->input_stream;
+}
+
+static GOutputStream *
+get_output_stream (GIOStream *io_stream)
+{
+  GTestIOStream *self =  (GTestIOStream *) io_stream;
+
+  return self->output_stream;
+}
+
+static void
+finalize (GObject *object)
+{
+  GTestIOStream *self = (GTestIOStream *) object;
+
+  if (self->input_stream != NULL)
+    g_object_unref (self->input_stream);
+
+  if (self->output_stream != NULL)
+    g_object_unref (self->output_stream);
+
+  G_OBJECT_CLASS (g_test_io_stream_parent_class)->finalize (object);
+}
+
+static void
+g_test_io_stream_class_init (GTestIOStreamClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+  GIOStreamClass *io_class = G_IO_STREAM_CLASS (klass);
+
+  object_class->finalize = finalize;
+
+  io_class->get_input_stream = get_input_stream;
+  io_class->get_output_stream = get_output_stream;
+}
+
+static void
+g_test_io_stream_init (GTestIOStream *self)
+{
+}
+
+static GIOStream *
+g_test_io_stream_new (GInputStream *input, GOutputStream *output)
+{
+  GTestIOStream *self;
+
+  self = g_object_new (g_test_io_stream_get_type (), NULL);
+  self->input_stream = g_object_ref (input);
+  self->output_stream = g_object_ref (output);
+
+  return G_IO_STREAM (self);
+}
+
+typedef struct
+{
+  GMainLoop *main_loop;
+  const gchar *data1;
+  const gchar *data2;
+  GIOStream *iostream1;
+  GIOStream *iostream2;
+} TestCopyChunksData;
+
+static void
+test_copy_chunks_splice_cb (GObject *source_object,
+    GAsyncResult *res,
+    gpointer user_data)
+{
+  TestCopyChunksData *data = user_data;
+  GMemoryOutputStream *ostream;
+  gchar *received_data;
+  GError *error = NULL;
+
+  g_io_stream_splice_finish (res, &error);
+  g_assert_no_error (error);
+
+  ostream = G_MEMORY_OUTPUT_STREAM (((GTestIOStream *) data->iostream1)->output_stream);
+  received_data = g_memory_output_stream_get_data (ostream);
+  g_assert_cmpstr (received_data, ==, data->data2);
+
+  ostream = G_MEMORY_OUTPUT_STREAM (((GTestIOStream *) data->iostream2)->output_stream);
+  received_data = g_memory_output_stream_get_data (ostream);
+  g_assert_cmpstr (received_data, ==, data->data1);
+
+  g_assert (g_io_stream_is_closed (data->iostream1));
+  g_assert (g_io_stream_is_closed (data->iostream2));
+
+  g_main_loop_quit (data->main_loop);
+}
+
+static void
+test_copy_chunks (void)
+{
+  TestCopyChunksData data;
+  GInputStream *istream;
+  GOutputStream *ostream;
+
+  data.main_loop = g_main_loop_new (NULL, FALSE);
+  data.data1 = "abcdefghijklmnopqrstuvwxyz";
+  data.data2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+  istream = g_memory_input_stream_new_from_data (data.data1, -1, NULL);
+  ostream = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+  data.iostream1 = g_test_io_stream_new (istream, ostream);
+  g_object_unref (istream);
+  g_object_unref (ostream);
+
+  istream = g_memory_input_stream_new_from_data (data.data2, -1, NULL);
+  ostream = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+  data.iostream2 = g_test_io_stream_new (istream, ostream);
+  g_object_unref (istream);
+  g_object_unref (ostream);
+
+  g_io_stream_splice_async (data.iostream1, data.iostream2,
+      G_IO_STREAM_SPLICE_CLOSE_STREAM1 | G_IO_STREAM_SPLICE_CLOSE_STREAM2 |
+      G_IO_STREAM_SPLICE_WAIT_FOR_BOTH, G_PRIORITY_DEFAULT,
+      NULL, test_copy_chunks_splice_cb, &data);
+
+  /* We do not hold a ref in data struct, this is to make sure the operation
+   * keeps the iostream objects alive until it finishes */
+  g_object_unref (data.iostream1);
+  g_object_unref (data.iostream2);
+
+  g_main_loop_run (data.main_loop);
+  g_main_loop_unref (data.main_loop);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_type_init ();
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/io-stream/copy-chunks", test_copy_chunks);
+
+  return g_test_run();
+}
diff --git a/gio/tests/resolver.c b/gio/tests/resolver.c
index 64bc67e..0b2a3fd 100644
--- a/gio/tests/resolver.c
+++ b/gio/tests/resolver.c
@@ -41,11 +41,12 @@
 usage (void)
 {
 	fprintf (stderr, "Usage: resolver [-t] [-s] [hostname | IP | service/protocol/domain ] ...\n");
-	fprintf (stderr, "       resolver [-t] [-s] -c [hostname | IP | service/protocol/domain ]\n");
+	fprintf (stderr, "       resolver [-t] [-s] -c NUMBER [hostname | IP | service/protocol/domain ]\n");
 	fprintf (stderr, "       Use -t to enable threading.\n");
 	fprintf (stderr, "       Use -s to do synchronous lookups.\n");
 	fprintf (stderr, "       Both together will result in simultaneous lookups in multiple threads\n");
-	fprintf (stderr, "       Use -c (and only a single resolvable argument) to test GSocketConnectable.\n");
+	fprintf (stderr, "       Use -c NUMBER(and only a single resolvable argument) to test GSocketConnectable.\n");
+	fprintf (stderr, "       The given NUMBER determines how often the connectable will be enumerated.\n");
 	exit (1);
 }
 
@@ -360,7 +361,7 @@
 }
 
 static void
-do_connectable (const char *arg, gboolean synchronous)
+do_connectable (const char *arg, gboolean synchronous, guint count)
 {
   char **parts;
   GSocketConnectable *connectable;
@@ -400,13 +401,17 @@
         connectable = g_network_address_new (arg, port);
     }
 
-  enumerator = g_socket_connectable_enumerate (connectable);
-  g_object_unref (connectable);
+  while (count--)
+    {
+      enumerator = g_socket_connectable_enumerate (connectable);
 
-  if (synchronous)
-    do_sync_connectable (enumerator);
-  else
-    do_async_connectable (enumerator);
+      if (synchronous)
+        do_sync_connectable (enumerator);
+      else
+        do_async_connectable (enumerator);
+    }
+  
+  g_object_unref (connectable);
 }
 
 #ifdef G_OS_UNIX
@@ -434,7 +439,7 @@
 main (int argc, char **argv)
 {
   gboolean threaded = FALSE, synchronous = FALSE;
-  gboolean use_connectable = FALSE;
+  guint connectable_count = 0;
 #ifdef G_OS_UNIX
   GIOChannel *chan;
   guint watch;
@@ -453,7 +458,11 @@
       else if (!strcmp (argv[1], "-s"))
         synchronous = TRUE;
       else if (!strcmp (argv[1], "-c"))
-        use_connectable = TRUE;
+        {
+          connectable_count = atoi (argv[2]);
+          argv++;
+          argc--;
+        }
       else
         usage ();
 
@@ -462,7 +471,7 @@
     }
   g_type_init ();
 
-  if (argc < 2 || (argc > 2 && use_connectable))
+  if (argc < 2 || (argc > 2 && connectable_count))
     usage ();
 
   resolver = g_resolver_get_default ();
@@ -488,8 +497,11 @@
   nlookups = argc - 1;
   loop = g_main_loop_new (NULL, TRUE);
 
-  if (use_connectable)
-    do_connectable (argv[1], synchronous);
+  if (connectable_count)
+    {
+      nlookups = connectable_count;
+      do_connectable (argv[1], synchronous, connectable_count);
+    }
   else
     {
       if (threaded && synchronous)
diff --git a/gio/tests/socket-client.c b/gio/tests/socket-client.c
index 61997da..6068034 100644
--- a/gio/tests/socket-client.c
+++ b/gio/tests/socket-client.c
@@ -203,7 +203,7 @@
 
   if (tls)
     {
-      GTlsClientConnection *tls_conn;
+      GIOStream *tls_conn;
 
       tls_conn = g_tls_client_connection_new (connection, connectable, &error);
       if (!tls_conn)
diff --git a/gio/tests/socket-server.c b/gio/tests/socket-server.c
index f151681..a44b158 100644
--- a/gio/tests/socket-server.c
+++ b/gio/tests/socket-server.c
@@ -211,7 +211,7 @@
 
   if (tlscert)
     {
-      GTlsServerConnection *tls_conn;
+      GIOStream *tls_conn;
 
       tls_conn = g_tls_server_connection_new (connection, tlscert, &error);
       if (!tls_conn)
@@ -230,7 +230,7 @@
        }
 
       g_object_unref (connection);
-      connection = G_IO_STREAM (tls_conn);
+      connection = tls_conn;
     }
 
   if (connection)
diff --git a/glib/gfileutils.c b/glib/gfileutils.c
index 185a756..a87f0e9 100644
--- a/glib/gfileutils.c
+++ b/glib/gfileutils.c
@@ -53,6 +53,10 @@
 #include "gstdio.h"
 #include "glibintl.h"
 
+#ifdef __linux__ /* for btrfs check */
+#include <linux/magic.h>
+#include <sys/vfs.h>
+#endif
 
 /**
  * g_mkdir_with_parents:
@@ -963,6 +967,20 @@
       
       goto out;
     }
+
+#ifdef BTRFS_SUPER_MAGIC
+  {
+    struct statfs buf;
+
+    /* On Linux, on btrfs, skip the fsync since rename-over-existing is
+     * guaranteed to be atomic and this is the only case in which we
+     * would fsync() anyway.
+     */
+
+    if (fstatfs (fd, &buf) == 0 && buf.f_type == BTRFS_SUPER_MAGIC)
+      goto no_fsync;
+  }
+#endif
   
 #ifdef HAVE_FSYNC
   {
@@ -994,6 +1012,7 @@
       }
   }
 #endif
+ no_fsync:
   
   errno = 0;
   if (fclose (file) == EOF)
diff --git a/glib/ghostutils.c b/glib/ghostutils.c
index c036195..99afe9a 100644
--- a/glib/ghostutils.c
+++ b/glib/ghostutils.c
@@ -303,7 +303,8 @@
 /* RFC 3491 IDN cleanup algorithm. */
 static gchar *
 nameprep (const gchar *hostname,
-          gint         len)
+          gint         len,
+          gboolean    *is_unicode)
 {
   gchar *name, *tmp = NULL, *p;
 
@@ -336,12 +337,15 @@
   /* If there are no UTF8 characters, we're done. */
   if (!contains_non_ascii (name, len))
     {
+      *is_unicode = FALSE;
       if (name == (gchar *)hostname)
         return len == -1 ? g_strdup (hostname) : g_strndup (hostname, len);
       else
         return name;
     }
 
+  *is_unicode = TRUE;
+
   /* Normalize */
   name = g_utf8_normalize (name, len, G_NORMALIZE_NFKC);
   g_free (tmp);
@@ -383,6 +387,26 @@
   return name;
 }
 
+/* RFC 3490, section 3.1 says '.', 0x3002, 0xFF0E, and 0xFF61 count as
+ * label-separating dots. @str must be '\0'-terminated.
+ */
+#define idna_is_dot(str) ( \
+  ((guchar)(str)[0] == '.') ||                                                 \
+  ((guchar)(str)[0] == 0xE3 && (guchar)(str)[1] == 0x80 && (guchar)(str)[2] == 0x82) || \
+  ((guchar)(str)[0] == 0xEF && (guchar)(str)[1] == 0xBC && (guchar)(str)[2] == 0x8E) || \
+  ((guchar)(str)[0] == 0xEF && (guchar)(str)[1] == 0xBD && (guchar)(str)[2] == 0xA1) )
+
+static const gchar *
+idna_end_of_label (const gchar *str)
+{
+  for (; *str; str = g_utf8_next_char (str))
+    {
+      if (idna_is_dot (str))
+        return str;
+    }
+  return str;
+}
+
 /**
  * g_hostname_to_ascii:
  * @hostname: a valid UTF-8 or ASCII hostname
@@ -404,16 +428,16 @@
   gssize llen, oldlen;
   gboolean unicode;
 
-  label = name = nameprep (hostname, -1);
-  if (!name)
-    return NULL;
+  label = name = nameprep (hostname, -1, &unicode);
+  if (!name || !unicode)
+    return name;
 
   out = g_string_new (NULL);
 
   do
     {
       unicode = FALSE;
-      for (p = label; *p && *p != '.'; p++)
+      for (p = label; *p && !idna_is_dot (p); p++)
 	{
 	  if ((guchar)*p > 0x80)
 	    unicode = TRUE;
@@ -437,7 +461,9 @@
 	goto fail;
 
       label += llen;
-      if (*label && *++label)
+      if (*label)
+        label = g_utf8_next_char (label);
+      if (*label)
         g_string_append_c (out, '.');
     }
   while (*label);
@@ -585,7 +611,7 @@
 
   do
     {
-      llen = strcspn (hostname, ".");
+      llen = idna_end_of_label (hostname) - hostname;
       if (!g_ascii_strncasecmp (hostname, IDNA_ACE_PREFIX, IDNA_ACE_PREFIX_LEN))
 	{
 	  hostname += IDNA_ACE_PREFIX_LEN;
@@ -598,7 +624,8 @@
 	}
       else
         {
-          gchar *canonicalized = nameprep (hostname, llen);
+          gboolean unicode;
+          gchar *canonicalized = nameprep (hostname, llen, &unicode);
 
           if (!canonicalized)
             {
@@ -610,7 +637,9 @@
         }
 
       hostname += llen;
-      if (*hostname && *++hostname)
+      if (*hostname)
+        hostname = g_utf8_next_char (hostname);
+      if (*hostname)
         g_string_append_c (out, '.');
     }
   while (*hostname);
@@ -643,8 +672,10 @@
     {
       if (!g_ascii_strncasecmp (hostname, IDNA_ACE_PREFIX, IDNA_ACE_PREFIX_LEN))
 	return TRUE;
-      hostname = strchr (hostname, '.');
-      if (!hostname++)
+      hostname = idna_end_of_label (hostname);
+      if (*hostname)
+        hostname = g_utf8_next_char (hostname);
+      if (!*hostname)
 	return FALSE;
     }
 }
diff --git a/glib/giochannel.c b/glib/giochannel.c
index e70e40a..8b74386 100644
--- a/glib/giochannel.c
+++ b/glib/giochannel.c
@@ -1987,39 +1987,38 @@
  * g_io_channel_read_chars:
  * @channel: a #GIOChannel
  * @buf: a buffer to read data into
- * @count: the size of the buffer. Note that the buffer may
- *         not be complelely filled even if there is data
- *         in the buffer if the remaining data is not a
- *         complete character.
- * @bytes_read: The number of bytes read. This may be zero even on
- *              success if count < 6 and the channel's encoding is non-%NULL.
- *              This indicates that the next UTF-8 character is too wide for
- *              the buffer.
+ * @count: the size of the buffer. Note that the buffer may not be
+ *     complelely filled even if there is data in the buffer if the
+ *     remaining data is not a complete character.
+ * @bytes_read: (allow-none): The number of bytes read. This may be
+ *     zero even on success if count < 6 and the channel's encoding
+ *     is non-%NULL. This indicates that the next UTF-8 character is
+ *     too wide for the buffer.
  * @error: a location to return an error of type #GConvertError
- *         or #GIOChannelError.
+ *     or #GIOChannelError.
  *
  * Replacement for g_io_channel_read() with the new API.
  *
  * Return value: the status of the operation.
- **/
+ */
 GIOStatus
 g_io_channel_read_chars (GIOChannel  *channel,
-                         gchar	     *buf,
-                         gsize	      count,
-			 gsize       *bytes_read,
+                         gchar       *buf,
+                         gsize        count,
+                         gsize       *bytes_read,
                          GError     **error)
 {
   GIOStatus status;
   gsize got_bytes;
 
   g_return_val_if_fail (channel != NULL, G_IO_STATUS_ERROR);
-  g_return_val_if_fail ((error == NULL) || (*error == NULL),
-			G_IO_STATUS_ERROR);
+  g_return_val_if_fail ((error == NULL) || (*error == NULL), G_IO_STATUS_ERROR);
   g_return_val_if_fail (channel->is_readable, G_IO_STATUS_ERROR);
 
   if (count == 0)
     {
-      *bytes_read = 0;
+      if (bytes_read)
+        *bytes_read = 0;
       return G_IO_STATUS_NORMAL;
     }
   g_return_val_if_fail (buf != NULL, G_IO_STATUS_ERROR);
@@ -2027,13 +2026,13 @@
   if (!channel->use_buffer)
     {
       gsize tmp_bytes;
-      
+
       g_assert (!channel->read_buf || channel->read_buf->len == 0);
 
       status = channel->funcs->io_read (channel, buf, count, &tmp_bytes, error);
-      
+
       if (bytes_read)
-	*bytes_read = tmp_bytes;
+        *bytes_read = tmp_bytes;
 
       return status;
     }
diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c
index 10ca2a2..1f2a856 100644
--- a/glib/gkeyfile.c
+++ b/glib/gkeyfile.c
@@ -26,6 +26,7 @@
 #include "config.h"
 
 #include "gkeyfile.h"
+#include "gutils.h"
 
 #include <errno.h>
 #include <fcntl.h>
@@ -1630,8 +1631,6 @@
   g_free (value);
 }
 
-extern GSList *_g_compute_locale_variants (const gchar *locale);
-
 /**
  * g_key_file_get_locale_string:
  * @key_file: a #GKeyFile
@@ -1677,16 +1676,7 @@
 
   if (locale)
     {
-      GSList *l, *list;
-
-      list = _g_compute_locale_variants (locale);
-
-      languages = g_new (gchar *, g_slist_length (list) + 1);
-      for (l = list, i = 0; l; l = l->next, i++)
-	languages[i] = l->data;
-      languages[i] = NULL;
-
-      g_slist_free (list);
+      languages = g_get_locale_variants (locale);
       free_languages = TRUE;
     }
   else
diff --git a/glib/glib.symbols b/glib/glib.symbols
index 9bb0419..4591ecd 100644
--- a/glib/glib.symbols
+++ b/glib/glib.symbols
@@ -1122,6 +1122,8 @@
 g_sequence_move_range
 g_sequence_search
 g_sequence_search_iter
+g_sequence_lookup
+g_sequence_lookup_iter
 g_sequence_get
 g_sequence_set
 g_sequence_iter_is_begin
@@ -1655,6 +1657,7 @@
 g_get_home_dir_utf8
 #endif
 g_get_language_names
+g_get_locale_variants
 g_get_prgname
 #ifndef _WIN64
 g_get_real_name PRIVATE
diff --git a/glib/grand.c b/glib/grand.c
index a70ce7b..e86afa7 100644
--- a/glib/grand.c
+++ b/glib/grand.c
@@ -68,8 +68,8 @@
  * pseudo-random number generator (PRNG). It uses the Mersenne Twister
  * PRNG, which was originally developed by Makoto Matsumoto and Takuji
  * Nishimura. Further information can be found at
- * <ulink url="http://www.math.keio.ac.jp/~matumoto/emt.html">
- * www.math.keio.ac.jp/~matumoto/emt.html</ulink>.
+ * <ulink url="http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html">
+ * http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html</ulink>.
  *
  * If you just need a random number, you simply call the
  * <function>g_random_*</function> functions, which will create a
diff --git a/glib/grand.h b/glib/grand.h
index 07907df..0397992 100644
--- a/glib/grand.h
+++ b/glib/grand.h
@@ -38,7 +38,7 @@
 typedef struct _GRand           GRand;
 
 /* GRand - a good and fast random number generator: Mersenne Twister
- * see http://www.math.keio.ac.jp/~matumoto/emt.html for more info.
+ * see http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html for more info.
  * The range functions return a value in the intervall [begin, end).
  * int          -> [0..2^32-1]
  * int_range    -> [begin..end-1]
diff --git a/glib/gsequence.c b/glib/gsequence.c
index 8b28ce7..40b3294 100644
--- a/glib/gsequence.c
+++ b/glib/gsequence.c
@@ -133,6 +133,11 @@
 static gint           node_get_pos       (GSequenceNode            *node);
 static GSequenceNode *node_get_by_pos    (GSequenceNode            *node,
                                           gint                      pos);
+static GSequenceNode *node_find          (GSequenceNode            *haystack,
+                                          GSequenceNode            *needle,
+                                          GSequenceNode            *end,
+                                          GSequenceIterCompareFunc  cmp,
+                                          gpointer                  user_data);
 static GSequenceNode *node_find_closest  (GSequenceNode            *haystack,
                                           GSequenceNode            *needle,
                                           GSequenceNode            *end,
@@ -756,6 +761,9 @@
  * Returns an iterator pointing to the position where @data would
  * be inserted according to @cmp_func and @cmp_data.
  *
+ * If you are simply searching for an existing element of the sequence,
+ * consider using g_sequence_lookup().
+ *
  * Return value: an #GSequenceIter pointing to the position where @data
  * would have been inserted according to @cmp_func and @cmp_data.
  *
@@ -780,6 +788,46 @@
 }
 
 /**
+ * g_sequence_lookup:
+ * @seq: a #GSequence
+ * @data: data to lookup
+ * @cmp_func: the #GCompareDataFunc used to compare items in the sequence. It
+ *     is called with two items of the @seq and @user_data. It should
+ *     return 0 if the items are equal, a negative value if the first
+ *     item comes before the second, and a positive value if the second
+ *     item comes before the first.
+ * @cmp_data: user data passed to @cmp_func.
+ *
+ * Returns an iterator pointing to the position of the first item found
+ * equal to @data according to @cmp_func and @cmp_data. If more than one item
+ * is equal, it is not guaranteed that it is the first which is returned.
+ * In that case, you can use g_sequence_iter_next() and g_sequence_iter_prev()
+ * to get others.
+ *
+ * Return value: an #GSequenceIter pointing to the position of the first item
+ * found equal to @data according to @cmp_func and @cmp_data.
+ *
+ * Since: 2.26
+ **/
+GSequenceIter *
+g_sequence_lookup (GSequence *seq,
+                   gpointer data,
+                   GCompareDataFunc cmp_func,
+                   gpointer cmp_data)
+{
+  SortInfo info;
+
+  g_return_val_if_fail (seq != NULL, NULL);
+
+  info.cmp_func = cmp_func;
+  info.cmp_data = cmp_data;
+  info.end_node = seq->end_node;
+  check_seq_access (seq);
+
+  return g_sequence_lookup_iter (seq, data, iter_compare, &info);
+}
+
+/**
  * g_sequence_sort_iter:
  * @seq: a #GSequence
  * @cmp_func: the #GSequenceItercompare used to compare iterators in the
@@ -970,6 +1018,9 @@
  * a #GSequenceIterCompareFunc instead of a #GCompareDataFunc as
  * the compare function.
  *
+ * If you are simply searching for an existing element of the sequence,
+ * consider using g_sequence_lookup_iter().
+ *
  * Return value: a #GSequenceIter pointing to the position in @seq
  * where @data would have been inserted according to @iter_cmp and @cmp_data.
  *
@@ -1007,6 +1058,57 @@
 }
 
 /**
+ * g_sequence_lookup_iter:
+ * @seq: a #GSequence
+ * @data: data to lookup
+ * @iter_cmp: the #GSequenceIterCompare function used to compare iterators
+ *     in the sequence. It is called with two iterators pointing into @seq.
+ *     It should return 0 if the iterators are equal, a negative value if the
+ *     first iterator comes before the second, and a positive value if the
+ *     second iterator comes before the first.
+ * @cmp_data: user data passed to @iter_cmp
+ *
+ * Like g_sequence_lookup(), but uses
+ * a #GSequenceIterCompareFunc instead of a #GCompareDataFunc as
+ * the compare function.
+ *
+ * Return value: an #GSequenceIter pointing to the position of the first item
+ * found equal to @data according to @cmp_func and @cmp_data.
+ *
+ * Since: 2.26
+ **/
+GSequenceIter *
+g_sequence_lookup_iter (GSequence *seq,
+                        gpointer data,
+                        GSequenceIterCompareFunc iter_cmp,
+                        gpointer cmp_data)
+{
+  GSequenceNode *node;
+  GSequenceNode *dummy;
+  GSequence *tmp_seq;
+
+  g_return_val_if_fail (seq != NULL, NULL);
+
+  check_seq_access (seq);
+
+  seq->access_prohibited = TRUE;
+
+  tmp_seq = g_sequence_new (NULL);
+  tmp_seq->real_sequence = seq;
+
+  dummy = g_sequence_append (tmp_seq, data);
+
+  node = node_find (seq->end_node, dummy,
+                    seq->end_node, iter_cmp, cmp_data);
+
+  g_sequence_free (tmp_seq);
+
+  seq->access_prohibited = FALSE;
+
+  return node;
+}
+
+/**
  * g_sequence_iter_get_sequence:
  * @iter: a #GSequenceIter
  *
@@ -1549,6 +1651,40 @@
 }
 
 static GSequenceNode *
+node_find (GSequenceNode            *haystack,
+           GSequenceNode            *needle,
+           GSequenceNode            *end,
+           GSequenceIterCompareFunc  iter_cmp,
+           gpointer                  cmp_data)
+{
+  gint c;
+
+  haystack = find_root (haystack);
+
+  do
+    {
+      /* iter_cmp can't be passed the end node, since the function may
+       * be user-supplied
+       */
+      if (haystack == end)
+        c = 1;
+      else
+        c = iter_cmp (haystack, needle, cmp_data);
+
+      if (c == 0)
+        break;
+
+      if (c > 0)
+        haystack = haystack->left;
+      else
+        haystack = haystack->right;
+    }
+  while (haystack != NULL);
+
+  return haystack;
+}
+
+static GSequenceNode *
 node_find_closest (GSequenceNode            *haystack,
                    GSequenceNode            *needle,
                    GSequenceNode            *end,
@@ -1572,7 +1708,7 @@
       else
         c = iter_cmp (haystack, needle, cmp_data);
 
-      /* In the following we don't break even if c == 0. Instaed we go on
+      /* In the following we don't break even if c == 0. Instead we go on
        * searching along the 'bigger' nodes, so that we find the last one
        * that is equal to the needle.
        */
diff --git a/glib/gsequence.h b/glib/gsequence.h
index fa79066..6a21c3e 100644
--- a/glib/gsequence.h
+++ b/glib/gsequence.h
@@ -99,6 +99,14 @@
                                               gpointer                  data,
                                               GSequenceIterCompareFunc  iter_cmp,
                                               gpointer                  cmp_data);
+GSequenceIter *g_sequence_lookup             (GSequence                *seq,
+                                              gpointer                  data,
+                                              GCompareDataFunc          cmp_func,
+                                              gpointer                  cmp_data);
+GSequenceIter *g_sequence_lookup_iter        (GSequence                *seq,
+                                              gpointer                  data,
+                                              GSequenceIterCompareFunc  iter_cmp,
+                                              gpointer                  cmp_data);
 
 
 /* Dereferencing */
diff --git a/glib/gtester-report b/glib/gtester-report
index 3bce548..0fcdd9a 100755
--- a/glib/gtester-report
+++ b/glib/gtester-report
@@ -135,6 +135,9 @@
     self.info['package'] = node_as_text (dn)
     dn = find_child (node, 'version')
     self.info['version'] = node_as_text (dn)
+    dn = find_child (node, 'revision')
+    if dn is not None:
+        self.info['revision'] = node_as_text (dn)
   def handle_testcase (self, node):
     self.last_binary.testcases += [ node ]
     result = attribute_as_text (node, 'result', 'status')
@@ -239,6 +242,8 @@
       self.lastchar = message[-1]
   def handle_info (self):
     self.oprint ('<h3>Package: %(package)s, version: %(version)s</h3>\n' % self.info)
+    if self.info['revision']:
+        self.oprint ('<h5>Report generated from: %(revision)s</h5>\n' % self.info)
   def handle_text (self, node):
     self.oprint (node.nodeValue)
   def handle_testcase (self, node, binary):
diff --git a/glib/gutils.c b/glib/gutils.c
index 73165ba..5512fd4 100644
--- a/glib/gutils.c
+++ b/glib/gutils.c
@@ -68,6 +68,7 @@
 #include "gtestutils.h"
 #include "gunicode.h"
 #include "gstrfuncs.h"
+#include "garray.h"
 #include "glibintl.h"
 
 #ifdef G_PLATFORM_WIN32
@@ -3157,36 +3158,39 @@
  *       but it is big, ugly, and complicated, so I'm reluctant
  *       to do so when this should handle 99% of the time...
  */
-GSList *
-_g_compute_locale_variants (const gchar *locale)
+static void
+append_locale_variants (GPtrArray *array,
+                        const gchar *locale)
 {
-  GSList *retval = NULL;
-
   gchar *language = NULL;
   gchar *territory = NULL;
   gchar *codeset = NULL;
   gchar *modifier = NULL;
 
   guint mask;
-  guint i;
+  guint i, j;
 
-  g_return_val_if_fail (locale != NULL, NULL);
+  g_return_if_fail (locale != NULL);
 
   mask = explode_locale (locale, &language, &territory, &codeset, &modifier);
 
   /* Iterate through all possible combinations, from least attractive
    * to most attractive.
    */
-  for (i = 0; i <= mask; i++)
-    if ((i & ~mask) == 0)
-      {
-	gchar *val = g_strconcat (language,
-				  (i & COMPONENT_TERRITORY) ? territory : "",
-				  (i & COMPONENT_CODESET) ? codeset : "",
-				  (i & COMPONENT_MODIFIER) ? modifier : "",
-				  NULL);
-	retval = g_slist_prepend (retval, val);
-      }
+  for (j = 0; j <= mask; ++j)
+    {
+      i = mask - j;
+
+      if ((i & ~mask) == 0)
+        {
+          gchar *val = g_strconcat (language,
+                                    (i & COMPONENT_TERRITORY) ? territory : "",
+                                    (i & COMPONENT_CODESET) ? codeset : "",
+                                    (i & COMPONENT_MODIFIER) ? modifier : "",
+                                    NULL);
+          g_ptr_array_add (array, val);
+        }
+    }
 
   g_free (language);
   if (mask & COMPONENT_CODESET)
@@ -3195,8 +3199,41 @@
     g_free (territory);
   if (mask & COMPONENT_MODIFIER)
     g_free (modifier);
+}
 
-  return retval;
+/**
+ * g_get_locale_variants:
+ * @locale: a locale identifier
+ *
+ * Returns a list of derived variants of @locale, which can be used to
+ * e.g. construct locale-dependent filenames or search paths. The returned
+ * list is sorted from most desirable to least desirable.
+ * This function handles territory, charset and extra locale modifiers.
+ * 
+ * For example, if @locale is "fr_BE", then the returned list
+ * is "fr_BE", "fr".
+ *
+ * If you need the list of variants for the <emphasis>current locale</emphasis>,
+ * use g_get_language_names().
+ *
+ * Returns: (transfer full) (array zero-terminated="1") (element-type utf8): a newly
+ *   allocated array of newly allocated strings with the locale variants. Free with
+ *   g_strfreev().
+ *
+ * Since: 2.28
+ */
+gchar **
+g_get_locale_variants (const gchar *locale)
+{
+  GPtrArray *array;
+
+  g_return_val_if_fail (locale != NULL, NULL);
+
+  array = g_ptr_array_sized_new (8);
+  append_locale_variants (array, locale);
+  g_ptr_array_add (array, NULL);
+
+  return (gchar **) g_ptr_array_free (array, FALSE);
 }
 
 /* The following is (partly) taken from the gettext package.
@@ -3305,31 +3342,23 @@
 
   if (!(cache->languages && strcmp (cache->languages, value) == 0))
     {
-      gchar **languages;
+      GPtrArray *array;
       gchar **alist, **a;
-      GSList *list, *l;
-      gint i;
 
       g_free (cache->languages);
       g_strfreev (cache->language_names);
       cache->languages = g_strdup (value);
 
+      array = g_ptr_array_sized_new (8);
+
       alist = g_strsplit (value, ":", 0);
-      list = NULL;
       for (a = alist; *a; a++)
-	{
-	  gchar *b = unalias_lang (*a);
-	  list = g_slist_concat (list, _g_compute_locale_variants (b));
-	}
+        append_locale_variants (array, unalias_lang (*a));
       g_strfreev (alist);
-      list = g_slist_append (list, g_strdup ("C"));
+      g_ptr_array_add (array, g_strdup ("C"));
+      g_ptr_array_add (array, NULL);
 
-      cache->language_names = languages = g_new (gchar *, g_slist_length (list) + 1);
-      for (l = list, i = 0; l; l = l->next, i++)
-	languages[i] = l->data;
-      languages[i] = NULL;
-
-      g_slist_free (list);
+      cache->language_names = (gchar **) g_ptr_array_free (array, FALSE);
     }
 
   return (G_CONST_RETURN gchar * G_CONST_RETURN *) cache->language_names;
diff --git a/glib/gutils.h b/glib/gutils.h
index e4d8277..6b94efd 100644
--- a/glib/gutils.h
+++ b/glib/gutils.h
@@ -157,6 +157,8 @@
 
 G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
 
+gchar **g_get_locale_variants (const gchar *locale);
+
 /**
  * GUserDirectory:
  * @G_USER_DIRECTORY_DESKTOP: the user's Desktop directory
diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c
index c38732d..ca69dfb 100644
--- a/glib/gvariant-parser.c
+++ b/glib/gvariant-parser.c
@@ -48,10 +48,26 @@
  **/
 /**
  * GVariantParseError:
- * @G_VARIANT_PARSE_ERROR_FAILED: generic error
+ * @G_VARIANT_PARSE_ERROR_FAILED: generic error (unused)
+ * @G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED: a non-basic #GVariantType was given where a basic type was expected
+ * @G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE: cannot infer the #GVariantType
+ * @G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED: an indefinite #GVariantType was given where a definite type was expected
+ * @G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END: extra data after parsing finished
+ * @G_VARIANT_PARSE_ERROR_INVALID_CHARACTER: invalid character in number or unicode escape
+ * @G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING: not a valid #GVariant format string
+ * @G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH: not a valid object path
+ * @G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE: not a valid type signature
+ * @G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING: not a valid #GVariant type string
+ * @G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE: could not find a common type for array entries
+ * @G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE: the numerical value is out of range of the given type
+ * @G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG: the numerical value is out of range for any type
+ * @G_VARIANT_PARSE_ERROR_TYPE_ERROR: cannot parse as variant of the specified type
+ * @G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN: an unexpected token was encountered
+ * @G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD: an unknown keyword was encountered
+ * @G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT: unterminated string constant
+ * @G_VARIANT_PARSE_ERROR_VALUE_EXPECTED: no value given
  *
- * Error codes returned by parsing text-format GVariants.  Currently the
- * parser makes no distinction between different types of error.
+ * Error codes returned by parsing text-format GVariants.
  **/
 GQuark
 g_variant_parser_get_error_quark (void)
@@ -73,6 +89,7 @@
 parser_set_error_va (GError      **error,
                      SourceRef    *location,
                      SourceRef    *other,
+                     gint          code,
                      const gchar  *format,
                      va_list       ap)
 {
@@ -91,7 +108,7 @@
   g_string_append_c (msg, ':');
 
   g_string_append_vprintf (msg, format, ap);
-  g_set_error_literal (error, G_VARIANT_PARSE_ERROR, 0, msg->str);
+  g_set_error_literal (error, G_VARIANT_PARSE_ERROR, code, msg->str);
   g_string_free (msg, TRUE);
 }
 
@@ -99,13 +116,14 @@
 parser_set_error (GError      **error,
                   SourceRef    *location,
                   SourceRef    *other,
+                  gint          code,
                   const gchar  *format,
                   ...)
 {
   va_list ap;
 
   va_start (ap, format);
-  parser_set_error_va (error, location, other, format, ap);
+  parser_set_error_va (error, location, other, code, format, ap);
   va_end (ap);
 }
 
@@ -123,6 +141,7 @@
 token_stream_set_error (TokenStream  *stream,
                         GError      **error,
                         gboolean      this_token,
+                        gint          code,
                         const gchar  *format,
                         ...)
 {
@@ -137,7 +156,7 @@
     ref.end = ref.start;
 
   va_start (ap, format);
-  parser_set_error_va (error, &ref, NULL, format, ap);
+  parser_set_error_va (error, &ref, NULL, code, format, ap);
   va_end (ap);
 }
 
@@ -305,6 +324,7 @@
   if (!token_stream_consume (stream, token))
     {
       token_stream_set_error (stream, error, FALSE,
+                              G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN,
                               "expected `%s'%s", token, purpose);
       return FALSE;
     }
@@ -505,6 +525,7 @@
 ast_set_error (AST          *ast,
                GError      **error,
                AST          *other_ast,
+               gint          code,
                const gchar  *format,
                ...)
 {
@@ -513,6 +534,7 @@
   va_start (ap, format);
   parser_set_error_va (error, &ast->source_ref,
                        other_ast ? & other_ast->source_ref : NULL,
+                       code,
                        format, ap);
   va_end (ap);
 }
@@ -526,6 +548,7 @@
 
   typestr = g_variant_type_dup_string (type);
   ast_set_error (ast, error, NULL,
+                 G_VARIANT_PARSE_ERROR_TYPE_ERROR,
                  "can not parse as value of type `%s'",
                  typestr);
   g_free (typestr);
@@ -556,7 +579,9 @@
     switch (pattern[i])
       {
       case '*':
-        ast_set_error (ast, error, NULL, "unable to infer type");
+        ast_set_error (ast, error, NULL,
+                       G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE,
+                       "unable to infer type");
         g_free (pattern);
         return NULL;
 
@@ -669,6 +694,7 @@
                    * report the error.  note: 'j' is first.
                    */
                   ast_set_error (array[j], error, array[i],
+                                 G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE,
                                  "unable to find a common type");
                   g_free (tmp);
                   return NULL;
@@ -776,7 +802,9 @@
 
   else if (!token_stream_consume (stream, "nothing"))
     {
-      token_stream_set_error (stream, error, TRUE, "unknown keyword");
+      token_stream_set_error (stream, error, TRUE,
+                              G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD,
+                              "unknown keyword");
       return NULL;
     }
 
@@ -1187,6 +1215,7 @@
   if (!strchr ("bynqiuxthdsogNS", key_char))
     {
       ast_set_error (ast, error, NULL,
+                     G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED,
                      "dictionary keys must have basic types");
       return NULL;
     }
@@ -1422,7 +1451,9 @@
     {
       if (!g_variant_is_object_path (string->string))
         {
-          ast_set_error (ast, error, NULL, "not a valid object path");
+          ast_set_error (ast, error, NULL,
+                         G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH,
+                         "not a valid object path");
           return NULL;
         }
 
@@ -1433,7 +1464,9 @@
     {
       if (!g_variant_is_signature (string->string))
         {
-          ast_set_error (ast, error, NULL, "not a valid signature");
+          ast_set_error (ast, error, NULL,
+                         G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE,
+                         "not a valid signature");
           return NULL;
         }
 
@@ -1477,6 +1510,7 @@
   if (value == 0 || end != buffer + length)
     {
       parser_set_error (error, ref, NULL,
+                        G_VARIANT_PARSE_ERROR_INVALID_CHARACTER,
                         "invalid %d-character unicode escape", length);
       return FALSE;
     }
@@ -1522,6 +1556,7 @@
       {
       case '\0':
         parser_set_error (error, &ref, NULL,
+                          G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
                           "unterminated string constant");
         g_free (token);
         g_free (str);
@@ -1532,6 +1567,7 @@
           {
           case '\0':
             parser_set_error (error, &ref, NULL,
+                              G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
                               "unterminated string constant");
             g_free (token);
             g_free (str);
@@ -1648,6 +1684,7 @@
       {
       case '\0':
         parser_set_error (error, &ref, NULL,
+                          G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
                           "unterminated string constant");
         g_free (token);
         return NULL;
@@ -1657,6 +1694,7 @@
           {
           case '\0':
             parser_set_error (error, &ref, NULL,
+                              G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
                               "unterminated string constant");
             g_free (token);
             return NULL;
@@ -1728,7 +1766,9 @@
                  const GVariantType  *type,
                  GError             **error)
 {
-  ast_set_error (ast, error, NULL, "number out of range for type `%c'",
+  ast_set_error (ast, error, NULL,
+                 G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE,
+                 "number out of range for type `%c'",
                  g_variant_type_peek_string (type)[0]);
   return NULL;
 }
@@ -1756,7 +1796,9 @@
       dbl_val = g_ascii_strtod (token, &end);
       if (dbl_val != 0.0 && errno == ERANGE)
         {
-          ast_set_error (ast, error, NULL, "number too big for any type");
+          ast_set_error (ast, error, NULL,
+                         G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG,
+                         "number too big for any type");
           return NULL;
         }
 
@@ -1775,7 +1817,9 @@
       abs_val = g_ascii_strtoull (token, &end, 0);
       if (abs_val == G_MAXUINT64 && errno == ERANGE)
         {
-          ast_set_error (ast, error, NULL, "integer too big for any type");
+          ast_set_error (ast, error, NULL,
+                         G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG,
+                         "integer too big for any type");
           return NULL;
         }
 
@@ -1795,6 +1839,7 @@
       ref.end = ref.start + 1;
 
       parser_set_error (error, &ref, NULL,
+                        G_VARIANT_PARSE_ERROR_INVALID_CHARACTER,
                         "invalid character in number");
       return NULL;
      }
@@ -2005,6 +2050,7 @@
   if (*endptr || positional->value == NULL)
     {
       token_stream_set_error (stream, error, TRUE,
+                              G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING,
                               "invalid GVariant format string");
       /* memory management doesn't matter in case of programmer error. */
       return NULL;
@@ -2076,6 +2122,7 @@
       if (!g_variant_type_string_is_valid (token + 1))
         {
           token_stream_set_error (stream, error, TRUE,
+                                  G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING,
                                   "invalid type declaration");
           g_free (token);
 
@@ -2087,6 +2134,7 @@
       if (!g_variant_type_is_definite (type))
         {
           token_stream_set_error (stream, error, TRUE,
+                                  G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED,
                                   "type declarations must be definite");
           g_variant_type_free (type);
           g_free (token);
@@ -2140,7 +2188,9 @@
 
       else
         {
-          token_stream_set_error (stream, error, TRUE, "unknown keyword");
+          token_stream_set_error (stream, error, TRUE,
+                                  G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD,
+                                  "unknown keyword");
           return NULL;
         }
     }
@@ -2212,7 +2262,9 @@
 
   else
     {
-      token_stream_set_error (stream, error, FALSE, "expected value");
+      token_stream_set_error (stream, error, FALSE,
+                              G_VARIANT_PARSE_ERROR_VALUE_EXPECTED,
+                              "expected value");
       return NULL;
     }
 
@@ -2304,6 +2356,7 @@
                                     stream.stream - text };
 
                   parser_set_error (error, &ref, NULL,
+                                    G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END,
                                     "expected end of input");
                   g_variant_unref (result);
 
diff --git a/glib/gvariant.c b/glib/gvariant.c
index 8937445..fd1163e 100644
--- a/glib/gvariant.c
+++ b/glib/gvariant.c
@@ -315,7 +315,7 @@
 
 /**
  * g_variant_new_boolean:
- * @boolean: a #gboolean value
+ * @value: a #gboolean value
  * @returns: a floating reference to a new boolean #GVariant instance
  *
  * Creates a new boolean #GVariant instance -- either %TRUE or %FALSE.
@@ -373,7 +373,7 @@
 
 /**
  * g_variant_new_byte:
- * @byte: a #guint8 value
+ * @value: a #guint8 value
  * @returns: a floating reference to a new byte #GVariant instance
  *
  * Creates a new byte #GVariant instance.
@@ -396,7 +396,7 @@
 
 /**
  * g_variant_new_int16:
- * @int16: a #gint16 value
+ * @value: a #gint16 value
  * @returns: a floating reference to a new int16 #GVariant instance
  *
  * Creates a new int16 #GVariant instance.
@@ -419,7 +419,7 @@
 
 /**
  * g_variant_new_uint16:
- * @uint16: a #guint16 value
+ * @value: a #guint16 value
  * @returns: a floating reference to a new uint16 #GVariant instance
  *
  * Creates a new uint16 #GVariant instance.
@@ -442,7 +442,7 @@
 
 /**
  * g_variant_new_int32:
- * @int32: a #gint32 value
+ * @value: a #gint32 value
  * @returns: a floating reference to a new int32 #GVariant instance
  *
  * Creates a new int32 #GVariant instance.
@@ -465,7 +465,7 @@
 
 /**
  * g_variant_new_uint32:
- * @uint32: a #guint32 value
+ * @value: a #guint32 value
  * @returns: a floating reference to a new uint32 #GVariant instance
  *
  * Creates a new uint32 #GVariant instance.
@@ -488,7 +488,7 @@
 
 /**
  * g_variant_new_int64:
- * @int64: a #gint64 value
+ * @value: a #gint64 value
  * @returns: a floating reference to a new int64 #GVariant instance
  *
  * Creates a new int64 #GVariant instance.
@@ -511,7 +511,7 @@
 
 /**
  * g_variant_new_uint64:
- * @uint64: a #guint64 value
+ * @value: a #guint64 value
  * @returns: a floating reference to a new uint64 #GVariant instance
  *
  * Creates a new uint64 #GVariant instance.
@@ -565,7 +565,7 @@
 
 /**
  * g_variant_new_double:
- * @floating: a #gdouble floating point value
+ * @value: a #gdouble floating point value
  * @returns: a floating reference to a new double #GVariant instance
  *
  * Creates a new double #GVariant instance.
@@ -3058,6 +3058,9 @@
  * types or number of items in a tuple, putting more than one value into
  * a variant, etc.
  *
+ * If @value is a floating reference (see g_variant_ref_sink()),
+ * the @builder instance takes ownership of @value.
+ *
  * Since: 2.24
  **/
 void
diff --git a/glib/gvariant.h b/glib/gvariant.h
index 9519d97..9a67f2c 100644
--- a/glib/gvariant.h
+++ b/glib/gvariant.h
@@ -199,7 +199,24 @@
 
 typedef enum
 {
-  G_VARIANT_PARSE_ERROR_FAILED
+  G_VARIANT_PARSE_ERROR_FAILED,
+  G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED,
+  G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE,
+  G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED,
+  G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END,
+  G_VARIANT_PARSE_ERROR_INVALID_CHARACTER,
+  G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING,
+  G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH,
+  G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE,
+  G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING,
+  G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE,
+  G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE,
+  G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG,
+  G_VARIANT_PARSE_ERROR_TYPE_ERROR,
+  G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN,
+  G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD,
+  G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT,
+  G_VARIANT_PARSE_ERROR_VALUE_EXPECTED
 } GVariantParseError;
 #define G_VARIANT_PARSE_ERROR (g_variant_parser_get_error_quark ())
 
diff --git a/glib/tests/hostutils.c b/glib/tests/hostutils.c
index 622a0ce..218f516 100644
--- a/glib/tests/hostutils.c
+++ b/glib/tests/hostutils.c
@@ -19,6 +19,7 @@
 
 #include <glib/glib.h>
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -48,6 +49,23 @@
 };
 static const gint num_idn_test_domains = G_N_ELEMENTS (idn_test_domains);
 
+static const struct {
+  const gchar *orig_name, *ascii_name;
+  gboolean orig_is_unicode, ascii_is_encoded;
+} non_round_trip_names[] = {
+  /* uppercase characters */
+  { "EXAMPLE.COM", "example.com", FALSE, FALSE },
+  { "\xc3\x89XAMPLE.COM", "xn--xample-9ua.com", TRUE, TRUE },
+
+  /* unicode that decodes to ascii */
+  { "\xe2\x93\x94\xe2\x93\xa7\xe2\x93\x90\xe2\x93\x9c\xe2\x93\x9f\xe2\x93\x9b\xe2\x93\x94.com", "example.com", TRUE, FALSE },
+
+  /* non-standard dot characters */
+  { "example\xe3\x80\x82" "com", "example.com", TRUE, FALSE },
+  { "\xc3\xa9xample\xe3\x80\x82" "com", "xn--xample-9ua.com", TRUE, TRUE }
+};
+static const gint num_non_round_trip_names = G_N_ELEMENTS (non_round_trip_names);
+
 static const gchar *bad_names[] = {
   "disallowed\xef\xbf\xbd" "character",
   "non-utf\x88",
@@ -73,6 +91,27 @@
       g_free (ascii);
     }
 
+  for (i = 0; i < num_non_round_trip_names; i++)
+    {
+      if (non_round_trip_names[i].orig_is_unicode)
+	g_assert (g_hostname_is_non_ascii (non_round_trip_names[i].orig_name));
+      else
+	g_assert (!g_hostname_is_non_ascii (non_round_trip_names[i].orig_name));
+
+      if (non_round_trip_names[i].ascii_is_encoded)
+	g_assert (g_hostname_is_ascii_encoded (non_round_trip_names[i].ascii_name));
+      else
+	g_assert (!g_hostname_is_ascii_encoded (non_round_trip_names[i].ascii_name));
+
+      ascii = g_hostname_to_ascii (non_round_trip_names[i].orig_name);
+      g_assert_cmpstr (non_round_trip_names[i].ascii_name, ==, ascii);
+      g_free (ascii);
+
+      ascii = g_hostname_to_ascii (non_round_trip_names[i].ascii_name);
+      g_assert_cmpstr (non_round_trip_names[i].ascii_name, ==, ascii);
+      g_free (ascii);
+    }
+
   for (i = 0; i < num_bad_names; i++)
     {
       ascii = g_hostname_to_ascii (bad_names[i]);
@@ -278,6 +317,28 @@
 {
   g_test_init (&argc, &argv, NULL);
   
+  if (argc == 2 && argv[1][0] != '-')
+    {
+      const gchar *hostname = argv[1];
+      gchar *converted;
+
+      if (g_hostname_is_non_ascii (hostname))
+	{
+	  converted = g_hostname_to_ascii (hostname);
+	  printf ("to_ascii: %s\n", converted);
+	  g_free (converted);
+	}
+      else if (g_hostname_is_ascii_encoded (hostname))
+	{
+	  converted = g_hostname_to_unicode (hostname);
+	  printf ("to_unicode: %s\n", converted);
+	  g_free (converted);
+	}
+      else
+	printf ("hostname is neither unicode nor ACE encoded\n");
+      return 0;
+    }
+
   g_test_add_func ("/hostutils/to_ascii", test_to_ascii);
   g_test_add_func ("/hostutils/to_unicode", test_to_unicode);
   g_test_add_func ("/hostutils/is_ip_addr", test_is_ip_addr);
diff --git a/glib/tests/rand.c b/glib/tests/rand.c
index 62b5f75..f1ff08d 100644
--- a/glib/tests/rand.c
+++ b/glib/tests/rand.c
@@ -22,7 +22,8 @@
 #include "glib.h"
 
 /* Outputs tested against the reference implementation mt19937ar.c from
-   http://www.math.keio.ac.jp/~matumoto/MT2002/emt19937ar.html */
+ * http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
+ */
 
 /* Tests for a simple seed, first number is the seed */
 const guint32 first_numbers[] = 
diff --git a/glib/tests/regex.c b/glib/tests/regex.c
index bd46a5e..6e015e9 100644
--- a/glib/tests/regex.c
+++ b/glib/tests/regex.c
@@ -2357,6 +2357,8 @@
   TEST_SPLIT_SIMPLE3(",\\s*", "a, b, c", "a", "b", "c");
   TEST_SPLIT_SIMPLE3("(,)\\s*", "a,b", "a", ",", "b");
   TEST_SPLIT_SIMPLE3("(,)\\s*", "a, b", "a", ",", "b");
+  TEST_SPLIT_SIMPLE2("\\s", "ab c", "ab", "c");
+  TEST_SPLIT_SIMPLE3("\\s*", "ab c", "a", "b", "c");
   /* Not matched sub-strings. */
   TEST_SPLIT_SIMPLE2("a|(b)", "xay", "x", "y");
   TEST_SPLIT_SIMPLE3("a|(b)", "xby", "x", "b", "y");
diff --git a/glib/tests/sequence.c b/glib/tests/sequence.c
index f46761a..e2a58f3 100644
--- a/glib/tests/sequence.c
+++ b/glib/tests/sequence.c
@@ -81,6 +81,7 @@
   GET_BEGIN_ITER, GET_END_ITER, GET_ITER_AT_POS, APPEND, PREPEND,
   INSERT_BEFORE, MOVE, SWAP, INSERT_SORTED, INSERT_SORTED_ITER, SORT_CHANGED,
   SORT_CHANGED_ITER, REMOVE, REMOVE_RANGE, MOVE_RANGE, SEARCH, SEARCH_ITER,
+  LOOKUP, LOOKUP_ITER,
 
   /* dereferencing */
   GET, SET,
@@ -200,6 +201,42 @@
 }
 
 static gint
+simple_items_cmp (gconstpointer a,
+	          gconstpointer b,
+	          gpointer data)
+{
+  const Item *item_a = fix_pointer (a);
+  const Item *item_b = fix_pointer (b);
+
+  if (item_a->number > item_b->number)
+    return +1;
+  else if (item_a->number < item_b->number)
+    return -1;
+  else
+    return 0;
+}
+
+static gint
+simple_iters_cmp (gconstpointer a,
+	          gconstpointer b,
+	          gpointer data)
+{
+  GSequence *seq = data;
+  GSequenceIter *iter_a = (GSequenceIter *)a;
+  GSequenceIter *iter_b = (GSequenceIter *)b;
+  gpointer item_a = g_sequence_get (iter_a);
+  gpointer item_b = g_sequence_get (iter_b);
+
+  if (seq)
+    {
+      g_assert (g_sequence_iter_get_sequence (iter_a) == seq);
+      g_assert (g_sequence_iter_get_sequence (iter_b) == seq);
+    }
+
+  return simple_items_cmp (item_a, item_b, data);
+}
+
+static gint
 compare_items (gconstpointer a,
                gconstpointer b,
                gpointer      data)
@@ -884,6 +921,45 @@
             g_queue_insert_sorted (seq->queue, insert_iter, compare_iters, NULL);
           }
           break;
+        case LOOKUP:
+          {
+            Item *item;
+            GSequenceIter *lookup_iter;
+            GSequenceIter *insert_iter;
+
+            g_sequence_sort (seq->sequence, compare_items, NULL);
+            g_queue_sort (seq->queue, compare_iters, NULL);
+
+            check_sorted (seq);
+
+            item = new_item (seq);
+            insert_iter = g_sequence_insert_sorted (seq->sequence, item, compare_items, NULL);
+            g_queue_insert_sorted (seq->queue, insert_iter, compare_iters, NULL);
+
+            lookup_iter = g_sequence_lookup (seq->sequence, item, simple_items_cmp, NULL);
+            g_assert (simple_iters_cmp (insert_iter, lookup_iter, NULL) == 0);
+          }
+          break;
+        case LOOKUP_ITER:
+          {
+            Item *item;
+            GSequenceIter *lookup_iter;
+            GSequenceIter *insert_iter;
+
+            g_sequence_sort (seq->sequence, compare_items, NULL);
+            g_queue_sort (seq->queue, compare_iters, NULL);
+
+            check_sorted (seq);
+
+            item = new_item (seq);
+            insert_iter = g_sequence_insert_sorted (seq->sequence, item, compare_items, NULL);
+            g_queue_insert_sorted (seq->queue, insert_iter, compare_iters, NULL);
+
+            lookup_iter = g_sequence_lookup_iter (seq->sequence, item,
+                (GSequenceIterCompareFunc) simple_iters_cmp, NULL);
+            g_assert (simple_iters_cmp (insert_iter, lookup_iter, NULL) == 0);
+          }
+          break;
 
           /* dereferencing */
         case GET:
diff --git a/glib/tests/utils.c b/glib/tests/utils.c
index f586aa1..cf7d8dd 100644
--- a/glib/tests/utils.c
+++ b/glib/tests/utils.c
@@ -73,6 +73,20 @@
 }
 
 static void
+test_locale_variants (void)
+{
+  char **v;
+
+  v = g_get_locale_variants ("fr_BE");
+  g_assert (strv_check ((const gchar * const *) v, "fr_BE", "fr", NULL));
+  g_strfreev (v);
+
+  v = g_get_locale_variants ("sr_SR@latin");
+  g_assert (strv_check ((const gchar * const *) v, "sr_SR@latin", "sr@latin", "sr_SR", "sr", NULL));
+  g_strfreev (v);
+}
+
+static void
 test_version (void)
 {
   g_print ("(header %d.%d.%d library %d.%d.%d) ",
@@ -152,6 +166,7 @@
   g_test_bug_base ("http://bugzilla.gnome.org/");
 
   g_test_add_func ("/utils/language-names", test_language_names);
+  g_test_add_func ("/utils/locale-variants", test_locale_variants);
   g_test_add_func ("/utils/version", test_version);
   g_test_add_func ("/utils/appname", test_appname);
   g_test_add_func ("/utils/tmpdir", test_tmpdir);
diff --git a/gobject/gboxed.c b/gobject/gboxed.c
index e6f2274..06b3cf2 100644
--- a/gobject/gboxed.c
+++ b/gobject/gboxed.c
@@ -402,7 +402,7 @@
  *
  * Get the contents of a %G_TYPE_BOXED derived #GValue.
  *
- * Returns: boxed contents of @value
+ * Returns: (transfer none): boxed contents of @value
  */
 gpointer
 g_value_get_boxed (const GValue *value)
@@ -414,7 +414,7 @@
 }
 
 /**
- * g_value_dup_boxed:
+ * g_value_dup_boxed: (skip)
  * @value: a valid #GValue of %G_TYPE_BOXED derived type
  *
  * Get the contents of a %G_TYPE_BOXED derived #GValue.  Upon getting,
diff --git a/gobject/gclosure.c b/gobject/gclosure.c
index 8a6b0f7..a415182 100644
--- a/gobject/gclosure.c
+++ b/gobject/gclosure.c
@@ -186,7 +186,7 @@
  * }
  * ]|
  *
- * Returns: a newly allocated #GClosure
+ * Returns: (transfer full): a newly allocated #GClosure
  */
 GClosure*
 g_closure_new_simple (guint           sizeof_closure,
@@ -293,7 +293,7 @@
 }
 
 /**
- * g_closure_set_meta_marshal:
+ * g_closure_set_meta_marshal: (skip)
  * @closure: a #GClosure
  * @marshal_data: context-dependent data to pass to @meta_marshal
  * @meta_marshal: a #GClosureMarshal function
@@ -343,7 +343,7 @@
 }
 
 /**
- * g_closure_add_marshal_guards:
+ * g_closure_add_marshal_guards: (skip)
  * @closure: a #GClosure
  * @pre_marshal_data: data to pass to @pre_marshal_notify
  * @pre_marshal_notify: a function to call before the closure callback
@@ -401,7 +401,7 @@
 }
 
 /**
- * g_closure_add_finalize_notifier:
+ * g_closure_add_finalize_notifier: (skip)
  * @closure: a #GClosure
  * @notify_data: data to pass to @notify_func
  * @notify_func: the callback function to register
@@ -437,7 +437,7 @@
 }
 
 /**
- * g_closure_add_invalidate_notifier:
+ * g_closure_add_invalidate_notifier: (skip)
  * @closure: a #GClosure
  * @notify_data: data to pass to @notify_func
  * @notify_func: the callback function to register
@@ -517,7 +517,7 @@
  * Increments the reference count on a closure to force it staying
  * alive while the caller holds a pointer to it.
  *
- * Returns: The @closure passed in, for convenience
+ * Returns: (transfer none): The @closure passed in, for convenience
  */
 GClosure*
 g_closure_ref (GClosure *closure)
@@ -665,7 +665,7 @@
 }
 
 /**
- * g_closure_remove_invalidate_notifier:
+ * g_closure_remove_invalidate_notifier: (skip)
  * @closure: a #GClosure
  * @notify_data: data which was passed to g_closure_add_invalidate_notifier()
  *               when registering @notify_func
@@ -693,7 +693,7 @@
 }
 
 /**
- * g_closure_remove_finalize_notifier:
+ * g_closure_remove_finalize_notifier: (skip)
  * @closure: a #GClosure
  * @notify_data: data which was passed to g_closure_add_finalize_notifier()
  *  when registering @notify_func
@@ -726,8 +726,9 @@
  * @return_value: a #GValue to store the return value. May be %NULL if the
  *                callback of @closure doesn't return a value.
  * @n_param_values: the length of the @param_values array
- * @param_values: an array of #GValue<!-- -->s holding the arguments on
- *                which to invoke the callback of @closure
+ * @param_values: (array length=n_param_values): an array of
+ *                #GValue<!-- -->s holding the arguments on which to
+ *                invoke the callback of @closure
  * @invocation_hint: a context-dependent invocation hint
  *
  * Invokes the closure, i.e. executes the callback represented by the @closure.
@@ -776,7 +777,7 @@
 }
 
 /**
- * g_closure_set_marshal:
+ * g_closure_set_marshal: (skip)
  * @closure: a #GClosure
  * @marshal: a #GClosureMarshal function
  *
@@ -802,7 +803,7 @@
 }
 
 /**
- * g_cclosure_new:
+ * g_cclosure_new: (skip)
  * @callback_func: the function to invoke
  * @user_data: user data to pass to @callback_func
  * @destroy_data: destroy notify to be called when @user_data is no longer used
@@ -830,7 +831,7 @@
 }
 
 /**
- * g_cclosure_new_swap:
+ * g_cclosure_new_swap: (skip)
  * @callback_func: the function to invoke
  * @user_data: user data to pass to @callback_func
  * @destroy_data: destroy notify to be called when @user_data is no longer used
@@ -838,7 +839,7 @@
  * Creates a new closure which invokes @callback_func with @user_data as
  * the first parameter.
  *
- * Returns: a new #GCClosure
+ * Returns: (transfer full): a new #GCClosure
  */
 GClosure*
 g_cclosure_new_swap (GCallback      callback_func,
diff --git a/gobject/gobject.c b/gobject/gobject.c
index 8b427fa..686d33d 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -617,8 +617,8 @@
  *
  * Looks up the #GParamSpec for a property of a class.
  *
- * Returns: the #GParamSpec for the property, or %NULL if the class
- *          doesn't have a property of that name
+ * Returns: (transfer none): the #GParamSpec for the property, or
+ *          %NULL if the class doesn't have a property of that name
  */
 GParamSpec*
 g_object_class_find_property (GObjectClass *class,
@@ -660,8 +660,9 @@
  *
  * Since: 2.4
  *
- * Returns: the #GParamSpec for the property of the interface with the
- *          name @property_name, or %NULL if no such property exists.
+ * Returns: (transfer none): the #GParamSpec for the property of the
+ *          interface with the name @property_name, or %NULL if no
+ *          such property exists.
  */
 GParamSpec*
 g_object_interface_find_property (gpointer      g_iface,
@@ -760,11 +761,11 @@
 /**
  * g_object_class_list_properties:
  * @oclass: a #GObjectClass
- * @n_properties: return location for the length of the returned array
+ * @n_properties: (out): return location for the length of the returned array
  *
  * Get an array of #GParamSpec* for all properties of a class.
  *
- * Returns: (array length=n_properties) (transfer full): an array of
+ * Returns: (array length=n_properties) (transfer container): an array of
  *          #GParamSpec* which should be freed after use
  */
 GParamSpec** /* free result */
@@ -789,7 +790,7 @@
  * g_object_interface_list_properties:
  * @g_iface: any interface vtable for the interface, or the default
  *  vtable for the interface
- * @n_properties_p: location to store number of properties returned.
+ * @n_properties_p: (out): location to store number of properties returned.
  *
  * Lists the properties of an interface.Generally, the interface
  * vtable passed in as @g_iface will be the default vtable from
@@ -798,7 +799,8 @@
  *
  * Since: 2.4
  *
- * Returns: a pointer to an array of pointers to #GParamSpec
+ * Returns: (array length=n_properties_p) (transfer container): a
+ *          pointer to an array of pointers to #GParamSpec
  *          structures. The paramspecs are owned by GLib, but the
  *          array should be freed with g_free() when you are done with
  *          it.
@@ -1187,11 +1189,13 @@
 				   gpointer g_iface)
 {
   GTypeInterface *iface_class = g_iface;
-  GObjectClass *class = g_type_class_peek (iface_class->g_instance_type);
+  GObjectClass *class;
   GType iface_type = iface_class->g_type;
   GParamSpec **pspecs;
   guint n;
 
+  class = g_type_class_ref (iface_class->g_instance_type);
+
   if (!G_IS_OBJECT_CLASS (class))
     return;
 
@@ -1203,7 +1207,7 @@
 							  pspecs[n]->name,
 							  G_OBJECT_CLASS_TYPE (class),
 							  TRUE);
-      
+
       if (!class_pspec)
 	{
 	  g_critical ("Object class %s doesn't implement property "
@@ -1235,9 +1239,9 @@
 		      g_type_name (G_PARAM_SPEC_VALUE_TYPE (pspecs[n])),
 		      g_type_name (iface_type));
 	}
-      
+
 #define SUBSET(a,b,mask) (((a) & ~(b) & (mask)) == 0)
-      
+
       /* CONSTRUCT and CONSTRUCT_ONLY add restrictions.
        * READABLE and WRITABLE remove restrictions. The implementation
        * paramspec must have less restrictive flags.
@@ -1257,10 +1261,12 @@
 		      g_type_name (G_OBJECT_CLASS_TYPE (class)),
 		      g_type_name (iface_type));
 	}
-#undef SUBSET	  
+#undef SUBSET
     }
-  
+
   g_free (pspecs);
+
+  g_type_class_unref (class);
 }
 
 GType
@@ -1270,7 +1276,7 @@
 }
 
 /**
- * g_object_new:
+ * g_object_new: (skip)
  * @object_type: the type id of the #GObject subtype to instantiate
  * @first_property_name: the name of the first property
  * @...: the value of the first property, followed optionally by more
@@ -1281,7 +1287,7 @@
  * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values.
  *
- * Returns: a new instance of @object_type
+ * Returns: (transfer full): a new instance of @object_type
  */
 gpointer
 g_object_new (GType	   object_type,
@@ -1340,14 +1346,16 @@
  * g_object_newv:
  * @object_type: the type id of the #GObject subtype to instantiate
  * @n_parameters: the length of the @parameters array
- * @parameters: an array of #GParameter
+ * @parameters: (array length=n_parameters): an array of #GParameter
  *
  * Creates a new instance of a #GObject subtype and sets its properties.
  *
  * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values.
  *
- * Returns: a new instance of @object_type
+ * Rename to: g_object_new
+ * Returns: (type GObject.Object) (transfer full): a new instance of
+ * @object_type
  */
 gpointer
 g_object_newv (GType       object_type,
@@ -1513,7 +1521,7 @@
 }
 
 /**
- * g_object_new_valist:
+ * g_object_new_valist: (skip)
  * @object_type: the type id of the #GObject subtype to instantiate
  * @first_property_name: the name of the first property
  * @var_args: the value of the first property, followed optionally by more
@@ -1627,7 +1635,7 @@
 }
 
 /**
- * g_object_set_valist:
+ * g_object_set_valist: (skip)
  * @object: a #GObject
  * @first_property_name: name of the first property to set
  * @var_args: value for the first property, followed optionally by more
@@ -1703,7 +1711,7 @@
 }
 
 /**
- * g_object_get_valist:
+ * g_object_get_valist: (skip)
  * @object: a #GObject
  * @first_property_name: name of the first property to get
  * @var_args: return location for the first property, followed optionally by more
@@ -1779,7 +1787,7 @@
 }
 
 /**
- * g_object_set:
+ * g_object_set: (skip)
  * @object: a #GObject
  * @first_property_name: name of the first property to set
  * @...: value for the first property, followed optionally by more
@@ -1803,7 +1811,7 @@
 }
 
 /**
- * g_object_get:
+ * g_object_get: (skip)
  * @object: a #GObject
  * @first_property_name: name of the first property to get
  * @...: return location for the first property, followed optionally by more
@@ -1906,7 +1914,9 @@
  * @property_name: the name of the property to get
  * @value: return location for the property value
  *
- * Gets a property of an object.
+ * Gets a property of an object. @value must have been initialized to the
+ * expected type of the property (or a type to which the expected type can be
+ * transformed) using g_value_init().
  *
  * In general, a copy is made of the property contents and the caller is
  * responsible for freeing the memory by calling g_value_unset().
@@ -1978,7 +1988,7 @@
 }
 
 /**
- * g_object_connect:
+ * g_object_connect: (skip)
  * @object: a #GObject
  * @signal_spec: the spec for the first signal
  * @...: #GCallback for the first signal, followed by data for the
@@ -2058,7 +2068,7 @@
  * 				     NULL);
  * ]|
  *
- * Returns: @object
+ * Returns: (transfer none): @object
  */
 gpointer
 g_object_connect (gpointer     _object,
@@ -2130,7 +2140,7 @@
 }
 
 /**
- * g_object_disconnect:
+ * g_object_disconnect: (skip)
  * @object: a #GObject
  * @signal_spec: the spec for the first signal
  * @...: #GCallback for the first signal, followed by data for the first signal,
@@ -2213,7 +2223,7 @@
 }
 
 /**
- * g_object_weak_ref:
+ * g_object_weak_ref: (skip)
  * @object: #GObject to reference weakly
  * @notify: callback to invoke before the object is freed
  * @data: extra data to pass to notify
@@ -2257,7 +2267,7 @@
 }
 
 /**
- * g_object_weak_unref:
+ * g_object_weak_unref: (skip)
  * @object: #GObject to remove a weak reference from
  * @notify: callback to search for
  * @data: data to search for
@@ -2299,7 +2309,7 @@
 }
 
 /**
- * g_object_add_weak_pointer:
+ * g_object_add_weak_pointer: (skip)
  * @object: The object that should be weak referenced.
  * @weak_pointer_location: (inout): The memory address of a pointer.
  *
@@ -2321,7 +2331,7 @@
 }
 
 /**
- * g_object_remove_weak_pointer:
+ * g_object_remove_weak_pointer: (skip)
  * @object: The object that is weak referenced.
  * @weak_pointer_location: (inout): The memory address of a pointer.
  *
@@ -2367,7 +2377,7 @@
 
 /**
  * g_object_is_floating:
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  *
  * Checks wether @object has a <link linkend="floating-ref">floating</link>
  * reference.
@@ -2386,7 +2396,7 @@
 
 /**
  * g_object_ref_sink:
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  *
  * Increase the reference count of @object, and possibly remove the
  * <link linkend="floating-ref">floating</link> reference, if @object
@@ -2400,7 +2410,7 @@
  *
  * Since: 2.10
  *
- * Returns: @object
+ * Returns: (type GObject.Object) (transfer none): @object
  */
 gpointer
 g_object_ref_sink (gpointer _object)
@@ -2466,7 +2476,7 @@
 }
 
 /**
- * g_object_add_toggle_ref:
+ * g_object_add_toggle_ref: (skip)
  * @object: a #GObject
  * @notify: a function to call when this reference is the
  *  last reference to the object, or is no longer
@@ -2547,7 +2557,7 @@
 }
 
 /**
- * g_object_remove_toggle_ref:
+ * g_object_remove_toggle_ref: (skip)
  * @object: a #GObject
  * @notify: a function to call when this reference is the
  *  last reference to the object, or is no longer
@@ -2601,11 +2611,11 @@
 
 /**
  * g_object_ref:
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  *
  * Increases the reference count of @object.
  *
- * Returns: the same @object
+ * Returns: (type GObject.Object) (transfer none): the same @object
  */
 gpointer
 g_object_ref (gpointer _object)
@@ -2634,7 +2644,7 @@
 
 /**
  * g_object_unref:
- * @object: a #GObject
+ * @object: (type GObject.Object): a #GObject
  *
  * Decreases the reference count of @object. When its reference count
  * drops to 0, the object is finalized (i.e. its memory is freed).
@@ -2730,7 +2740,7 @@
 }
 
 /**
- * g_clear_object:
+ * g_clear_object: (skip)
  * @object_ptr: a pointer to a #GObject reference
  *
  * Clears a reference to a #GObject.
@@ -2775,7 +2785,7 @@
  * This function gets back user data pointers stored via
  * g_object_set_qdata().
  * 
- * Returns: The user data pointer set, or %NULL
+ * Returns: (transfer none): The user data pointer set, or %NULL
  */
 gpointer
 g_object_get_qdata (GObject *object,
@@ -2787,7 +2797,7 @@
 }
 
 /**
- * g_object_set_qdata:
+ * g_object_set_qdata: (skip)
  * @object: The GObject to set store a user data pointer
  * @quark: A #GQuark, naming the user data pointer
  * @data: An opaque user data pointer
@@ -2813,7 +2823,7 @@
 }
 
 /**
- * g_object_set_qdata_full:
+ * g_object_set_qdata_full: (skip)
  * @object: The GObject to set store a user data pointer
  * @quark: A #GQuark, naming the user data pointer
  * @data: An opaque user data pointer
@@ -2880,7 +2890,7 @@
  * and thus the partial string list would have been freed upon
  * g_object_set_qdata_full().
  *
- * Returns: The user data pointer set, or %NULL
+ * Returns: (transfer full): The user data pointer set, or %NULL
  */
 gpointer
 g_object_steal_qdata (GObject *object,
@@ -2899,7 +2909,7 @@
  * 
  * Gets a named field from the objects table of associations (see g_object_set_data()).
  * 
- * Returns: the data if found, or %NULL if no such data exists.
+ * Returns: (transfer none): the data if found, or %NULL if no such data exists.
  */
 gpointer
 g_object_get_data (GObject     *object,
@@ -2939,7 +2949,7 @@
 }
 
 /**
- * g_object_set_data_full:
+ * g_object_set_data_full: (skip)
  * @object: #GObject containing the associations
  * @key: name of the key
  * @data: data to associate with that key
@@ -2972,7 +2982,7 @@
  * Remove a specified datum from the object's data associations,
  * without invoking the association's destroy handler.
  *
- * Returns: the data if found, or %NULL if no such data exists.
+ * Returns: (transfer full): the data if found, or %NULL if no such data exists.
  */
 gpointer
 g_object_steal_data (GObject     *object,
@@ -3082,7 +3092,7 @@
 /**
  * g_value_set_object:
  * @value: a valid #GValue of %G_TYPE_OBJECT derived type
- * @v_object: object value to be set
+ * @v_object: (type GObject.Object): object value to be set
  *
  * Set the contents of a %G_TYPE_OBJECT derived #GValue to @v_object.
  *
@@ -3122,7 +3132,7 @@
 }
 
 /**
- * g_value_set_object_take_ownership:
+ * g_value_set_object_take_ownership: (skip)
  * @value: a valid #GValue of %G_TYPE_OBJECT derived type
  * @v_object: object value to be set
  *
@@ -3138,7 +3148,7 @@
 }
 
 /**
- * g_value_take_object:
+ * g_value_take_object: (skip)
  * @value: a valid #GValue of %G_TYPE_OBJECT derived type
  * @v_object: object value to be set
  *
@@ -3179,7 +3189,7 @@
  * 
  * Get the contents of a %G_TYPE_OBJECT derived #GValue.
  * 
- * Returns: object contents of @value
+ * Returns: (type GObject.Object) (transfer none): object contents of @value
  */
 gpointer
 g_value_get_object (const GValue *value)
@@ -3196,8 +3206,8 @@
  * Get the contents of a %G_TYPE_OBJECT derived #GValue, increasing
  * its reference count.
  *
- * Returns: object content of @value, should be unreferenced when no
- *          longer needed.
+ * Returns: (type GObject.Object) (transfer full): object content of @value,
+ *          should be unreferenced when no longer needed.
  */
 gpointer
 g_value_dup_object (const GValue *value)
@@ -3208,7 +3218,7 @@
 }
 
 /**
- * g_signal_connect_object:
+ * g_signal_connect_object: (skip)
  * @instance: the instance to connect to.
  * @detailed_signal: a string of the form "signal-name::detail".
  * @c_handler: the #GCallback to connect.
@@ -3395,7 +3405,7 @@
  * @object and the created closure. This function is mainly useful
  * when implementing new types of closures.
  *
- * Returns: a newly allocated #GClosure
+ * Returns: (transfer full): a newly allocated #GClosure
  */
 GClosure*
 g_closure_new_object (guint    sizeof_closure,
@@ -3413,7 +3423,7 @@
 }
 
 /**
- * g_cclosure_new_object:
+ * g_cclosure_new_object: (skip)
  * @callback_func: the function to invoke
  * @object: a #GObject pointer to pass to @callback_func
  *
@@ -3442,7 +3452,7 @@
 }
 
 /**
- * g_cclosure_new_object_swap:
+ * g_cclosure_new_object_swap: (skip)
  * @callback_func: the function to invoke
  * @object: a #GObject pointer to pass to @callback_func
  *
diff --git a/gobject/gparam.c b/gobject/gparam.c
index f91e587..bca47d2 100644
--- a/gobject/gparam.c
+++ b/gobject/gparam.c
@@ -187,7 +187,7 @@
 }
 
 /**
- * g_param_spec_ref:
+ * g_param_spec_ref: (skip)
  * @pspec: a valid #GParamSpec
  *
  * Increments the reference count of @pspec.
@@ -206,7 +206,7 @@
 }
 
 /**
- * g_param_spec_unref:
+ * g_param_spec_unref: (skip)
  * @pspec: a valid #GParamSpec
  *
  * Decrements the reference count of a @pspec.
@@ -255,7 +255,7 @@
 }
 
 /**
- * g_param_spec_ref_sink:
+ * g_param_spec_ref_sink: (skip)
  * @pspec: a valid #GParamSpec
  *
  * Convenience function to ref and sink a #GParamSpec.
@@ -381,7 +381,7 @@
 }
 
 /**
- * g_param_spec_internal:
+ * g_param_spec_internal: (skip)
  * @param_type: the #GType for the property; must be derived from #G_TYPE_PARAM
  * @name: the canonical name of the property
  * @nick: the nickname of the property
@@ -459,7 +459,7 @@
  *
  * Gets back user data pointers stored via g_param_spec_set_qdata().
  *
- * Returns: the user data pointer set, or %NULL
+ * Returns: (transfer none): the user data pointer set, or %NULL
  */
 gpointer
 g_param_spec_get_qdata (GParamSpec *pspec,
@@ -495,7 +495,7 @@
 }
 
 /**
- * g_param_spec_set_qdata_full:
+ * g_param_spec_set_qdata_full: (skip)
  * @pspec: the #GParamSpec to set store a user data pointer
  * @quark: a #GQuark, naming the user data pointer
  * @data: an opaque user data pointer
@@ -530,7 +530,7 @@
  * function (if any was set).  Usually, calling this function is only
  * required to update user data pointers with a destroy notifier.
  *
- * Returns: the user data pointer set, or %NULL
+ * Returns: (transfer none): the user data pointer set, or %NULL
  */
 gpointer
 g_param_spec_steal_qdata (GParamSpec *pspec,
@@ -556,8 +556,8 @@
  *
  * Since: 2.4
  *
- * Returns: paramspec to which requests on this paramspec should
- *          be redirected, or %NULL if none.
+ * Returns: (transfer none): paramspec to which requests on this
+ *          paramspec should be redirected, or %NULL if none.
  */
 GParamSpec*
 g_param_spec_get_redirect_target (GParamSpec *pspec)
@@ -887,7 +887,7 @@
  * property name, like "GtkContainer:border-width". This feature is
  * deprecated, so you should always set @type_prefixing to %FALSE.
  *
- * Returns: a newly allocated #GParamSpecPool.
+ * Returns: (transfer none): a newly allocated #GParamSpecPool.
  */
 GParamSpecPool*
 g_param_spec_pool_new (gboolean type_prefixing)
@@ -1030,7 +1030,8 @@
  *
  * Looks up a #GParamSpec in the pool.
  *
- * Returns: The found #GParamSpec, or %NULL if no matching #GParamSpec was found.
+ * Returns: (transfer none): The found #GParamSpec, or %NULL if no
+ * matching #GParamSpec was found.
  */
 GParamSpec*
 g_param_spec_pool_lookup (GParamSpecPool *pool,
@@ -1117,8 +1118,9 @@
  * Gets an #GList of all #GParamSpec<!-- -->s owned by @owner_type in
  * the pool.
  *
- * Returns: a #GList of all #GParamSpec<!-- -->s owned by @owner_type
- *          in the pool#GParamSpec<!-- -->s.
+ * Returns: (transfer container) (element-type GObject.ParamSpec): a
+ *          #GList of all #GParamSpec<!-- -->s owned by @owner_type in
+ *          the pool#GParamSpec<!-- -->s.
  */
 GList*
 g_param_spec_pool_list_owned (GParamSpecPool *pool,
@@ -1253,13 +1255,14 @@
  * g_param_spec_pool_list:
  * @pool: a #GParamSpecPool
  * @owner_type: the owner to look for
- * @n_pspecs_p: return location for the length of the returned array
+ * @n_pspecs_p: (out): return location for the length of the returned array
  *
  * Gets an array of all #GParamSpec<!-- -->s owned by @owner_type in
  * the pool.
  *
- * Returns: a newly allocated array containing pointers to all
- *          #GParamSpec<!-- -->s owned by @owner_type in the pool
+ * Returns: (array length=n_pspecs_p) (transfer container): a newly
+ *          allocated array containing pointers to all #GParamSpecs
+ *          owned by @owner_type in the pool
  */
 GParamSpec**
 g_param_spec_pool_list (GParamSpecPool *pool,
@@ -1429,7 +1432,7 @@
 }
 
 /**
- * g_value_set_param_take_ownership:
+ * g_value_set_param_take_ownership: (skip)
  * @value: a valid #GValue of type %G_TYPE_PARAM
  * @param: the #GParamSpec to be set
  *
@@ -1445,7 +1448,7 @@
 }
 
 /**
- * g_value_take_param:
+ * g_value_take_param: (skip)
  * @value: a valid #GValue of type %G_TYPE_PARAM
  * @param: the #GParamSpec to be set
  *
@@ -1474,7 +1477,7 @@
  *
  * Get the contents of a %G_TYPE_PARAM #GValue.
  *
- * Returns: #GParamSpec content of @value
+ * Returns: (transfer none): #GParamSpec content of @value
  */
 GParamSpec*
 g_value_get_param (const GValue *value)
@@ -1485,7 +1488,7 @@
 }
 
 /**
- * g_value_dup_param:
+ * g_value_dup_param: (skip)
  * @value: a valid #GValue whose type is derived from %G_TYPE_PARAM
  *
  * Get the contents of a %G_TYPE_PARAM #GValue, increasing its
diff --git a/gobject/gparamspecs.c b/gobject/gparamspecs.c
index 9e07cfe..f49936b 100644
--- a/gobject/gparamspecs.c
+++ b/gobject/gparamspecs.c
@@ -1591,7 +1591,7 @@
 /* --- GParamSpec initialization --- */
 
 /**
- * g_param_spec_char:
+ * g_param_spec_char: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1631,7 +1631,7 @@
 }
 
 /**
- * g_param_spec_uchar:
+ * g_param_spec_uchar: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1671,7 +1671,7 @@
 }
 
 /**
- * g_param_spec_boolean:
+ * g_param_spec_boolean: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1708,7 +1708,7 @@
 }
 
 /**
- * g_param_spec_int:
+ * g_param_spec_int: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1750,7 +1750,7 @@
 }
 
 /**
- * g_param_spec_uint:
+ * g_param_spec_uint: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1792,7 +1792,7 @@
 }
 
 /**
- * g_param_spec_long:
+ * g_param_spec_long: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1834,7 +1834,7 @@
 }
 
 /**
- * g_param_spec_ulong:
+ * g_param_spec_ulong: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1877,7 +1877,7 @@
 }
 
 /**
- * g_param_spec_int64:
+ * g_param_spec_int64: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1919,7 +1919,7 @@
 }
 
 /**
- * g_param_spec_uint64:
+ * g_param_spec_uint64: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1962,7 +1962,7 @@
 }
 
 /**
- * g_param_spec_unichar:
+ * g_param_spec_unichar: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -1998,7 +1998,7 @@
 }
 
 /**
- * g_param_spec_enum:
+ * g_param_spec_enum: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2044,7 +2044,7 @@
 }
 
 /**
- * g_param_spec_flags:
+ * g_param_spec_flags: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2090,7 +2090,7 @@
 }
 
 /**
- * g_param_spec_float:
+ * g_param_spec_float: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2132,7 +2132,7 @@
 }
 
 /**
- * g_param_spec_double:
+ * g_param_spec_double: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2175,7 +2175,7 @@
 }
 
 /**
- * g_param_spec_string:
+ * g_param_spec_string: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2207,7 +2207,7 @@
 }
 
 /**
- * g_param_spec_param:
+ * g_param_spec_param: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2243,7 +2243,7 @@
 }
 
 /**
- * g_param_spec_boxed:
+ * g_param_spec_boxed: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2280,7 +2280,7 @@
 }
 
 /**
- * g_param_spec_pointer:
+ * g_param_spec_pointer: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2309,7 +2309,7 @@
 }
 
 /**
- * g_param_spec_gtype:
+ * g_param_spec_gtype: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2347,7 +2347,7 @@
 }
 
 /**
- * g_param_spec_value_array:
+ * g_param_spec_value_array: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2391,7 +2391,7 @@
 }
 
 /**
- * g_param_spec_object:
+ * g_param_spec_object: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
@@ -2427,7 +2427,7 @@
 }
 
 /**
- * g_param_spec_override:
+ * g_param_spec_override: (skip)
  * @name: the name of the property.
  * @overridden: The property that is being overridden
  *
@@ -2470,7 +2470,7 @@
 }
 
 /**
- * g_param_spec_variant:
+ * g_param_spec_variant: (skip)
  * @name: canonical name of the property specified
  * @nick: nick name for the property specified
  * @blurb: description of the property specified
diff --git a/gobject/gtype.c b/gobject/gtype.c
index 60f850c..dac5e8f 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -1606,14 +1606,16 @@
 /**
  * g_type_interface_prerequisites:
  * @interface_type: an interface type
- * @n_prerequisites: location to return the number of prerequisites, or %NULL
+ * @n_prerequisites: (out) (allow-none): location to return the number
+ *                   of prerequisites, or %NULL
  *
  * Returns the prerequisites of an interfaces type.
  *
  * Since: 2.2
  *
- * Returns: a newly-allocated zero-terminated array of #GType containing
- *  the prerequisites of @interface_type
+ * Returns: (array length=n_prerequisites) (transfer full): a
+ *          newly-allocated zero-terminated array of #GType containing
+ *          the prerequisites of @interface_type
  */
 GType*
 g_type_interface_prerequisites (GType  interface_type,
@@ -1818,7 +1820,7 @@
 }
 
 /**
- * g_type_create_instance:
+ * g_type_create_instance: (skip)
  * @type: An instantiatable type to create an instance for.
  *
  * Creates and initializes an instance of @type if @type is valid and
@@ -2429,7 +2431,7 @@
 }
 
 /**
- * g_type_add_class_cache_func:
+ * g_type_add_class_cache_func: (skip)
  * @cache_data: data to be passed to @cache_func
  * @cache_func: a #GTypeClassCacheFunc
  *
@@ -2458,7 +2460,7 @@
 }
 
 /**
- * g_type_remove_class_cache_func:
+ * g_type_remove_class_cache_func: (skip)
  * @cache_data: data that was given when adding @cache_func
  * @cache_func: a #GTypeClassCacheFunc
  *
@@ -2497,7 +2499,7 @@
 
 
 /**
- * g_type_add_interface_check:
+ * g_type_add_interface_check: (skip)
  * @check_data: data to pass to @check_func
  * @check_func: function to be called after each interface
  *              is initialized.
@@ -2531,7 +2533,7 @@
 }
 
 /**
- * g_type_remove_interface_check:
+ * g_type_remove_interface_check: (skip)
  * @check_data: callback data passed to g_type_add_interface_check()
  * @check_func: callback function passed to g_type_add_interface_check()
  *
@@ -2640,7 +2642,7 @@
 }
 
 /**
- * g_type_register_static_simple:
+ * g_type_register_static_simple: (skip)
  * @parent_type: Type from which this type will be derived.
  * @type_name: 0-terminated string used as the name of the new type.
  * @class_size: Size of the class structure (see #GTypeInfo)
@@ -2865,7 +2867,8 @@
  * @type. This function will demand-create the class if it doesn't
  * exist already.
  *
- * Returns: The #GTypeClass structure for the given type ID.
+ * Returns: (type GObject.TypeClass) (transfer none): The #GTypeClass
+ *  structure for the given type ID.
  */
 gpointer
 g_type_class_ref (GType type)
@@ -2924,7 +2927,8 @@
 
 /**
  * g_type_class_unref:
- * @g_class: The #GTypeClass structure to unreference.
+ * @g_class: (type GObject.TypeClass): The #GTypeClass structure to
+ *  unreference.
  *
  * Decrements the reference count of the class structure being passed in.
  * Once the last reference count of a class has been released, classes
@@ -2948,8 +2952,9 @@
 }
 
 /**
- * g_type_class_unref_uncached:
- * @g_class: The #GTypeClass structure to unreference.
+ * g_type_class_unref_uncached: (skip)
+ * @g_class: (type GObject.TypeClass): The #GTypeClass structure to
+ *  unreference.
  *
  * A variant of g_type_class_unref() for use in #GTypeClassCacheFunc
  * implementations. It unreferences a class without consulting the chain
@@ -2981,8 +2986,9 @@
  * may return %NULL if the class of the type passed in does not currently
  * exist (hasn't been referenced before).
  *
- * Returns: The #GTypeClass structure for the given type ID or %NULL
- *  if the class does not currently exist.
+ * Returns: (type GObject.TypeClass) (transfer none): The #GTypeClass
+ *  structure for the given type ID or %NULL if the class does not
+ *  currently exist.
  */
 gpointer
 g_type_class_peek (GType type)
@@ -3009,8 +3015,9 @@
  * static types.
  * 
  * Since: 2.4
- * Returns: The #GTypeClass structure for the given type ID or %NULL
- *  if the class does not currently exist or is dynamically loaded.
+ * Returns: (type GObject.TypeClass) (transfer none): The #GTypeClass
+ *  structure for the given type ID or %NULL if the class does not
+ *  currently exist or is dynamically loaded.
  */
 gpointer
 g_type_class_peek_static (GType type)
@@ -3032,7 +3039,8 @@
 
 /**
  * g_type_class_peek_parent:
- * @g_class: The #GTypeClass structure to retrieve the parent class for.
+ * @g_class: (type GObject.TypeClass): The #GTypeClass structure to
+ *  retrieve the parent class for.
  *
  * This is a convenience function often needed in class initializers.
  * It returns the class structure of the immediate parent type of the
@@ -3045,7 +3053,8 @@
  * g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (g_class)));
  * </programlisting>
  *
- * Returns: The parent class of @g_class.
+ * Returns: (type GObject.TypeClass) (transfer none): The parent class
+ *  of @g_class.
  */
 gpointer
 g_type_class_peek_parent (gpointer g_class)
@@ -3073,14 +3082,15 @@
 
 /**
  * g_type_interface_peek:
- * @instance_class: A #GTypeClass structure.
+ * @instance_class: (type GObject.TypeClass): A #GTypeClass structure.
  * @iface_type: An interface ID which this class conforms to.
  *
  * Returns the #GTypeInterface structure of an interface to which the
  * passed in class conforms.
  *
- * Returns: The GTypeInterface structure of iface_type if implemented
- *          by @instance_class, %NULL otherwise
+ * Returns: (type GObject.TypeInterface) (transfer none): The GTypeInterface
+ *  structure of iface_type if implemented by @instance_class, %NULL
+ *  otherwise
  */
 gpointer
 g_type_interface_peek (gpointer instance_class,
@@ -3105,16 +3115,17 @@
 
 /**
  * g_type_interface_peek_parent:
- * @g_iface: A #GTypeInterface structure.
+ * @g_iface: (type GObject.TypeInterface): A #GTypeInterface structure.
  *
  * Returns the corresponding #GTypeInterface structure of the parent type
  * of the instance type to which @g_iface belongs. This is useful when
  * deriving the implementation of an interface from the parent type and
  * then possibly overriding some methods.
  *
- * Returns: The corresponding #GTypeInterface structure of the parent
- *          type of the instance type to which @g_iface belongs, or
- *          %NULL if the parent type doesn't conform to the interface.
+ * Returns: (transfer none) (type GObject.TypeInterface): The
+ *  corresponding #GTypeInterface structure of the parent type of the
+ *  instance type to which @g_iface belongs, or %NULL if the parent
+ *  type doesn't conform to the interface.
  */
 gpointer
 g_type_interface_peek_parent (gpointer g_iface)
@@ -3156,9 +3167,9 @@
  *
  * Since: 2.4
  *
- * Returns: the default vtable for the interface; call
- *          g_type_default_interface_unref() when you are done using
- *          the interface.
+ * Returns: (type GObject.TypeInterface) (transfer none): the default
+ *  vtable for the interface; call g_type_default_interface_unref()
+ *  when you are done using the interface.
  */
 gpointer
 g_type_default_interface_ref (GType g_type)
@@ -3206,8 +3217,9 @@
  *
  * Since: 2.4
  *
- * Returns: the default vtable for the interface, or %NULL
- *          if the type is not currently in use.
+ * Returns: (type GObject.TypeInterface) (transfer none): the default
+ *  vtable for the interface, or %NULL if the type is not currently in
+ *  use.
  */
 gpointer
 g_type_default_interface_peek (GType g_type)
@@ -3226,8 +3238,9 @@
 
 /**
  * g_type_default_interface_unref:
- * @g_iface: the default vtable structure for a interface, as
- *           returned by g_type_default_interface_ref()
+ * @g_iface: (type GObject.TypeInterface): the default vtable
+ *  structure for a interface, as returned by
+ *  g_type_default_interface_ref()
  *
  * Decrements the reference count for the type corresponding to the
  * interface default vtable @g_iface. If the type is dynamic, then
@@ -3490,12 +3503,14 @@
 /**
  * g_type_children:
  * @type: The parent type.
- * @n_children: Optional #guint pointer to contain the number of child types.
+ * @n_children: (out) (allow-none): Optional #guint pointer to contain
+ *              the number of child types.
  *
  * Return a newly allocated and 0-terminated array of type IDs, listing the
  * child types of @type. The return value has to be g_free()ed after use.
  *
- * Returns: Newly allocated and 0-terminated array of child types.
+ * Returns: (array length=n_children) (transfer full): Newly allocated
+ *          and 0-terminated array of child types.
  */
 GType*
 g_type_children (GType  type,
@@ -3531,14 +3546,15 @@
 /**
  * g_type_interfaces:
  * @type: The type to list interface types for.
- * @n_interfaces: Optional #guint pointer to contain the number of
- *                interface types.
+ * @n_interfaces: (out) (allow-none): Optional #guint pointer to
+ *                contain the number of interface types.
  *
  * Return a newly allocated and 0-terminated array of type IDs, listing the
  * interface types that @type conforms to. The return value has to be
  * g_free()ed after use.
  *
- * Returns: Newly allocated and 0-terminated array of interface types.
+ * Returns: (array length=n_interfaces) (transfer full): Newly
+ *          allocated and 0-terminated array of interface types.
  */
 GType*
 g_type_interfaces (GType  type,
@@ -3636,7 +3652,7 @@
  * Obtains data which has previously been attached to @type
  * with g_type_set_qdata().
  *
- * Returns: the data, or %NULL if no data was found
+ * Returns: (transfer none): the data, or %NULL if no data was found
  */
 gpointer
 g_type_get_qdata (GType  type,
@@ -3742,8 +3758,8 @@
 /**
  * g_type_query:
  * @type: the #GType value of a static, classed type.
- * @query: A user provided structure that is filled in with constant values
- *  upon success.
+ * @query: (out caller-allocates): A user provided structure that is
+ *         filled in with constant values upon success.
  *
  * Queries the type system for information about a specific type.
  * This function will fill in a user-provided structure to hold
@@ -3824,8 +3840,8 @@
  * Returns the #GTypePlugin structure for @type or
  * %NULL if @type does not have a #GTypePlugin structure.
  *
- * Returns: The corresponding plugin if @type is a dynamic type,
- *  %NULL otherwise.
+ * Returns: (transfer none): The corresponding plugin if @type is a
+ *          dynamic type, %NULL otherwise.
  */
 GTypePlugin*
 g_type_get_plugin (GType type)
@@ -3847,8 +3863,8 @@
  * @interface_type has not been added to @instance_type or does not
  * have a #GTypePlugin structure. See g_type_add_interface_dynamic().
  *
- * Returns: the #GTypePlugin for the dynamic interface @interface_type
- *  of @instance_type.
+ * Returns: (transfer none): the #GTypePlugin for the dynamic
+ *          interface @interface_type of @instance_type.
  */
 GTypePlugin*
 g_type_interface_get_plugin (GType instance_type,
@@ -4123,7 +4139,7 @@
 }
 
 /**
- * g_type_value_table_peek:
+ * g_type_value_table_peek: (skip)
  * @type: A #GType value.
  *
  * Returns the location of the #GTypeValueTable associated with @type.
diff --git a/gobject/gvalue.c b/gobject/gvalue.c
index 9247d4c..573969c 100644
--- a/gobject/gvalue.c
+++ b/gobject/gvalue.c
@@ -159,7 +159,7 @@
  *
  * Initializes @value with the default value of @type.
  *
- * Returns: the #GValue structure that has been passed in
+ * Returns: (transfer none): the #GValue structure that has been passed in
  */
 GValue*
 g_value_init (GValue *value,
@@ -301,11 +301,10 @@
  * g_value_peek_pointer:
  * @value: An initialized #GValue structure.
  *
- * Return the value contents as pointer. This function asserts that
- * g_value_fits_pointer() returned %TRUE for the passed in value.
- * This is an internal function introduced mainly for C marshallers.
- *
- * Returns: %TRUE if @value will fit inside a pointer value.
+ * Returns: (transfer none): the value contents as pointer. This
+ * function asserts that g_value_fits_pointer() returned %TRUE for the
+ * passed in value.  This is an internal function introduced mainly
+ * for C marshallers.
  */
 gpointer
 g_value_peek_pointer (const GValue *value)
@@ -424,7 +423,7 @@
 }
 
 /**
- * g_value_register_transform_func:
+ * g_value_register_transform_func: (skip)
  * @src_type: Source type.
  * @dest_type: Target type.
  * @transform_func: a function which transforms values of type @src_type
diff --git a/gobject/gvaluearray.c b/gobject/gvaluearray.c
index 3bc6787..e2a752e 100644
--- a/gobject/gvaluearray.c
+++ b/gobject/gvaluearray.c
@@ -58,7 +58,7 @@
  *
  * Return a pointer to the value at @index_ containd in @value_array.
  *
- * Returns: pointer to a value at @index_ in @value_array
+ * Returns: (transfer none): pointer to a value at @index_ in @value_array
  */
 GValue*
 g_value_array_get_nth (GValueArray *value_array,
@@ -158,7 +158,7 @@
  * Construct an exact copy of a #GValueArray by duplicating all its
  * contents.
  *
- * Returns: Newly allocated copy of #GValueArray
+ * Returns: (transfer full): Newly allocated copy of #GValueArray
  */
 GValueArray*
 g_value_array_copy (const GValueArray *value_array)
@@ -187,13 +187,13 @@
 /**
  * g_value_array_prepend:
  * @value_array: #GValueArray to add an element to
- * @value: #GValue to copy into #GValueArray, or %NULL
+ * @value: (allow-none): #GValue to copy into #GValueArray, or %NULL
  *
  * Insert a copy of @value as first element of @value_array. If @value is
  * %NULL, an uninitialized value is prepended.
  *
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_prepend (GValueArray  *value_array,
@@ -207,12 +207,12 @@
 /**
  * g_value_array_append:
  * @value_array: #GValueArray to add an element to
- * @value: #GValue to copy into #GValueArray, or %NULL
+ * @value: (allow-none): #GValue to copy into #GValueArray, or %NULL
  *
  * Insert a copy of @value as last element of @value_array. If @value is
  * %NULL, an uninitialized value is appended.
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_append (GValueArray  *value_array,
@@ -227,12 +227,12 @@
  * g_value_array_insert:
  * @value_array: #GValueArray to add an element to
  * @index_: insertion position, must be &lt;= value_array-&gt;n_values
- * @value: #GValue to copy into #GValueArray, or %NULL
+ * @value: (allow-none): #GValue to copy into #GValueArray, or %NULL
  *
  * Insert a copy of @value at specified position into @value_array. If @value
  * is %NULL, an uninitialized value is inserted.
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_insert (GValueArray  *value_array,
@@ -265,7 +265,7 @@
  *
  * Remove the value at position @index_ from @value_array.
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_remove (GValueArray *value_array,
@@ -290,14 +290,14 @@
 /**
  * g_value_array_sort:
  * @value_array: #GValueArray to sort
- * @compare_func: function to compare elements
+ * @compare_func: (scope call): function to compare elements
  *
  * Sort @value_array using @compare_func to compare the elements accoring to
  * the semantics of #GCompareFunc.
  *
  * The current implementation uses Quick-Sort as sorting algorithm.
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_sort (GValueArray *value_array,
@@ -316,15 +316,16 @@
 /**
  * g_value_array_sort_with_data:
  * @value_array: #GValueArray to sort
- * @compare_func: function to compare elements
- * @user_data: extra data argument provided for @compare_func
+ * @compare_func: (scope call): function to compare elements
+ * @user_data: (closure): extra data argument provided for @compare_func
  *
  * Sort @value_array using @compare_func to compare the elements accoring
  * to the semantics of #GCompareDataFunc.
  *
  * The current implementation uses Quick-Sort as sorting algorithm.
  *
- * Returns: the #GValueArray passed in as @value_array
+ * Rename to: g_value_array_sort
+ * Returns: (transfer none): the #GValueArray passed in as @value_array
  */
 GValueArray*
 g_value_array_sort_with_data (GValueArray     *value_array,
diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c
index aa22b2d..78c7266 100644
--- a/gobject/gvaluetypes.c
+++ b/gobject/gvaluetypes.c
@@ -1119,7 +1119,7 @@
  *
  * Get the contents of a pointer #GValue.
  *
- * Returns: pointer contents of @value
+ * Returns: (transfer none): pointer contents of @value
  */
 gpointer
 g_value_get_pointer (const GValue *value)
diff --git a/gobject/tests/Makefile.am b/gobject/tests/Makefile.am
index eec8c5e..8452164 100644
--- a/gobject/tests/Makefile.am
+++ b/gobject/tests/Makefile.am
@@ -3,15 +3,7 @@
 INCLUDES = -g $(gobject_INCLUDES) $(GLIB_DEBUG_FLAGS)
 
 noinst_PROGRAMS  = $(TEST_PROGS)
-libgobject_LDADD = ../libgobject-2.0.la $(top_builddir)/gthread/libgthread-2.0.la $(top_builddir)/glib/libglib-2.0.la
+LDADD = ../libgobject-2.0.la $(top_builddir)/gthread/libgthread-2.0.la $(top_builddir)/glib/libglib-2.0.la
 
-TEST_PROGS             += threadtests dynamictests binding properties reference
-threadtests_SOURCES	= threadtests.c
-threadtests_LDADD	= $(libgobject_LDADD)
-dynamictests_SOURCES	= dynamictests.c
-dynamictests_LDADD	= $(libgobject_LDADD)
-binding_SOURCES		= binding.c
-binding_LDADD		= $(libgobject_LDADD)
-properties_SOURCES      = properties.c
-properties_LDADD        = $(libgobject_LDADD)
-reference_LDADD		= $(libgobject_LDADD)
+TEST_PROGS += threadtests dynamictests binding properties reference ifaceproperties
+ifaceproperties_SOURCES = ifaceproperties.c testcommon.h
diff --git a/gobject/tests/ifaceproperties.c b/gobject/tests/ifaceproperties.c
new file mode 100644
index 0000000..14762fb
--- /dev/null
+++ b/gobject/tests/ifaceproperties.c
@@ -0,0 +1,648 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2001, 2003 Red Hat, Inc.
+ *
+ * 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 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib-object.h>
+
+#include "testcommon.h"
+
+/* This test tests interface properties, implementing interface
+ * properties and #GParamSpecOverride.
+ *
+ * Four properties are tested:
+ *
+ * prop1: Defined in TestIface, Implemented in BaseObject with a GParamSpecOverride
+ * prop2: Defined in TestIface, Implemented in BaseObject with a new property
+ * prop3: Defined in TestIface, Implemented in BaseObject, Overridden in DerivedObject
+ * prop4: Defined in BaseObject, Overridden in DerivedObject
+ */
+   
+static GType base_object_get_type ();
+static GType derived_object_get_type ();
+
+enum {
+  BASE_PROP_0,
+  BASE_PROP1,
+  BASE_PROP2,
+  BASE_PROP3,
+  BASE_PROP4
+};
+
+enum {
+  DERIVED_PROP_0,
+  DERIVED_PROP3,
+  DERIVED_PROP4
+};
+
+/*
+ * BaseObject, a parent class for DerivedObject
+ */
+#define BASE_TYPE_OBJECT          (base_object_get_type ())
+#define BASE_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), BASE_TYPE_OBJECT, BaseObject))
+typedef struct _BaseObject        BaseObject;
+typedef struct _BaseObjectClass   BaseObjectClass;
+
+struct _BaseObject
+{
+  GObject parent_instance;
+
+  gint val1;
+  gint val2;
+  gint val3;
+  gint val4;
+};
+struct _BaseObjectClass
+{
+  GObjectClass parent_class;
+};
+
+GObjectClass *base_parent_class;
+
+/*
+ * DerivedObject, the child class of DerivedObject
+ */
+#define DERIVED_TYPE_OBJECT          (derived_object_get_type ())
+typedef struct _DerivedObject        DerivedObject;
+typedef struct _DerivedObjectClass   DerivedObjectClass;
+
+struct _DerivedObject
+{
+  BaseObject parent_instance;
+};
+struct _DerivedObjectClass
+{
+  BaseObjectClass parent_class;
+};
+
+/*
+ * The interface
+ */
+typedef struct _TestIfaceClass TestIfaceClass;
+
+struct _TestIfaceClass
+{
+  GTypeInterface base_iface;
+};
+
+#define TEST_TYPE_IFACE (test_iface_get_type ())
+
+/* The paramspecs installed on our interface
+ */
+static GParamSpec *iface_spec1, *iface_spec2, *iface_spec3;
+
+/* The paramspecs inherited by our derived object
+ */
+static GParamSpec *inherited_spec1, *inherited_spec2, *inherited_spec3, *inherited_spec4;
+
+static void
+test_iface_default_init (TestIfaceClass *iface_vtable)
+{
+  inherited_spec1 = iface_spec1 = g_param_spec_int ("prop1",
+                                                    "Prop1",
+                                                    "Property 1",
+                                                    G_MININT, /* min */
+                                                    0xFFFF,  /* max */
+                                                    42,       /* default */
+                                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+  g_object_interface_install_property (iface_vtable, iface_spec1);
+
+  iface_spec2 = g_param_spec_int ("prop2",
+                                  "Prop2",
+                                  "Property 2",
+                                  G_MININT, /* min */
+                                  G_MAXINT, /* max */
+                                  0,           /* default */
+                                  G_PARAM_WRITABLE);
+  g_object_interface_install_property (iface_vtable, iface_spec2);
+    
+  inherited_spec3 = iface_spec3 = g_param_spec_int ("prop3",
+                                                    "Prop3",
+                                                    "Property 3",
+                                                    G_MININT, /* min */
+                                                    G_MAXINT, /* max */
+                                                    0,         /* default */
+                                                    G_PARAM_READWRITE);
+  g_object_interface_install_property (iface_vtable, iface_spec3);
+}
+
+static DEFINE_IFACE (TestIface, test_iface, NULL, test_iface_default_init)
+
+
+static GObject*
+base_object_constructor (GType                  type,
+                         guint                  n_construct_properties,
+                         GObjectConstructParam *construct_properties)
+{
+  /* The constructor is the one place where a GParamSpecOverride is visible
+   * to the outside world, so we do a bunch of checks here
+   */
+  GValue value1 = { 0, };
+  GValue value2 = { 0, };
+  GParamSpec *pspec;
+
+  g_assert (n_construct_properties == 1);
+
+  pspec = construct_properties->pspec;
+
+  /* Check we got the param spec we expected
+   */
+  g_assert (G_IS_PARAM_SPEC_OVERRIDE (pspec));
+  g_assert (pspec->param_id == BASE_PROP1);
+  g_assert (strcmp (g_param_spec_get_name (pspec), "prop1") == 0);
+  g_assert (g_param_spec_get_redirect_target (pspec) == iface_spec1);
+
+  /* Test redirection of the nick and blurb to the redirect target
+   */
+  g_assert (strcmp (g_param_spec_get_nick (pspec), "Prop1") == 0);
+  g_assert (strcmp (g_param_spec_get_blurb (pspec), "Property 1") == 0);
+
+  /* Test forwarding of the various GParamSpec methods to the redirect target
+   */
+  g_value_init (&value1, G_TYPE_INT);
+  g_value_init (&value2, G_TYPE_INT);
+
+  g_param_value_set_default (pspec, &value1);
+  g_assert (g_value_get_int (&value1) == 42);
+
+  g_value_reset (&value1);
+  g_value_set_int (&value1, 0x10000);
+  g_assert (g_param_value_validate (pspec, &value1));
+  g_assert (g_value_get_int (&value1) == 0xFFFF);
+  g_assert (!g_param_value_validate (pspec, &value1));
+
+  g_value_reset (&value1);
+  g_value_set_int (&value1, 1);
+  g_value_set_int (&value2, 2);
+  g_assert (g_param_values_cmp (pspec, &value1, &value2) < 0);
+  g_assert (g_param_values_cmp (pspec, &value2, &value1) > 0);
+
+  g_value_unset (&value1);
+  g_value_unset (&value2);
+
+  return base_parent_class->constructor (type,
+                                         n_construct_properties,
+                                         construct_properties);
+}
+
+static void
+base_object_set_property (GObject      *object,
+                          guint         prop_id,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+{
+  BaseObject *base_object = BASE_OBJECT (object);
+
+  switch (prop_id)
+    {
+    case BASE_PROP1:
+      g_assert (pspec == inherited_spec1);
+      base_object->val1 = g_value_get_int (value);
+      break;
+    case BASE_PROP2:
+      g_assert (pspec == inherited_spec2);
+      base_object->val2 = g_value_get_int (value);
+      break;
+    case BASE_PROP3:
+      g_assert_not_reached ();
+      break;
+    case BASE_PROP4:
+      g_assert_not_reached ();
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+base_object_get_property (GObject    *object,
+                          guint       prop_id,
+                          GValue     *value,
+                          GParamSpec *pspec)
+{
+  BaseObject *base_object = BASE_OBJECT (object);
+
+  switch (prop_id)
+    {
+    case BASE_PROP1:
+      g_assert (pspec == inherited_spec1);
+      g_value_set_int (value, base_object->val1);
+      break;
+    case BASE_PROP2:
+      g_assert (pspec == inherited_spec2);
+      g_value_set_int (value, base_object->val2);
+      break;
+    case BASE_PROP3:
+      g_assert_not_reached ();
+      break;
+    case BASE_PROP4:
+      g_assert_not_reached ();
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+base_object_notify (GObject    *object,
+                    GParamSpec *pspec)
+{
+  /* The property passed to notify is the redirect target, not the
+   * GParamSpecOverride
+   */
+  g_assert (pspec == inherited_spec1 ||
+            pspec == inherited_spec2 ||
+            pspec == inherited_spec3 ||
+            pspec == inherited_spec4);
+}
+
+static void
+base_object_class_init (BaseObjectClass *class)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+  base_parent_class= g_type_class_peek_parent (class);
+
+  object_class->constructor = base_object_constructor;
+  object_class->set_property = base_object_set_property;
+  object_class->get_property = base_object_get_property;
+  object_class->notify = base_object_notify;
+
+  g_object_class_override_property (object_class, BASE_PROP1, "prop1");
+
+  /* We override this one using a real property, not GParamSpecOverride
+   * We change the flags from READONLY to READWRITE to show that we
+   * can make the flags less restrictive
+   */
+  inherited_spec2 = g_param_spec_int ("prop2",
+                                      "Prop2",
+                                      "Property 2",
+                                      G_MININT, /* min */
+                                      G_MAXINT, /* max */
+                                      0,        /* default */
+                                      G_PARAM_READWRITE);
+  g_object_class_install_property (object_class, BASE_PROP2, inherited_spec2);
+
+  g_object_class_override_property (object_class, BASE_PROP3, "prop3");
+
+  inherited_spec4 = g_param_spec_int ("prop4",
+                                      "Prop4",
+                                      "Property 4",
+                                      G_MININT, /* min */
+                                      G_MAXINT, /* max */
+                                      0,        /* default */
+                                      G_PARAM_READWRITE);
+  g_object_class_install_property (object_class, BASE_PROP4, inherited_spec4);
+}
+
+static void
+base_object_init (BaseObject *base_object)
+{
+  base_object->val1 = 42;
+}
+
+static DEFINE_TYPE_FULL (BaseObject, base_object,
+                         base_object_class_init, NULL, base_object_init,
+                         G_TYPE_OBJECT,
+                         INTERFACE (NULL, TEST_TYPE_IFACE))
+
+static void
+derived_object_set_property (GObject      *object,
+                             guint         prop_id,
+                             const GValue *value,
+                             GParamSpec   *pspec)
+{
+  BaseObject *base_object = BASE_OBJECT (object);
+
+  switch (prop_id)
+    {
+    case DERIVED_PROP3:
+      g_assert (pspec == inherited_spec3);
+      base_object->val3 = g_value_get_int (value);
+      break;
+    case DERIVED_PROP4:
+      g_assert (pspec == inherited_spec4);
+      base_object->val4 = g_value_get_int (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+derived_object_get_property (GObject    *object,
+                             guint       prop_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+  BaseObject *base_object = BASE_OBJECT (object);
+
+  switch (prop_id)
+    {
+    case DERIVED_PROP3:
+      g_assert (pspec == inherited_spec3);
+      g_value_set_int (value, base_object->val3);
+      break;
+    case DERIVED_PROP4:
+      g_assert (pspec == inherited_spec4);
+      g_value_set_int (value, base_object->val4);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+derived_object_class_init (DerivedObjectClass *class)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+  object_class->set_property = derived_object_set_property;
+  object_class->get_property = derived_object_get_property;
+
+  /* Overriding a property that is itself overridding an interface property */
+  g_object_class_override_property (object_class, DERIVED_PROP3, "prop3");
+
+  /* Overriding a property not from an interface */
+  g_object_class_override_property (object_class, DERIVED_PROP4, "prop4");
+}
+
+static DEFINE_TYPE (DerivedObject, derived_object,
+                    derived_object_class_init, NULL, NULL,
+                    BASE_TYPE_OBJECT)
+
+/* Helper function for testing ...list_properties() */
+static void
+assert_in_properties (GParamSpec  *param_spec,
+                      GParamSpec **properties,
+                      gint         n_properties)
+{
+  gint i;
+  gboolean found = FALSE;
+
+  for (i = 0; i < n_properties; i++)
+    {
+      if (properties[i] == param_spec)
+        found = TRUE;
+    }
+
+  g_assert (found);
+}
+
+/* Test setting and getting the properties */
+static void
+test_set (void)
+{
+  BaseObject *object;
+  gint val1, val2, val3, val4;
+
+  object = g_object_new (DERIVED_TYPE_OBJECT, NULL);
+
+  g_object_set (object,
+                "prop1", 0x0101,
+                "prop2", 0x0202,
+                "prop3", 0x0303,
+                "prop4", 0x0404,
+                NULL);
+  g_object_get (object,
+                "prop1", &val1,
+                "prop2", &val2,
+                "prop3", &val3,
+                "prop4", &val4,
+                NULL);
+
+  g_assert (val1 == 0x0101);
+  g_assert (val2 == 0x0202);
+  g_assert (val3 == 0x0303);
+  g_assert (val4 == 0x0404);
+
+  g_object_unref (object);
+}
+
+/* Test that the right spec is passed on explicit notifications */
+static void
+test_notify (void)
+{
+  BaseObject *object;
+
+  object = g_object_new (DERIVED_TYPE_OBJECT, NULL);
+
+  g_object_freeze_notify (G_OBJECT (object));
+  g_object_notify (G_OBJECT (object), "prop1");
+  g_object_notify (G_OBJECT (object), "prop2");
+  g_object_notify (G_OBJECT (object), "prop3");
+  g_object_notify (G_OBJECT (object), "prop4");
+  g_object_thaw_notify (G_OBJECT (object));
+
+  g_object_unref (object);
+}
+
+/* Test g_object_class_find_property() for overridden properties */
+static void
+test_find_overridden (void)
+{
+  GObjectClass *object_class;
+
+  object_class = g_type_class_peek (DERIVED_TYPE_OBJECT);
+
+  g_assert (g_object_class_find_property (object_class, "prop1") == inherited_spec1);
+  g_assert (g_object_class_find_property (object_class, "prop2") == inherited_spec2);
+  g_assert (g_object_class_find_property (object_class, "prop3") == inherited_spec3);
+  g_assert (g_object_class_find_property (object_class, "prop4") == inherited_spec4);
+}
+
+/* Test g_object_class_list_properties() for overridden properties */
+static void
+test_list_overridden (void)
+{
+  GObjectClass *object_class;
+  GParamSpec **properties;
+  guint n_properties;
+
+  object_class = g_type_class_peek (DERIVED_TYPE_OBJECT);
+
+  properties = g_object_class_list_properties (object_class, &n_properties);
+  g_assert (n_properties == 4);
+  assert_in_properties (inherited_spec1, properties, n_properties);
+  assert_in_properties (inherited_spec2, properties, n_properties);
+  assert_in_properties (inherited_spec3, properties, n_properties);
+  assert_in_properties (inherited_spec4, properties, n_properties);
+  g_free (properties);
+}
+
+/* Test g_object_interface_find_property() */
+static void
+test_find_interface (void)
+{
+  TestIfaceClass *iface;
+
+  iface = g_type_default_interface_peek (TEST_TYPE_IFACE);
+
+  g_assert (g_object_interface_find_property (iface, "prop1") == iface_spec1);
+  g_assert (g_object_interface_find_property (iface, "prop2") == iface_spec2);
+  g_assert (g_object_interface_find_property (iface, "prop3") == iface_spec3);
+}
+
+/* Test g_object_interface_list_properties() */
+static void
+test_list_interface (void)
+{
+  TestIfaceClass *iface;
+  GParamSpec **properties;
+  guint n_properties;
+
+  iface = g_type_default_interface_peek (TEST_TYPE_IFACE);
+
+  properties = g_object_interface_list_properties (iface, &n_properties);
+  g_assert (n_properties == 3);
+  assert_in_properties (iface_spec1, properties, n_properties);
+  assert_in_properties (iface_spec2, properties, n_properties);
+  assert_in_properties (iface_spec3, properties, n_properties);
+  g_free (properties);
+}
+
+/* Base2Object, which implements the interface but fails
+ * to override some of its properties
+ */
+#define BASE2_TYPE_OBJECT          (base2_object_get_type ())
+#define BASE2_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_CAST ((obj), BASE2_TYPE_OBJECT, Base2Object))
+
+typedef struct _Base2Object        Base2Object;
+typedef struct _Base2ObjectClass   Base2ObjectClass;
+
+static void
+base2_object_test_iface_init (TestIfaceClass *iface)
+{
+}
+
+enum {
+  BASE2_PROP_0,
+  BASE2_PROP1,
+  BASE2_PROP2
+};
+
+struct _Base2Object
+{
+  GObject parent_instance;
+};
+
+struct _Base2ObjectClass
+{
+  GObjectClass parent_class;
+};
+
+G_DEFINE_TYPE_WITH_CODE (Base2Object, base2_object, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (TEST_TYPE_IFACE,
+                                                base2_object_test_iface_init))
+
+static void
+base2_object_get_property (GObject    *object,
+                           guint       prop_id,
+                           GValue     *value,
+                           GParamSpec *pspec)
+{
+  switch (prop_id)
+    {
+    case BASE2_PROP1:
+      g_value_set_int (value, 0);
+      break;
+    case BASE2_PROP2:
+      g_value_set_int (value, 0);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+base2_object_set_property (GObject      *object,
+                           guint         prop_id,
+                           const GValue *value,
+                           GParamSpec   *pspec)
+{
+  switch (prop_id)
+    {
+    case BASE2_PROP1:
+      break;
+    case BASE2_PROP2:
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+base2_object_class_init (Base2ObjectClass *class)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+  object_class->set_property = base2_object_set_property;
+  object_class->get_property = base2_object_get_property;
+
+  g_object_class_override_property (object_class, BASE2_PROP1, "prop1");
+  g_object_class_override_property (object_class, BASE2_PROP2, "prop2");
+}
+
+static void
+base2_object_init (Base2Object *object)
+{
+}
+
+static void
+test_not_overridden (void)
+{
+  g_test_bug ("637738");
+
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT|G_TEST_TRAP_SILENCE_STDERR))
+    {
+      Base2Object *object;
+
+      object = g_object_new (BASE2_TYPE_OBJECT, NULL);
+      g_object_unref (object);
+      exit (0);
+    }
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*Base2Object doesn't implement property 'prop3' from interface 'TestIface'*");
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_type_init ();
+
+  g_test_init (&argc, &argv, NULL);
+  g_test_bug_base ("http://bugzilla.gnome.org/");
+
+  g_test_add_func ("/interface/properties/set", test_set);
+  g_test_add_func ("/interface/properties/notify", test_notify);
+  g_test_add_func ("/interface/properties/find-overridden", test_find_overridden);
+  g_test_add_func ("/interface/properties/list-overridden", test_list_overridden);
+  g_test_add_func ("/interface/properties/find-interface", test_find_interface);
+  g_test_add_func ("/interface/properties/list-interface", test_list_interface);
+  g_test_add_func ("/interface/properties/not-overridden", test_not_overridden);
+
+  return g_test_run ();
+}
diff --git a/gobject/tests/testcommon.h b/gobject/tests/testcommon.h
new file mode 100644
index 0000000..7bfef05
--- /dev/null
+++ b/gobject/tests/testcommon.h
@@ -0,0 +1,100 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * 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 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, write to the
+ * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TEST_COMMON_H__
+#define __TEST_COMMON_H__
+
+G_BEGIN_DECLS
+
+#define DEFINE_TYPE_FULL(name, prefix,				\
+		         class_init, base_init, instance_init,	\
+		         parent_type, interface_decl)		\
+GType								\
+prefix ## _get_type (void)					\
+{								\
+  static GType object_type = 0;					\
+								\
+  if (!object_type)						\
+    {								\
+      static const GTypeInfo object_info =			\
+	{							\
+	  sizeof (name ## Class),				\
+	  (GBaseInitFunc) base_init,				\
+	  (GBaseFinalizeFunc) NULL,				\
+	  (GClassInitFunc) class_init,				\
+	  (GClassFinalizeFunc) NULL,				\
+	  NULL,           /* class_data */			\
+	  sizeof (name),					\
+	  0,             /* n_prelocs */			\
+	  (GInstanceInitFunc) instance_init			\
+	};							\
+								\
+      object_type = g_type_register_static (parent_type,	\
+					    # name,		\
+					    &object_info, 0);	\
+      interface_decl						\
+    }								\
+								\
+  return object_type;						\
+}
+
+#define DEFINE_TYPE(name, prefix,				\
+		    class_init, base_init, instance_init,	\
+		    parent_type)				\
+  DEFINE_TYPE_FULL(name, prefix, class_init, base_init,		\
+		   instance_init, parent_type, {})
+
+#define DEFINE_IFACE(name, prefix, base_init, dflt_init)	\
+GType								\
+prefix ## _get_type (void)					\
+{								\
+  static GType iface_type = 0;					\
+								\
+  if (!iface_type)						\
+    {								\
+      static const GTypeInfo iface_info =			\
+      {								\
+	sizeof (name ## Class),					\
+	(GBaseInitFunc)	base_init,				\
+	(GBaseFinalizeFunc) NULL,				\
+	(GClassInitFunc) dflt_init,				\
+      };							\
+								\
+      iface_type = g_type_register_static (G_TYPE_INTERFACE,	\
+					    # name,		\
+					    &iface_info, 0);	\
+    }								\
+  return iface_type;						\
+}
+
+#define INTERFACE_FULL(type, init_func, iface_type)		\
+{								\
+  static GInterfaceInfo const iface =				\
+    {								\
+      (GInterfaceInitFunc) init_func, NULL, NULL		\
+    };								\
+								\
+  g_type_add_interface_static (type, iface_type, &iface);	\
+}
+#define INTERFACE(init_func, iface_type)	\
+  INTERFACE_FULL(object_type, init_func, iface_type)
+
+G_END_DECLS
+
+#endif /* __TEST_COMMON_H__ */
diff --git a/gthread/tests/1bit-mutex.c b/gthread/tests/1bit-mutex.c
index 6c5d0cd..4b405f4 100644
--- a/gthread/tests/1bit-mutex.c
+++ b/gthread/tests/1bit-mutex.c
@@ -26,9 +26,6 @@
    */
 
   /* side-step some glib build stuff */
-  #ifndef DISABLE_VISIBILITY
-  #define DISABLE_VISIBILITY
-  #endif
   #define GLIB_COMPILATION
 
   /* rebuild gbitlock.c without futex support,
diff --git a/m4macros/gsettings.m4 b/m4macros/gsettings.m4
index f0ed838..429d04b 100644
--- a/m4macros/gsettings.m4
+++ b/m4macros/gsettings.m4
@@ -67,7 +67,7 @@
 
 ifdef gsettings_ENUM_NAMESPACE
 $(gsettings__enum_file): $(gsettings_ENUM_FILES)
-	$(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" $(gsettings_ENUM_FILES) > [$]@.tmp && mv [$]@.tmp [$]@
+	$(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@
 endif
 '
   _GSETTINGS_SUBST(GSETTINGS_RULES)
diff --git a/mkinstalldirs b/mkinstalldirs
index d2d5f21..4191a45 100755
--- a/mkinstalldirs
+++ b/mkinstalldirs
@@ -1,21 +1,36 @@
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
 
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" ""	$nl"
 errstatus=0
-dirmode=""
+dirmode=
 
 usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
 
 # process command line arguments
 while test $# -gt 0 ; do
   case $1 in
     -h | --help | --h*)         # -h for help
-      echo "$usage" 1>&2
-      exit 0
+      echo "$usage"
+      exit $?
       ;;
     -m)                         # -m PERM arg
       shift
@@ -23,6 +38,10 @@
       dirmode=$1
       shift
       ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
     --)                         # stop option processing
       shift
       break
@@ -50,30 +69,58 @@
   0) exit 0 ;;
 esac
 
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
 case $dirmode in
   '')
-    if mkdir -p -- . 2>/dev/null; then
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
       echo "mkdir -p -- $*"
       exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
     fi
     ;;
   *)
-    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
       echo "mkdir -m $dirmode -p -- $*"
       exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
     fi
     ;;
 esac
 
 for file
 do
-  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
   shift
+  IFS=$oIFS
 
-  pathcomp=
   for d
   do
-    pathcomp="$pathcomp$d"
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
     case $pathcomp in
       -*) pathcomp=./$pathcomp ;;
     esac
@@ -84,21 +131,21 @@
       mkdir "$pathcomp" || lasterr=$?
 
       if test ! -d "$pathcomp"; then
-  	errstatus=$lasterr
+	errstatus=$lasterr
       else
-  	if test ! -z "$dirmode"; then
+	if test ! -z "$dirmode"; then
 	  echo "chmod $dirmode $pathcomp"
-    	  lasterr=""
-  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+	  lasterr=
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
 
-  	  if test ! -z "$lasterr"; then
-  	    errstatus=$lasterr
-  	  fi
-  	fi
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
       fi
     fi
 
-    pathcomp="$pathcomp/"
+    pathcomp=$pathcomp/
   done
 done
 
@@ -107,5 +154,9 @@
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
 # End:
-# mkinstalldirs ends here
diff --git a/po/es.po b/po/es.po
index 922fc44..f5a2982 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,15 +6,16 @@
 # Germán Poo Caamaño <gpoo@ubiobio.cl>, 2002.
 # Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005, 2006.
 # Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&component=general\n"
-"POT-Creation-Date: 2010-11-29 15:49+0000\n"
-"PO-Revision-Date: 2010-11-30 23:40+0100\n"
-"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
+"POT-Creation-Date: 2010-12-21 12:55+0000\n"
+"PO-Revision-Date: 2010-12-22 17:00+0100\n"
+"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
 "Language-Team: Español <gnome-es-list@gnome.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -393,134 +394,134 @@
 msgid "Error opening directory '%s': %s"
 msgstr "Falló al abrir el directorio «%s»: %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "No se pueden asignar %lu bytes para leer el archivo «%s»"
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Falló al leer el archivo «%s»: %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "El archivo «%s» es demasiado grande"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Falló al leer del archivo «%s»: %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Falló al abrir el archivo «%s»: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "Falló al obtener los atributos del archivo «%s»: fstat() falló: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Falló al abrir el archivo «%s»: fdopen() falló: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgstr "Falló al renombrar el archivo «%s» a «%s»: g_rename() falló: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Falló al crear el archivo «%s»: %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "Falló al abrir el archivo «%s» para escritura: fdopen() falló: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Falló al escribir el archivo «%s»: falló fwrite(): %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Falló al escribir el archivo «%s»: falló fflush(): %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Falló al escribir el archivo «%s»: falló fsync(): %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Falló al cerrar el archivo «%s»: falló fclose(): %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "El archivo existente «%s» no se pudo eliminar: g_unlink() falló: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "La plantilla «%s» es inválida, no debería contener un «%s»"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "La plantilla «%s» no contiene XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KiB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MiB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GiB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TiB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PiB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EiB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Falló al leer el enlace simbólico «%s»: %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "Enlaces simbólicos no soportados"
 
@@ -645,11 +646,11 @@
 #: ../glib/gmarkup.c:1126
 #, c-format
 msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag "
-"'%s'"
+"Odd character '%s', expected a '>' character to end the empty-element tag '%"
+"s'"
 msgstr ""
-"Carácter «%s» impropio, se esperaba un carácter «>» para terminar la "
-"etiqueta vacía del elemento «%s»"
+"Carácter «%s» impropio, se esperaba un carácter «>» para terminar la etiqueta "
+"vacía del elemento «%s»"
 
 #: ../glib/gmarkup.c:1210
 #, c-format
@@ -676,8 +677,8 @@
 "Odd character '%s', expected an open quote mark after the equals sign when "
 "giving value for attribute '%s' of element '%s'"
 msgstr ""
-"Carácter «%s» impropio, se esperaba una marca de apertura de comillas "
-"después del signo igual al darle valor al atributo «%s» del elemento «%s»"
+"Carácter «%s» impropio, se esperaba una marca de apertura de comillas después "
+"del signo igual al darle valor al atributo «%s» del elemento «%s»"
 
 #: ../glib/gmarkup.c:1429
 #, c-format
@@ -685,8 +686,8 @@
 "'%s' is not a valid character following the characters '</'; '%s' may not "
 "begin an element name"
 msgstr ""
-"«%s» no es un carácter válido a continuación de los caracteres '</'; «%s»  "
-"no debe iniciar un nombre de elemento"
+"«%s» no es un carácter válido a continuación de los caracteres '</'; «%s»  no "
+"debe iniciar un nombre de elemento"
 
 #: ../glib/gmarkup.c:1465
 #, c-format
@@ -706,8 +707,8 @@
 #, c-format
 msgid "Element '%s' was closed, but the currently open element is '%s'"
 msgstr ""
-"Se cerró el elemento «%s», pero el elemento que está abierto actualmente es "
-"«%s»"
+"Se cerró el elemento «%s», pero el elemento que está abierto actualmente es «%"
+"s»"
 
 #: ../glib/gmarkup.c:1652
 msgid "Document was empty or contained only whitespace"
@@ -1091,15 +1092,14 @@
 #: ../glib/gshell.c:559
 #, c-format
 msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr ""
-"El texto termina justo después de un carácter '\\'. (El texto era «%s»)"
+msgstr "El texto termina justo después de un carácter '\\'. (El texto era «%s»)"
 
 #: ../glib/gshell.c:566
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was '%s')"
 msgstr ""
-"El texto terminó antes de que se encontrase la comilla correspondiente con "
-"%c. (El texto era «%s»)"
+"El texto terminó antes de que se encontrase la comilla correspondiente con %"
+"c. (El texto era «%s»)"
 
 #: ../glib/gshell.c:578
 msgid "Text was empty (or contained only whitespace)"
@@ -1415,10 +1415,10 @@
 msgid "Stream is already closed"
 msgstr "El flujo ya se cerró"
 
-#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Se canceló la operación"
 
@@ -1505,8 +1505,8 @@
 "Key/Value pair %d, `%s', in address element `%s', does not contain an equal "
 "sign"
 msgstr ""
-"El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene "
-"un signo de igual"
+"El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene un "
+"signo de igual"
 
 #: ../gio/gdbusaddress.c:469
 #, c-format
@@ -1514,8 +1514,8 @@
 "Error unescaping key or value in Key/Value pair %d, `%s', in address element "
 "`%s'"
 msgstr ""
-"Error al desescapar la clave o el valor en el par clave/valor %d, «%s», en "
-"el elemento de dirección «%s»"
+"Error al desescapar la clave o el valor en el par clave/valor %d, «%s», en el "
+"elemento de dirección «%s»"
 
 #: ../gio/gdbusaddress.c:547
 #, c-format
@@ -1596,15 +1596,14 @@
 #: ../gio/gdbusaddress.c:1056
 #, c-format
 msgid "Abnormal program termination spawning command line `%s': %s"
-msgstr ""
-"Terminación anómala de programa al lanzar («spawn») el comando «%s»: %s"
+msgstr "Terminación anómala de programa al lanzar («spawn») el comando «%s»: %s"
 
 #: ../gio/gdbusaddress.c:1070
 #, c-format
 msgid "Command line `%s' exited with non-zero exit status %d: %s"
 msgstr ""
-"El comando de línea «%s» finalizó con un estado de salida distinto de cero "
-"%d: %s"
+"El comando de línea «%s» finalizó con un estado de salida distinto de cero %"
+"d: %s"
 
 #: ../gio/gdbusaddress.c:1143
 #, c-format
@@ -1613,7 +1612,7 @@
 "No se puede determinar la dirección del bus de sesión (no implementado para "
 "este SO)"
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -1622,7 +1621,7 @@
 "No se puede determinar la dirección del bus desde la variable de entorno "
 "DBUS_STARTER_BUS_TYPE; variable «%s» desconocida"
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1683,24 +1682,23 @@
 #, c-format
 msgid "Line %d of the keyring at `%s' with content `%s' is malformed"
 msgstr ""
-"La línea %d del depósito de claves en «%s» con contenido «%s» está mal "
-"formada"
+"La línea %d del depósito de claves en «%s» con contenido «%s» está mal formada"
 
 #: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:729
 #, c-format
 msgid ""
 "First token of line %d of the keyring at `%s' with content `%s' is malformed"
 msgstr ""
-"El primer token de la línea %d del depósito de claves en «%s» con contenido "
-"«%s» está mal formado"
+"El primer token de la línea %d del depósito de claves en «%s» con contenido «%"
+"s» está mal formado"
 
 #: ../gio/gdbusauthmechanismsha1.c:434 ../gio/gdbusauthmechanismsha1.c:743
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at `%s' with content `%s' is malformed"
 msgstr ""
-"El segundo token de la línea %d del depósito de claves en «%s» con contenido "
-"«%s» está mal formado"
+"El segundo token de la línea %d del depósito de claves en «%s» con contenido «%"
+"s» está mal formado"
 
 #: ../gio/gdbusauthmechanismsha1.c:458
 #, c-format
@@ -1735,26 +1733,25 @@
 #: ../gio/gdbusauthmechanismsha1.c:877
 #, c-format
 msgid "(Additionally, releasing the lock for `%s' also failed: %s) "
-msgstr ""
-"(Adicionalmente, también falló la liberación del bloqueo para «%s»: %s)"
+msgstr "(Adicionalmente, también falló la liberación del bloqueo para «%s»: %s)"
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "La conexión está cerrada"
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Se alcanzó el tiempo de expiración"
 
-#: ../gio/gdbusconnection.c:2299
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Se encontraron opciones no soportadas al construir la conexión del lado del "
 "cliente"
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
 msgid ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
@@ -1762,68 +1759,68 @@
 "No existe la interfaz «org.freedesktop.DBus.Properties» en el objeto en la "
 "ruta %s"
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr ""
-"Error al establecer la propiedad «%s». Se esperaba el tipo «%s» pero se "
-"obtuvo «%s»."
+"Error al establecer la propiedad «%s». Se esperaba el tipo «%s» pero se obtuvo "
+"«%s»."
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "No existe la propiedad «%s»"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "No se puede leer la clave «%s»"
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "No se puede escribir la clave «%s»"
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "La interfaz «%s» no existe"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "No existe tal interfaz"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr "No existe la interfaz «%s» en el objeto en la ruta %s"
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "No existe el método «%s»"
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr "El tipo de mensaje, «%s», no concide con el tipo esperado «%s»"
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Ya existe un objeto exportado para la interfaz %s en %s"
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr "El método «%s» devolvió el tipo «%s» pero se esperaba «%s»"
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr "El método «%s» con interfaz «%s» y firma «%s» no existe"
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ya se ha exportado un subárbol para %s"
@@ -1884,8 +1881,7 @@
 #, c-format
 msgid "Expected NUL byte after the string `%s' but found byte %d"
 msgstr ""
-"Se esperaba el byte NULL después de la cadena «%s» pero se encontró el byte "
-"%d"
+"Se esperaba el byte NULL después de la cadena «%s» pero se encontró el byte %d"
 
 #: ../gio/gdbusmessage.c:1231
 #, c-format
@@ -1925,8 +1921,8 @@
 "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
 "0x%02x"
 msgstr ""
-"Valor endian no válido. Se esperaba 0x6c («l») o 0x42 («B»)» pero se obtuvo "
-"el valor 0x%02x"
+"Valor endian no válido. Se esperaba 0x6c («l») o 0x42 («B»)» pero se obtuvo el "
+"valor 0x%02x"
 
 #: ../gio/gdbusmessage.c:1697
 #, c-format
@@ -1964,8 +1960,8 @@
 msgid ""
 "Error serializing GVariant with type string `%s' to the D-Bus wire format"
 msgstr ""
-"Error al serializar GVariant con el tipo de cadena «%s» al formato de "
-"mensaje de D-Bus"
+"Error al serializar GVariant con el tipo de cadena «%s» al formato de mensaje "
+"de D-Bus"
 
 #: ../gio/gdbusmessage.c:2272
 #, c-format
@@ -1985,8 +1981,8 @@
 #: ../gio/gdbusmessage.c:2334
 #, c-format
 msgid ""
-"Message body has type signature `%s' but signature in the header field is `"
-"%s'"
+"Message body has type signature `%s' but signature in the header field is `%"
+"s'"
 msgstr ""
 "El cuerpo del mensaje tiene un tipo de firma «%s» pero la firma en el campo "
 "de cabecera es «%s»"
@@ -1995,8 +1991,8 @@
 #, c-format
 msgid "Message body is empty but signature in the header field is `(%s)'"
 msgstr ""
-"El cuerpo del mensaje está vacío pero la firma en el campo de cabecera es "
-"«(%s)»"
+"El cuerpo del mensaje está vacío pero la firma en el campo de cabecera es «(%"
+"s)»"
 
 #: ../gio/gdbusmessage.c:2907
 #, c-format
@@ -2019,7 +2015,7 @@
 msgid "Error sending message: %s"
 msgstr "Error al enviar el mensaje: %s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "No se puede cargar /var/lib/dbus/machine-id: "
 
@@ -2145,8 +2141,7 @@
 msgid ""
 "Warning: According to introspection data, interface `%s' does not exist\n"
 msgstr ""
-"Advertencia: según la introspección de los datos, la interfaz «%s» no "
-"existe\n"
+"Advertencia: según la introspección de los datos, la interfaz «%s» no existe\n"
 
 #: ../gio/gdbus-tool.c:468
 #, c-format
@@ -2154,8 +2149,8 @@
 "Warning: According to introspection data, method `%s' does not exist on "
 "interface `%s'\n"
 msgstr ""
-"Advertencia: según la introspección de los datos, el método «%s» no existe "
-"en la interfaz «%s»\n"
+"Advertencia: según la introspección de los datos, el método «%s» no existe en "
+"la interfaz «%s»\n"
 
 #: ../gio/gdbus-tool.c:530
 msgid "Destination name to invoke method on"
@@ -2241,36 +2236,36 @@
 msgid "Monitor a remote object."
 msgstr "Monitorizar un objeto remoto."
 
-#: ../gio/gdesktopappinfo.c:471 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Sin nombre"
 
-#: ../gio/gdesktopappinfo.c:755
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "El archivo de escritorio no especificó el campo Exec"
 
-#: ../gio/gdesktopappinfo.c:948
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "Imposible encontrar el terminal requerido por la aplicación"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr ""
 "No se puede crear la carpeta de configuración de la aplicación %s del "
 "usuario: %s"
 
-#: ../gio/gdesktopappinfo.c:1161
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "No se puede crear la carpeta de configuración MIME %s del usuario: %s"
 
-#: ../gio/gdesktopappinfo.c:1569
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "No se puede crear el archivo de escritorio %s del usuario"
 
-#: ../gio/gdesktopappinfo.c:1683
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -2308,29 +2303,29 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Número de tokens (%d) mal formados en la codificación GEmblem"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "No se puede manejar la versión %d de la codificación GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Número de tokens (%d) mal formados en la codificación GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Se esperaba un GEmblem para GEmblemedIconjo"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Operación no soportada"
@@ -2343,58 +2338,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "El punto de montaje contenido no existe"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "No se puede copiar sobre el directorio"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "No se puede copiar directorio sobre directorio"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "El archivo destino ya existe"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "No se puede copiar el directorio recursivamente"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "La unión no  está soportada"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error al unir el archivo: %s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "No se puede copiar el archivo especial"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "El valor del enlace simbólico dado no es válido"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "No se soporta mover a la papelera"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Los nombres de archivo no pueden contener «%c»"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "el volumen no implementa el montado"
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "No hay ninguna aplicación registrada para manejar este archivo"
 
@@ -2514,8 +2509,8 @@
 "invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
 "and dash ('-') are permitted."
 msgstr ""
-"nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten "
-"nombres en minúscula, números y guión («-»)."
+"nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten nombres "
+"en minúscula, números y guión («-»)."
 
 #: ../gio/glib-compile-schemas.c:744
 #, c-format
@@ -2561,8 +2556,8 @@
 "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
 "to <key>"
 msgstr ""
-"se debe especificar exactamente uno de «type», «enum» o «flags» como "
-"atributo para <key>"
+"se debe especificar exactamente uno de «type», «enum» o «flags» como atributo "
+"para <key>"
 
 #: ../gio/glib-compile-schemas.c:915
 #, c-format
@@ -2627,8 +2622,8 @@
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
 "does not extend '%s'"
 msgstr ""
-"<schema id='%s' list-of='%s'> extiende <schema id='%s' list-of='%s'> pero "
-"«%s» no extiende «%s»"
+"<schema id='%s' list-of='%s'> extiende <schema id='%s' list-of='%s'> pero «%"
+"s» no extiende «%s»"
 
 #: ../gio/glib-compile-schemas.c:1135
 #, c-format
@@ -2681,8 +2676,8 @@
 #, c-format
 msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
 msgstr ""
-"No existe la clave «%s» en el esquema «%s» como se especificó en el archivo "
-"de sobreescitura «%s»"
+"No existe la clave «%s» en el esquema «%s» como se especificó en el archivo de "
+"sobreescitura «%s»"
 
 #: ../gio/glib-compile-schemas.c:1767 ../gio/glib-compile-schemas.c:1825
 #: ../gio/glib-compile-schemas.c:1853
@@ -2699,8 +2694,8 @@
 #: ../gio/glib-compile-schemas.c:1787
 #, c-format
 msgid ""
-"error parsing key `%s' in schema `%s' as specified in override file `%s': "
-"%s.  "
+"error parsing key `%s' in schema `%s' as specified in override file `%s': %"
+"s.  "
 msgstr ""
 "error al analizar la clave «%s» en el esquema «%s» como se especificó en el "
 "archivo de sobreescritura «%s»: %s."
@@ -3240,66 +3235,66 @@
 msgid "No such key '%s'\n"
 msgstr "No existe la clave «%s»\n"
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "El valor proporcionado está fuera del rango válido\n"
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Listar los esquemas instalados (no reubicables)"
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr "Listar los esquemas reubicables instalados"
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr "Lista las claves en el ESQUEMA"
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:RUTA]"
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr "Lista los hijos del ESQUEMA"
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr "Listar las claves y valores recursivamente"
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr "Obtiene el valor de la CLAVE"
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:RUTA] CLAVE"
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr "Consulta el rango de valores válidos para la CLAVE"
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr "Establece el valor de la CLAVE a VALOR"
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:RUTA] CLAVE VALOR"
 
-#: ../gio/gsettings-tool.c:504
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
 msgstr "Restablece la CLAVE a su valor predeterminado"
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr "Comprueba si la CLAVE se puede escribir"
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3309,11 +3304,11 @@
 "Si no se especifica una CLAVE, monitoriza todas las claves en el ESQUEMA.\n"
 "Use ^C para detener la monitorización.\n"
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:RUTA] [CLAVE]"
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -3322,7 +3317,7 @@
 "Comando «%s» desconocido\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3364,7 +3359,7 @@
 "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3379,11 +3374,11 @@
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3391,19 +3386,19 @@
 "  SCHEMA      El nombre del esquema\n"
 "  RUTA        La ruta, para esquemas reubicables\n"
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CLAVE      La clave (opcional) para el esquema\n"
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr "  CLAVE      La clave para el esquema\n"
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     El valor para establecer\n"
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
 msgstr "Se proporcionó un nombre de esquema vacío"
@@ -3515,16 +3510,16 @@
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials no está implementado en este SO"
 
-#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1364
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Error desconocido al conectar"
 
-#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1248
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr ""
 "No se soporta intentar hacer de proxy sobre una conexión que no es TCP."
 
-#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1273
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "El protocolo del proxy «%s» no está soportado."
@@ -3631,23 +3626,24 @@
 msgstr "El proxy SOCKSv5 no soporta el tipo de dirección proporcionado."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
-msgstr "Error desconocido del servidor proxy SOCKSv5."
+#| msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
+msgstr "Error desconocido del proxy SOCKSv5."
 
 #: ../gio/gthemedicon.c:498
 #, c-format
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "No se puede manejar la versión %d de la codificación GThemedIcon"
 
-#: ../gio/gtlscertificate.c:270
+#: ../gio/gtlscertificate.c:228
 msgid "No PEM-encoded certificate found"
 msgstr "No se encontró ningún certificado codificado con PEM"
 
-#: ../gio/gtlscertificate.c:279
+#: ../gio/gtlscertificate.c:237
 msgid "Could not parse PEM-encoded certificate"
 msgstr "No se pudo analizar el certificado codificado con PEM"
 
-#: ../gio/gtlscertificate.c:300
+#: ../gio/gtlscertificate.c:258
 msgid "Could not parse PEM-encoded private key"
 msgstr "No se pudo analizar la clave privada codificada con PEM"
 
@@ -3797,8 +3793,7 @@
 
 #~ msgid "No such schema `%s' specified in override file `%s'"
 #~ msgstr ""
-#~ "No existe el esquema «%s» especificado en el archivo de sobreescritura "
-#~ "«%s»"
+#~ "No existe el esquema «%s» especificado en el archivo de sobreescritura «%s»"
 
 #~ msgid ""
 #~ "Commands:\n"
@@ -3943,8 +3938,8 @@
 #~ "characters. Ignores names after the first if multiple names are given."
 #~ msgstr ""
 #~ "Indica si se debe usar los valores de reserva encontrados al acortar el "
-#~ "nombre en los caracteres «-». Si se proporcionan varios nombres los "
-#~ "ignora después del primero."
+#~ "nombre en los caracteres «-». Si se proporcionan varios nombres los ignora "
+#~ "después del primero."
 
 #~ msgid "File descriptor"
 #~ msgstr "Descriptor del archivo"
diff --git a/po/et.po b/po/et.po
index dded40f..7a26e95 100644
--- a/po/et.po
+++ b/po/et.po
@@ -2,11 +2,11 @@
 # Estonian translation of GLib.
 #
 # Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
-# Copyright (C) 2007-2010 The GNOME Project.
+# Copyright (C) 2007–2011 The GNOME Project.
 # This file is distributed under the same license as the GLib package.
 #
 # Allan Sims <allsi eau ee>, 2002.
-# Ivar Smolin <okul linux ee>, 2005-2010.
+# Ivar Smolin <okul linux ee>, 2005–2011.
 # Priit Laes <plaes plaes org>, 2005, 2007, 2009
 # Mattias Põldaru <mahfiaz gmail com>, 2009.
 #
@@ -15,13 +15,14 @@
 "Project-Id-Version: glib MASTER\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&component=general\n"
-"POT-Creation-Date: 2010-09-02 19:40+0000\n"
-"PO-Revision-Date: 2010-09-19 14:51+0300\n"
-"Last-Translator: Mattias Põldaru <mahfiaz gmail com>\n"
+"POT-Creation-Date: 2010-12-17 16:41+0000\n"
+"PO-Revision-Date: 2011-01-11 10:37+0200\n"
+"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
 "Language-Team: Estonian <gnome-et@linux.ee>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: et\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #, c-format
@@ -120,18 +121,22 @@
 msgid "Invalid hostname"
 msgstr "Vigane hostinimi"
 
+#. Translators: 'before midday' indicator
 msgctxt "GDateTime"
 msgid "am"
 msgstr "el"
 
+#. Translators: 'before midday' indicator
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "EL"
 
+#. Translators: 'after midday' indicator
 msgctxt "GDateTime"
 msgid "pm"
 msgstr "pl"
 
+#. Translators: 'after midday' indicator
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "PL"
@@ -146,151 +151,155 @@
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "January"
 msgstr "Jaanuar"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "February"
 msgstr "Veebruar"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "March"
 msgstr "Märts"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "April"
 msgstr "Aprill"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "May"
 msgstr "Mai"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "June"
 msgstr "Juuni"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "July"
 msgstr "Juuli"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "August"
 msgstr "August"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "September"
 msgstr "September"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "October"
 msgstr "Oktoober"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "November"
 msgstr "November"
 
-msgctxt "GDateTime"
+msgctxt "full month name"
 msgid "December"
 msgstr "Detsember"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "Jaan"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "Veebr"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "Märts"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "Apr"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
+msgid "May"
+msgstr "Mai"
+
+msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "Juun"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "Juul"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "Aug"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "Sept"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "Okt"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "Nov"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "Dets"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Monday"
 msgstr "Esmaspäev"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "Teisipäev"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "Kolmapäev"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "Neljapäev"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Friday"
 msgstr "Reede"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "Laupäev"
 
-msgctxt "GDateTime"
+msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "Pühapäev"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "E"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "T"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "K"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "N"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "R"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "L"
 
-msgctxt "GDateTime"
+msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "P"
 
@@ -1273,21 +1282,21 @@
 msgid "Didn't find cookie with id %d in the keyring at `%s'"
 msgstr "Küpsist id-ga %d võtmerõngas kohas '%s' ei leitud"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error deleting stale lock file `%s': %s"
-msgstr "Viga failist '%s' lugemisel: %s"
+msgstr "Viga iganenud lukufaili '%s' kustutamisel: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error creating lock file `%s': %s"
-msgstr "Viga likufaili '%s' loomisel: %s"
+msgstr "Viga lukufaili '%s' loomisel: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error closing (unlinked) lock file `%s': %s"
-msgstr "Viga faili '%s' avamisel: %s"
+msgstr "Viga (kustutatud) lukufaili '%s' sulgemisel: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error unlinking lock file `%s': %s"
-msgstr "Viga faili '%s' avamisel: %s"
+msgstr "Viga lukufaili '%s' kustutamisel: %s"
 
 #, c-format
 msgid "Error opening keyring `%s' for writing: "
@@ -1548,9 +1557,9 @@
 msgid "Error: %s\n"
 msgstr "Viga: %s\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error parsing introspection XML: %s\n"
-msgstr "Viga võtme parsimisel: %s"
+msgstr ""
 
 msgid "Connect to the system bus"
 msgstr ""
@@ -1558,13 +1567,11 @@
 msgid "Connect to the session bus"
 msgstr ""
 
-#, fuzzy
 msgid "Connect to given D-Bus address"
-msgstr "Ühendumise edenemine"
+msgstr "Ühendumine määratud D-Bus aadressiga"
 
-#, fuzzy
 msgid "Connection Endpoint Options:"
-msgstr "Ühendumise edenemine"
+msgstr ""
 
 msgid "Options specifying the connection endpoint"
 msgstr ""
@@ -1841,6 +1848,215 @@
 msgid "Unsupported socket address"
 msgstr "Toetamata sokliaadress"
 
+msgid "empty names are not permitted"
+msgstr "tühjad nimed pole lubatud"
+
+#, c-format
+msgid "invalid name '%s': names must begin with a lowercase letter"
+msgstr ""
+
+#, c-format
+msgid ""
+"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
+"and dash ('-') are permitted."
+msgstr ""
+
+#, c-format
+msgid "invalid name '%s': two successive dashes ('--') are not permitted."
+msgstr ""
+
+#, c-format
+msgid "invalid name '%s': the last character may not be a dash ('-')."
+msgstr ""
+
+#, c-format
+msgid "invalid name '%s': maximum length is 32"
+msgstr ""
+
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr ""
+
+msgid "can not add keys to a 'list-of' schema"
+msgstr ""
+
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr ""
+
+#, c-format
+msgid ""
+"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
+"to modify value"
+msgstr ""
+
+#, c-format
+msgid ""
+"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"to <key>"
+msgstr ""
+
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr ""
+
+#, fuzzy, c-format
+msgid "invalid GVariant type string '%s'"
+msgstr "Vigane rekvisiidi tüüp (oodatakse stringi)"
+
+msgid "<override> given but schema isn't extending anything"
+msgstr ""
+
+#, c-format
+msgid "no <key name='%s'> to override"
+msgstr ""
+
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr ""
+
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr ""
+
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgstr ""
+
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgstr ""
+
+#, c-format
+msgid "Can not be a list of a schema with a path"
+msgstr ""
+
+#, c-format
+msgid "Can not extend a schema with a path"
+msgstr ""
+
+#, c-format
+msgid ""
+"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+
+#, c-format
+msgid ""
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
+"does not extend '%s'"
+msgstr ""
+
+#, c-format
+msgid "a path, if given, must begin and end with a slash"
+msgstr ""
+
+#, c-format
+msgid "the path of a list must end with ':/'"
+msgstr ""
+
+#, c-format
+msgid "<%s id='%s'> already specified"
+msgstr ""
+
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr ""
+
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr ""
+
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr ""
+
+#. Translators: Do not translate "--strict".
+#, c-format
+msgid "--strict was specified; exiting.\n"
+msgstr ""
+
+#, c-format
+msgid "This entire file has been ignored.\n"
+msgstr ""
+
+#, c-format
+msgid "Ignoring this file.\n"
+msgstr ""
+
+#, c-format
+msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
+msgstr ""
+
+#, c-format
+msgid "; ignoring override for this key.\n"
+msgstr ""
+
+#, c-format
+msgid " and --strict was specified; exiting.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"error parsing key `%s' in schema `%s' as specified in override file `%s': "
+"%s.  "
+msgstr ""
+
+#, c-format
+msgid "Ignoring override for this key.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"override for key `%s' in schema `%s' in override file `%s' is out of the "
+"range given in the schema"
+msgstr ""
+
+#, c-format
+msgid ""
+"override for key `%s' in schema `%s' in override file `%s' is not in the "
+"list of valid choices"
+msgstr ""
+
+msgid "where to store the gschemas.compiled file"
+msgstr ""
+
+msgid "DIRECTORY"
+msgstr ""
+
+msgid "Abort on any errors in schemas"
+msgstr ""
+
+msgid "Do not write the gschema.compiled file"
+msgstr ""
+
+msgid "This option will be removed soon."
+msgstr ""
+
+msgid "Do not enforce key name restrictions"
+msgstr ""
+
+msgid ""
+"Compile all GSettings schema files into a schema cache.\n"
+"Schema files are required to have the extension .gschema.xml,\n"
+"and the cache file is called gschemas.compiled."
+msgstr ""
+
+#, c-format
+msgid "You should give exactly one directory name\n"
+msgstr ""
+
+#, c-format
+msgid "No schema files found: "
+msgstr ""
+
+#, c-format
+msgid "doing nothing.\n"
+msgstr ""
+
+#, c-format
+msgid "removed existing output file.\n"
+msgstr ""
+
 msgid "Unable to find default local directory monitor type"
 msgstr "Vaikimisi kohaliku kataloogimonitori liiki pole võimalik leida"
 
@@ -2155,236 +2371,149 @@
 msgid "Error resolving '%s'"
 msgstr "Viga '%s' lahendamisel"
 
-#, fuzzy
-msgid "empty names are not permitted"
-msgstr "Abstraktne nimeruum pole toetatud"
-
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr ""
-
-#, c-format
-msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and dash ('-') are permitted."
-msgstr ""
-
-#, c-format
-msgid "invalid name '%s': two successive dashes ('--') are not permitted."
-msgstr ""
-
-#, c-format
-msgid "invalid name '%s': the last character may not be a dash ('-')."
-msgstr ""
-
-#, c-format
-msgid "invalid name '%s': maximum length is 32"
-msgstr ""
-
-#, c-format
-msgid "<child name='%s'> already specified"
-msgstr ""
-
-msgid "can not add keys to a 'list-of' schema"
-msgstr ""
-
-#, c-format
-msgid "<key name='%s'> already specified"
-msgstr ""
-
-#, c-format
-msgid ""
-"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
-"to modify value"
-msgstr ""
-
-#, c-format
-msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
-"to <key>"
-msgstr ""
-
-#, c-format
-msgid "<%s id='%s'> not (yet) defined."
+msgid "Schema '%s' is not relocatable (path must not be specified)\n"
 msgstr ""
 
 #, fuzzy, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "Vigane rekvisiidi tüüp (oodatakse stringi)"
+msgid "No such schema '%s'\n"
+msgstr "Liidest '%s' pole"
 
-msgid "<override> given but schema isn't extending anything"
+#, c-format
+msgid "Schema '%s' is relocatable (path must be specified)\n"
 msgstr ""
 
 #, c-format
-msgid "no <key name='%s'> to override"
+msgid "Empty path given.\n"
 msgstr ""
 
 #, c-format
-msgid "<override name='%s'> already specified"
+msgid "Path must begin with a slash (/)\n"
 msgstr ""
 
 #, c-format
-msgid "<schema id='%s'> already specified"
+msgid "Path must end with a slash (/)\n"
 msgstr ""
 
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 
+#, fuzzy, c-format
+msgid "No such key '%s'\n"
+msgstr "Omadust '%s' pole"
+
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "The provided value is outside of the valid range\n"
+msgstr ""
+
+msgid "List the installed (non-relocatable) schemas"
+msgstr ""
+
+msgid "List the installed relocatable schemas"
+msgstr ""
+
+msgid "Lists the keys in SCHEMA"
+msgstr ""
+
+msgid "SCHEMA[:PATH]"
+msgstr ""
+
+msgid "Lists the children of SCHEMA"
+msgstr ""
+
+msgid "List keys and values, recursively"
+msgstr ""
+
+msgid "Gets the value of KEY"
+msgstr ""
+
+msgid "SCHEMA[:PATH] KEY"
+msgstr ""
+
+msgid "Queries the range of valid values for KEY"
+msgstr ""
+
+msgid "Sets the value of KEY to VALUE"
+msgstr ""
+
+msgid "SCHEMA[:PATH] KEY VALUE"
+msgstr ""
+
+msgid "Resets KEY to its default value"
+msgstr ""
+
+msgid "Checks if KEY is writable"
+msgstr ""
+
+msgid ""
+"Monitors KEY for changes.\n"
+"If no KEY is specified, monitor all keys in SCHEMA.\n"
+"Use ^C to stop monitoring.\n"
+msgstr ""
+
+msgid "SCHEMA[:PATH] [KEY]"
 msgstr ""
 
 #, c-format
 msgid ""
-"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
-msgstr ""
-
-#, c-format
-msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
-msgstr ""
-
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr ""
-
-#, c-format
-msgid "<%s id='%s'> already specified"
-msgstr ""
-
-#, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr ""
-
-#, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr ""
-
-#, c-format
-msgid "text may not appear inside <%s>"
-msgstr ""
-
-#, c-format
-msgid "No such schema `%s' specified in override file `%s'"
-msgstr ""
-
-#, c-format
-msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
-msgstr ""
-
-#, c-format
-msgid ""
-"override for key `%s' in schema `%s' in override file `%s' is out of the "
-"range given in the schema"
-msgstr ""
-
-#, c-format
-msgid ""
-"override for key `%s' in schema `%s' in override file `%s' is not in the "
-"list of valid choices"
-msgstr ""
-
-msgid "where to store the gschemas.compiled file"
-msgstr ""
-
-msgid "DIRECTORY"
-msgstr ""
-
-msgid "Do not write the gschema.compiled file"
-msgstr ""
-
-msgid "This option will be removed soon."
-msgstr ""
-
-msgid "Do not enforce key name restrictions"
-msgstr ""
-
-msgid ""
-"Compile all GSettings schema files into a schema cache.\n"
-"Schema files are required to have the extension .gschema.xml,\n"
-"and the cache file is called gschemas.compiled."
-msgstr ""
-
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr ""
-
-#, c-format
-msgid "No schema files found: "
-msgstr ""
-
-#, c-format
-msgid "doing nothing.\n"
-msgstr ""
-
-#, c-format
-msgid "removed existing output file.\n"
-msgstr ""
-
-#, c-format
-msgid ""
-"Commands:\n"
-"  help        Show this information\n"
-"  get         Get the value of a key\n"
-"  set         Set the value of a key\n"
-"  reset       Reset the value of a key\n"
-"  monitor     Monitor a key for changes\n"
-"  writable    Check if a key is writable\n"
+"Unknown command %s\n"
 "\n"
-"Use '%s COMMAND --help' to get help for individual commands.\n"
 msgstr ""
-
-msgid "Specify the path for the schema"
-msgstr ""
-
-msgid "PATH"
-msgstr ""
-
-msgid "SCHEMA KEY"
-msgstr ""
-
-msgid "Get the value of KEY"
-msgstr ""
+"Tundmatu käsk '%s'\n"
+"\n"
 
 msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
-msgstr ""
-
-msgid "SCHEMA KEY VALUE"
-msgstr ""
-
-msgid "Set the value of KEY"
-msgstr ""
-
-msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
-"  VALUE       The value to set key to, as a serialized GVariant\n"
+"Usage:\n"
+"  gsettings COMMAND [ARGS...]\n"
+"\n"
+"Commands:\n"
+"  help                      Show this information\n"
+"  list-schemas              List installed schemas\n"
+"  list-relocatable-schemas  List relocatable schemas\n"
+"  list-keys                 List keys in a schema\n"
+"  list-children             List children of a schema\n"
+"  list-recursively          List keys and values, recursively\n"
+"  range                     Queries the range of a key\n"
+"  get                       Get the value of a key\n"
+"  set                       Set the value of a key\n"
+"  reset                     Reset the value of a key\n"
+"  writable                  Check if a key is writable\n"
+"  monitor                   Watch for changes\n"
+"\n"
+"Use 'gsettings help COMMAND' to get detailed help.\n"
+"\n"
 msgstr ""
 
 #, c-format
-msgid "Key %s is not writable\n"
-msgstr "Võti %s pole kirjutatav\n"
-
-msgid "Sets KEY to its default value"
+msgid ""
+"Usage:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
 msgstr ""
 
-msgid "Find out whether KEY is writable"
+msgid "Arguments:\n"
 msgstr ""
 
 msgid ""
-"Monitor KEY for changes and print the changed values.\n"
-"Monitoring will continue until the process is terminated."
+"  SCHEMA    The name of the schema\n"
+"  PATH      The path, for relocatable schemas\n"
+msgstr ""
+
+msgid "  KEY       The (optional) key within the schema\n"
+msgstr ""
+
+msgid "  KEY       The key within the schema\n"
+msgstr ""
+
+msgid "  VALUE     The value to set\n"
 msgstr ""
 
 #, c-format
-msgid "Unknown command '%s'\n"
-msgstr "Tundmatu käsk '%s'\n"
+msgid "Empty schema name given"
+msgstr ""
 
 msgid "Invalid socket, not initialized"
 msgstr "Vigane sokkel, käivitamata"
@@ -2476,9 +2605,9 @@
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Proxy protocol '%s' is not supported."
-msgstr "Omadus `%s' pole loetav"
+msgstr "Proksi protokoll `%s' pole toetatud."
 
 msgid "Listener is already closed"
 msgstr "Kuulaja on juba suletud"
@@ -2488,31 +2617,32 @@
 
 #, c-format
 msgid "SOCKSv4 does not support IPv6 address '%s'"
-msgstr ""
+msgstr "SOCKSv4 ei toeta IPv6-aadressi '%s'"
 
 #, c-format
 msgid "SOCKSv4 implementation limits username to %i characters"
-msgstr ""
+msgstr "SOCKSv4 implementatsioon piirab kasutajanime pikkuse %i märgiga"
 
 #, c-format
 msgid "SOCKSv4a implementation limits hostname to %i characters"
-msgstr ""
+msgstr "SOCKSv4 implementatsioon piirab hostinime pikkuse %i märgiga"
 
 msgid "The server is not a SOCKSv4 proxy server."
-msgstr ""
+msgstr "Server ei ole SOCKSv4 proksiserver."
 
 msgid "Connection through SOCKSv4 server was rejected"
-msgstr ""
+msgstr "Ühendus läbi SOCKSv4-serveri lükati tagasi"
 
 msgid "The server is not a SOCKSv5 proxy server."
-msgstr ""
+msgstr "Server ei ole SOCKSv5 proksiserver."
 
 msgid "The SOCKSv5 proxy requires authentication."
-msgstr ""
+msgstr "SOCKSv5 proksi nõuab autentimist."
 
 msgid ""
-"The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
-msgstr ""
+"The SOCKSv5 proxy requires an authentication method that is not supported by "
+"GLib."
+msgstr "SOCKSv5 proksi nõuab GLibi poolt toetamata autentimismeetodit."
 
 #, c-format
 msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)."
@@ -2549,13 +2679,22 @@
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr ""
 
-msgid "Unkown SOCKSv5 proxy error."
-msgstr ""
+msgid "Unknown SOCKSv5 proxy error."
+msgstr "SOCKSv5 proksi tundmatu viga."
 
 #, c-format
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "GThemedIcon kodeeringu versiooni %d pole võimalik käsitseda"
 
+msgid "No PEM-encoded certificate found"
+msgstr "PEM-kodeeritud sertifikaati ei leitud"
+
+msgid "Could not parse PEM-encoded certificate"
+msgstr "PEM-kodeeritud sertifikaati pole võimalik analüüsida"
+
+msgid "Could not parse PEM-encoded private key"
+msgstr "PEM-kodeeritud privaatvõtit pole võimalik analüüsida"
+
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgstr "Eeldati ühte kontrollsõnumit, aga saadi %d"
@@ -2570,9 +2709,8 @@
 msgid "Received invalid fd"
 msgstr "Saadi vigane fd"
 
-#, fuzzy
 msgid "Error sending credentials: "
-msgstr "Viga andmete saatmisel: %s"
+msgstr "Viga tõendite saatmisel: "
 
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
@@ -2584,9 +2722,9 @@
 "socket. Expected %d bytes, got %d"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr "Viga faili nime muutmisel: %s"
+msgstr "Viga SO_PASSCRED lubamisel: %s"
 
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
@@ -2594,7 +2732,7 @@
 
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "Viga SO_PASSCRED keelamisel: %s"
 
 #, c-format
 msgid "Error reading from unix: %s"
@@ -2664,7 +2802,3 @@
 
 msgid "Invalid compressed data"
 msgstr "Vigaselt pakitud andmed"
-
-#, fuzzy
-#~ msgid "Do not give error for empty directory"
-#~ msgstr "Kataloogi pole võimalik kataloogi peale liigutada"
diff --git a/po/gl.po b/po/gl.po
index 09b0d11..e068ab9 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -11,14 +11,14 @@
 # Suso Baleato <suso.baleato@xunta.es>,2009.
 # Antón Méixome <meixome@mancomun.org>, 2009.
 # Fran Dieguez <frandieguez@ubuntu.com>, 2010.
-# Fran Diéguez <frandieguez@ubuntu.com>, 2009, 2010.
+# Fran Diéguez <frandieguez@ubuntu.com>, 2009, 2010, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-11-29 17:34+0100\n"
-"PO-Revision-Date: 2010-11-29 17:35+0100\n"
+"POT-Creation-Date: 2011-01-09 16:35+0100\n"
+"PO-Revision-Date: 2011-01-09 16:35+0100\n"
 "Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <gnome-gl-list@gnome.org>\n"
 "Language: gl\n"
@@ -113,13 +113,13 @@
 msgstr "Non foi posíbel abrir o conversor de «%s» a «%s»"
 
 #: ../glib/gconvert.c:768 ../glib/gconvert.c:1161 ../glib/giochannel.c:1575
-#: ../glib/giochannel.c:1617 ../glib/giochannel.c:2461 ../glib/gutf8.c:992
+#: ../glib/giochannel.c:1617 ../glib/giochannel.c:2460 ../glib/gutf8.c:992
 #: ../glib/gutf8.c:1447 ../gio/gcharsetconverter.c:345
 msgid "Invalid byte sequence in conversion input"
 msgstr "A secuencia de bytes non é válida na entrada da conversión"
 
 #: ../glib/gconvert.c:776 ../glib/gconvert.c:1086 ../glib/giochannel.c:1582
-#: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350
+#: ../glib/giochannel.c:2472 ../gio/gcharsetconverter.c:350
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Erro durante a conversión: %s"
@@ -401,141 +401,141 @@
 msgid "Error opening directory '%s': %s"
 msgstr "Produciuse un erro ao abrir o directorio «%s»: %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "Non foi posíbel asignar %lu bytes para ler o ficheiro «%s»"
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Produciuse un erro ao ler o ficheiro «%s»: %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "O ficheiro «%s» é demasiado grande"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Produciuse un fallo ao ler desde o ficheiro «%s»: %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Produciuse un fallo ao abrir o ficheiro «%s»: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr ""
 "Produciuse un fallo ao obter os atributos do ficheiro «%s»: fstat() fallou: "
 "%s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Produciuse un fallo ao abrir o ficheiro «%s»: fdopen() fallou: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgstr ""
 "Produciuse un fallo ao renomear o ficheiro «%s» como «%s»: g_rename() "
 "fallou: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Produciuse un fallo ao crear o ficheiro «%s»: %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr ""
 "Produciuse un fallo ao abrir o ficheiro «%s» para escritura: fdopen() "
 "fallou: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Produciuse un fallo ao escribir o ficheiro «%s»: fwrite() fallou: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Produciuse un fallo ao escribir o ficheiro «%s»: fflush() fallou: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Produciuse un fallo ao escribir o ficheiro «%s»: fsync() fallou: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Produciuse un fallo ao pechar o ficheiro «%s»: fclose() fallou: %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Non foi posíbel eliminar o ficheiro existente «%s»: g_unlink() fallou: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "O modelo «%s» non é válido, non debería conter «%s»"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "O modelo «%s» non contén XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Produciuse un fallo ao ler a ligazón simbólica «%s»: %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "As ligazóns simbólicas non se admiten"
 
@@ -549,8 +549,8 @@
 msgstr ""
 "Non é posíbel facer unha lectura en bruto en g_io_channel_read_line_string"
 
-#: ../glib/giochannel.c:1799 ../glib/giochannel.c:2057
-#: ../glib/giochannel.c:2144
+#: ../glib/giochannel.c:1799 ../glib/giochannel.c:2056
+#: ../glib/giochannel.c:2143
 msgid "Leftover unconverted data in read buffer"
 msgstr "Datos restantes non convertidos no búfer de lectura"
 
@@ -805,7 +805,7 @@
 msgid "the pattern contains items not supported for partial matching"
 msgstr "o patrón contén elementos non permitidos na coincidencia parcial"
 
-#: ../glib/gregex.c:211 ../gio/glocalfile.c:2109
+#: ../glib/gregex.c:211 ../gio/glocalfile.c:2111
 msgid "internal error"
 msgstr "erro interno"
 
@@ -1298,21 +1298,21 @@
 msgid "Unknown option %s"
 msgstr "Opción %s descoñecida"
 
-#: ../glib/gkeyfile.c:362
+#: ../glib/gkeyfile.c:363
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Non é posíbel encontrar unha chave de ficheiro válida nos directorios de "
 "busca"
 
-#: ../glib/gkeyfile.c:397
+#: ../glib/gkeyfile.c:398
 msgid "Not a regular file"
 msgstr "Non é un ficheiro normal"
 
-#: ../glib/gkeyfile.c:405
+#: ../glib/gkeyfile.c:406
 msgid "File is empty"
 msgstr "O ficheiro está baleiro"
 
-#: ../glib/gkeyfile.c:764
+#: ../glib/gkeyfile.c:765
 #, c-format
 msgid ""
 "Key file contains line '%s' which is not a key-value pair, group, or comment"
@@ -1320,50 +1320,50 @@
 "O ficheiro chave contén a liña «%s» que non é un par valor-chave, grupo ou "
 "comentario"
 
-#: ../glib/gkeyfile.c:824
+#: ../glib/gkeyfile.c:825
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nome de grupo non válido: %s"
 
-#: ../glib/gkeyfile.c:846
+#: ../glib/gkeyfile.c:847
 msgid "Key file does not start with a group"
 msgstr "O ficheiro chave non comeza cun grupo"
 
-#: ../glib/gkeyfile.c:872
+#: ../glib/gkeyfile.c:873
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Nome de chave non válido: %s"
 
-#: ../glib/gkeyfile.c:899
+#: ../glib/gkeyfile.c:900
 #, c-format
 msgid "Key file contains unsupported encoding '%s'"
 msgstr "O ficheiro chave contén unha codificación non permitida «%s»"
 
-#: ../glib/gkeyfile.c:1115 ../glib/gkeyfile.c:1277 ../glib/gkeyfile.c:2656
-#: ../glib/gkeyfile.c:2722 ../glib/gkeyfile.c:2857 ../glib/gkeyfile.c:2990
-#: ../glib/gkeyfile.c:3143 ../glib/gkeyfile.c:3330 ../glib/gkeyfile.c:3391
+#: ../glib/gkeyfile.c:1116 ../glib/gkeyfile.c:1278 ../glib/gkeyfile.c:2646
+#: ../glib/gkeyfile.c:2712 ../glib/gkeyfile.c:2847 ../glib/gkeyfile.c:2980
+#: ../glib/gkeyfile.c:3133 ../glib/gkeyfile.c:3320 ../glib/gkeyfile.c:3381
 #, c-format
 msgid "Key file does not have group '%s'"
 msgstr "O ficheiro chave non ten un grupo «%s»"
 
-#: ../glib/gkeyfile.c:1289
+#: ../glib/gkeyfile.c:1290
 #, c-format
 msgid "Key file does not have key '%s'"
 msgstr "O ficheiro chave non ten a chave «%s»"
 
-#: ../glib/gkeyfile.c:1396 ../glib/gkeyfile.c:1511
+#: ../glib/gkeyfile.c:1397 ../glib/gkeyfile.c:1512
 #, c-format
 msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
 msgstr "O ficheiro chave contén a chave «%s» co valor «%s» que non é UTF-8"
 
-#: ../glib/gkeyfile.c:1416 ../glib/gkeyfile.c:1910
+#: ../glib/gkeyfile.c:1417 ../glib/gkeyfile.c:1900
 #, c-format
 msgid "Key file contains key '%s' which has value that cannot be interpreted."
 msgstr ""
 "O ficheiro chave contén a chave «%s» que ten un valor que non pode ser "
 "interpretado."
 
-#: ../glib/gkeyfile.c:1531
+#: ../glib/gkeyfile.c:1532
 #, c-format
 msgid ""
 "Key file contains key '%s' which has a value that cannot be interpreted."
@@ -1371,7 +1371,7 @@
 "O ficheiro chave contén a chave «%s» que ten un valor que non pode ser "
 "interpretado."
 
-#: ../glib/gkeyfile.c:2125 ../glib/gkeyfile.c:2487
+#: ../glib/gkeyfile.c:2115 ../glib/gkeyfile.c:2477
 #, c-format
 msgid ""
 "Key file contains key '%s' in group '%s' which has value that cannot be "
@@ -1380,36 +1380,36 @@
 "O ficheiro chave contén a chave «%s» no grupo «%s» que ten un valor que non "
 "pode ser interpretado."
 
-#: ../glib/gkeyfile.c:2671 ../glib/gkeyfile.c:2872 ../glib/gkeyfile.c:3402
+#: ../glib/gkeyfile.c:2661 ../glib/gkeyfile.c:2862 ../glib/gkeyfile.c:3392
 #, c-format
 msgid "Key file does not have key '%s' in group '%s'"
 msgstr "O ficheiro chave non ten a chave «%s» no grupo «%s»"
 
-#: ../glib/gkeyfile.c:3636
+#: ../glib/gkeyfile.c:3626
 msgid "Key file contains escape character at end of line"
 msgstr "O ficheiro chave contén un carácter de escape ao final da liña"
 
-#: ../glib/gkeyfile.c:3658
+#: ../glib/gkeyfile.c:3648
 #, c-format
 msgid "Key file contains invalid escape sequence '%s'"
 msgstr "O ficheiro chave contén a secuencia de escape non válida «%s»"
 
-#: ../glib/gkeyfile.c:3800
+#: ../glib/gkeyfile.c:3790
 #, c-format
 msgid "Value '%s' cannot be interpreted as a number."
 msgstr "Non é posíbel interpretar o valor «%s» como un número."
 
-#: ../glib/gkeyfile.c:3814
+#: ../glib/gkeyfile.c:3804
 #, c-format
 msgid "Integer value '%s' out of range"
 msgstr "O valor enteiro «%s» está fóra do intervalo"
 
-#: ../glib/gkeyfile.c:3847
+#: ../glib/gkeyfile.c:3837
 #, c-format
 msgid "Value '%s' cannot be interpreted as a float number."
 msgstr "Non é posíbel interpretar o valor «%s» como un número flotante."
 
-#: ../glib/gkeyfile.c:3871
+#: ../glib/gkeyfile.c:3861
 #, c-format
 msgid "Value '%s' cannot be interpreted as a boolean."
 msgstr "Non é posíbel interpretar o valor «%s» como un booleano."
@@ -1422,15 +1422,15 @@
 msgid "Too large count value passed to %s"
 msgstr "O valor de conta pasado a %s é demasiado longo"
 
-#: ../gio/gbufferedinputstream.c:880 ../gio/ginputstream.c:888
+#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888
 #: ../gio/giostream.c:306 ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "O fluxo xa se pechou"
 
-#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2104 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "A operación foi cancelada"
 
@@ -1619,7 +1619,7 @@
 "Non é posíbel determinar o enderezo do bus de sesión (non está implementado "
 "para este SO)"
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -1628,7 +1628,7 @@
 "Non é posíbel determinar o enderezo do bus desde a variábel de contorno "
 "DBUS_STARTER_BUS_TYPE - valor descoñecido «%s»"
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1741,22 +1741,22 @@
 msgstr "(Ademais, a liberación do bloqueo para «%s» tamén fallou: %s) "
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "O socket engadido está pechado"
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Tempo de espera máximo alcanzado"
 
-#: ../gio/gdbusconnection.c:2299
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Encontraronse bandeiras non compatíbeis ao construír a conexión da parte "
 "cliente"
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
 msgid ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
@@ -1764,68 +1764,68 @@
 "Non existe a interface «org.freedesktop.DBus.Properties» no obxecto co "
 "camiño %s"
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr ""
 "Produciuse un erro ao estabelecer a propiedade «%s»: Esperábase o tipo «%s» "
 "pero obtívose «%s»"
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "Non existe a propiedade «%s»"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "Non é posíbel escribir a chave %s"
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "Non é posíbel escribir a chave %s"
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "Non existe a interface «%s»"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "Non existe a interface"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr "Non existe a interface «%s» no obxecto co camiño %s"
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "Non existe o método «%s»"
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr "O tipo da mensaxe, «%s», non coincide co tipo «%s» esperado"
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Xa hai un obxecto exportado para a interface %s en %s"
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr "O método «%s» devolveu un tipo «%s» máis esperábase «%s»"
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr "O método «%s» na interface «%s» coa sinatura «%s» non existe"
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Xa se exportou un subárbore para %s"
@@ -2012,13 +2012,13 @@
 msgstr ""
 "O tipo do valor de retorno é incorrecto, obtívose «%s» e esperábase «%s»"
 
-#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:3023
-#: ../gio/gsocket.c:3104
+#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:3027
+#: ../gio/gsocket.c:3108
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Produciuse un erro ao enviar a mensaxe: %s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "Non é posíbel ler /var/lib/dbus/machine-id: "
 
@@ -2237,36 +2237,36 @@
 msgid "Monitor a remote object."
 msgstr "Monitoriza un obxecto remoto."
 
-#: ../gio/gdesktopappinfo.c:471 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Sen nome"
 
-#: ../gio/gdesktopappinfo.c:755
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "O ficheiro de escritorio non especificou o campo Exec"
 
-#: ../gio/gdesktopappinfo.c:948
+#: ../gio/gdesktopappinfo.c:1031
 msgid "Unable to find terminal required for application"
 msgstr "Non é posíbel encontrar o terminal requirido polo aplicativo"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1323
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr ""
 "Non é posíbel crear o cartafol de configuración do aplicativo de usuario %s: "
 "%s"
 
-#: ../gio/gdesktopappinfo.c:1161
+#: ../gio/gdesktopappinfo.c:1327
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Non é posíbel crear o cartafol de configuración MIME %s do usuario: %s"
 
-#: ../gio/gdesktopappinfo.c:1569
+#: ../gio/gdesktopappinfo.c:1820
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Non é posíbel crear o ficheiro de escritorio %s do usuario"
 
-#: ../gio/gdesktopappinfo.c:1683
+#: ../gio/gdesktopappinfo.c:1936
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -2278,19 +2278,19 @@
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:443
+#: ../gio/gdrive.c:444
 msgid "drive doesn't implement eject or eject_with_operation"
 msgstr "a unidade non implementa a expulsión ou operación_de_expulsión"
 
-#: ../gio/gdrive.c:520
+#: ../gio/gdrive.c:521
 msgid "drive doesn't implement polling for media"
 msgstr "a unidade non implementa a consulta para medios"
 
-#: ../gio/gdrive.c:725
+#: ../gio/gdrive.c:728
 msgid "drive doesn't implement start"
 msgstr "a unidade non implementa o inicio"
 
-#: ../gio/gdrive.c:827
+#: ../gio/gdrive.c:831
 msgid "drive doesn't implement stop"
 msgstr "a unidade non implementa a detención"
 
@@ -2305,31 +2305,31 @@
 msgstr ""
 "Número formado incorrectamente de tokens (%d) na codificación de GEmblem"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Non é posíbel manipular a versión %d da codificación de GEmblemedicon"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr ""
 "Número formado incorrectamente de tokens (%d) na codificación de "
 "GEmblemedicon"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Esperábase un GEmblem para o GEmblemedIcon"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Operación non permitida"
@@ -2342,58 +2342,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
-#: ../gio/glocalfile.c:1083
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1061 ../gio/glocalfile.c:1072
+#: ../gio/glocalfile.c:1085
 msgid "Containing mount does not exist"
 msgstr "O punto de montaxe contido non existe"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2260
 msgid "Can't copy over directory"
 msgstr "Non é posíbel copiar sobre o directorio"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Non é posíbel copiar un directorio sobre o directorio"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2269
 msgid "Target file exists"
 msgstr "O ficheiro de destino xa existe"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Non é posíbel copiar o directorio recursivamente"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Non se admite a unión"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Produciuse un erro ao empalmar o ficheiro: %s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Non é posíbel copiar o ficheiro especial"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "O valor da ligazón simbólica dada non é válido"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Non se asiste o Lixo"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Os nomes de ficheiro non poden conter '%c'"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "o volume non implementa o montado"
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "Non hai ningún aplicativo rexistrado para manexar este ficheiro"
 
@@ -2790,110 +2790,110 @@
 msgid "Invalid filename %s"
 msgstr "O nome do ficheiro non é válido %s"
 
-#: ../gio/glocalfile.c:967
+#: ../gio/glocalfile.c:969
 #, c-format
 msgid "Error getting filesystem info: %s"
 msgstr "Produciuse un erro ao obter a información do sistema de ficheiros: %s"
 
-#: ../gio/glocalfile.c:1105
+#: ../gio/glocalfile.c:1107
 msgid "Can't rename root directory"
 msgstr "Non é posíbel renomear o directorio raíz"
 
-#: ../gio/glocalfile.c:1125 ../gio/glocalfile.c:1151
+#: ../gio/glocalfile.c:1127 ../gio/glocalfile.c:1153
 #, c-format
 msgid "Error renaming file: %s"
 msgstr "Produciuse un erro ao renomear o ficheiro: %s"
 
-#: ../gio/glocalfile.c:1134
+#: ../gio/glocalfile.c:1136
 msgid "Can't rename file, filename already exist"
 msgstr "Non é posíbel renomear o ficheiro; o ficheiro xa existe"
 
-#: ../gio/glocalfile.c:1147 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2160
-#: ../gio/glocalfile.c:2320 ../gio/glocalfileoutputstream.c:571
+#: ../gio/glocalfile.c:1149 ../gio/glocalfile.c:2133 ../gio/glocalfile.c:2162
+#: ../gio/glocalfile.c:2322 ../gio/glocalfileoutputstream.c:571
 #: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669
 #: ../gio/glocalfileoutputstream.c:1151
 msgid "Invalid filename"
 msgstr "O nome do ficheiro non é válido"
 
-#: ../gio/glocalfile.c:1308
+#: ../gio/glocalfile.c:1310
 #, c-format
 msgid "Error opening file: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro: %s"
 
-#: ../gio/glocalfile.c:1318
+#: ../gio/glocalfile.c:1320
 msgid "Can't open directory"
 msgstr "Non é posíbel abrir o directorio"
 
-#: ../gio/glocalfile.c:1443
+#: ../gio/glocalfile.c:1445
 #, c-format
 msgid "Error removing file: %s"
 msgstr "Produciuse un erro ao eliminar o ficheiro: %s"
 
-#: ../gio/glocalfile.c:1810
+#: ../gio/glocalfile.c:1812
 #, c-format
 msgid "Error trashing file: %s"
 msgstr "Produciuse un erro ao mover ao lixo o ficheiro: %s"
 
-#: ../gio/glocalfile.c:1833
+#: ../gio/glocalfile.c:1835
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Non é posíbel crear o directorio do lixo %s: %s"
 
-#: ../gio/glocalfile.c:1854
+#: ../gio/glocalfile.c:1856
 msgid "Unable to find toplevel directory for trash"
 msgstr "Non é posíbel encontrar o directorio de nivel superior para o lixo"
 
-#: ../gio/glocalfile.c:1933 ../gio/glocalfile.c:1953
+#: ../gio/glocalfile.c:1935 ../gio/glocalfile.c:1955
 msgid "Unable to find or create trash directory"
 msgstr "Non é posíbel encontrar ou crear o directorio do lixo"
 
-#: ../gio/glocalfile.c:1987
+#: ../gio/glocalfile.c:1989
 #, c-format
 msgid "Unable to create trashing info file: %s"
 msgstr "Non é posíbel crear a información de lixo para o ficheiro: %s"
 
-#: ../gio/glocalfile.c:2016 ../gio/glocalfile.c:2021 ../gio/glocalfile.c:2101
-#: ../gio/glocalfile.c:2108
+#: ../gio/glocalfile.c:2018 ../gio/glocalfile.c:2023 ../gio/glocalfile.c:2103
+#: ../gio/glocalfile.c:2110
 #, c-format
 msgid "Unable to trash file: %s"
 msgstr "Non é posíbel mover ao lixo o ficheiro: %s"
 
-#: ../gio/glocalfile.c:2135
+#: ../gio/glocalfile.c:2137
 #, c-format
 msgid "Error creating directory: %s"
 msgstr "Produciuse un erro ao crear o directorio: %s"
 
-#: ../gio/glocalfile.c:2164
+#: ../gio/glocalfile.c:2166
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "O sistema de ficheiros non é compatíbel coas ligazóns simbólicas"
 
-#: ../gio/glocalfile.c:2168
+#: ../gio/glocalfile.c:2170
 #, c-format
 msgid "Error making symbolic link: %s"
 msgstr "Produciuse un erro ao crear a ligazón simbolica: %s"
 
-#: ../gio/glocalfile.c:2230 ../gio/glocalfile.c:2324
+#: ../gio/glocalfile.c:2232 ../gio/glocalfile.c:2326
 #, c-format
 msgid "Error moving file: %s"
 msgstr "Produciuse un erro ao mover o ficheiro: %s"
 
-#: ../gio/glocalfile.c:2253
+#: ../gio/glocalfile.c:2255
 msgid "Can't move directory over directory"
 msgstr "Non é posíbel mover o directorio sobre un directorio"
 
-#: ../gio/glocalfile.c:2280 ../gio/glocalfileoutputstream.c:949
+#: ../gio/glocalfile.c:2282 ../gio/glocalfileoutputstream.c:949
 #: ../gio/glocalfileoutputstream.c:963 ../gio/glocalfileoutputstream.c:978
 #: ../gio/glocalfileoutputstream.c:994 ../gio/glocalfileoutputstream.c:1008
 msgid "Backup file creation failed"
 msgstr "Fallou a creación do ficheiro de seguranza"
 
-#: ../gio/glocalfile.c:2299
+#: ../gio/glocalfile.c:2301
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Produciuse un erro ao eliminar o ficheiro obxectivo: %s"
 
-#: ../gio/glocalfile.c:2313
+#: ../gio/glocalfile.c:2315
 msgid "Move between mounts not supported"
 msgstr "Non se permite mover entre puntos de montaxe"
 
@@ -3122,7 +3122,7 @@
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:522
+#: ../gio/gmount.c:523
 msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
 msgstr ""
 "a montaxe non implementa o \"desmontado\" ou a \"operación_con_desmontado\""
@@ -3130,28 +3130,28 @@
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:609
+#: ../gio/gmount.c:611
 msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
 msgstr "a montaxe non implementa a expulsión ou a \"operación_con_expulsión\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:698
+#: ../gio/gmount.c:701
 msgid "mount doesn't implement \"remount\""
 msgstr "a montaxe non implementa a \"remontaxe\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:782
+#: ../gio/gmount.c:785
 msgid "mount doesn't implement content type guessing"
 msgstr "a montaxe non implementa a averiguación do tipo de contido"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:871
+#: ../gio/gmount.c:874
 msgid "mount doesn't implement synchronous content type guessing"
 msgstr "a montaxe non implementa a averiguación síncrona do tipo de contido"
 
@@ -3233,66 +3233,66 @@
 msgid "No such key '%s'\n"
 msgstr "Non existe a chave «%s»\n"
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "O valor fornecido está fora do rango válido\n"
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Lista dos esquemas instalados (non reposicionábeis)"
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr "Lista dos esquemas instalados reposicionábeis"
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr "Lista das chaves en ESQUEMA"
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:RUTA]"
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr "Lista dos fillos de SCHEMA"
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr "Lista das chaves e valores, recursivo"
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr "Obtén o valor de CHAVE"
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:RUTA] CHAVE"
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr "Consulta o rango de valores válidos de CHAVE"
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr "Estabelece o valor de CHAVE a VALOR"
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:RUTA] CHAVE VALOR"
 
-#: ../gio/gsettings-tool.c:504
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
 msgstr "Estabelece a CHAVE ao seu valor predeterminado"
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr "Comproba se a CHAVE é escribíbel"
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3302,11 +3302,11 @@
 "Se non se especifica a CHAVE, monitoriza todos os cambios en ESQUEMA.\n"
 "Use ^C para deter a monitorización.\n"
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:RUTA] [CHAVE]"
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -3315,7 +3315,7 @@
 "Orde «%s» descoñecida\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3357,7 +3357,7 @@
 "Use 'gsettings help ORDE' para obter axuda máis extensa.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3372,11 +3372,11 @@
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3384,19 +3384,19 @@
 "  SCHEMA      O nome do esquema\n"
 "  KEY         A ruta, para os esquemas reposicionábeis\n"
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       A chave (opcional) no esquema\n"
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       A chave nun esquema\n"
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     O valor a estabelecer\n"
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
 msgstr "Forneceuse un nome de esquema baleiros"
@@ -3414,7 +3414,7 @@
 msgid "Socket is already closed"
 msgstr "O fluxo de orixe xa está pechado"
 
-#: ../gio/gsocket.c:300 ../gio/gsocket.c:2765 ../gio/gsocket.c:2809
+#: ../gio/gsocket.c:300 ../gio/gsocket.c:2769 ../gio/gsocket.c:2813
 msgid "Socket I/O timed out"
 msgstr "Tempo de espera do Socket de E/S superado"
 
@@ -3470,7 +3470,7 @@
 msgid "Error connecting: %s"
 msgstr "Produciuse un erro ao conectar: %s"
 
-#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3528
+#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3532
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr "Non é posíbel obter o erro pendente: %s"
@@ -3490,35 +3490,35 @@
 msgid "Error closing socket: %s"
 msgstr "Produciuse un erro ao pechar o socket: %s"
 
-#: ../gio/gsocket.c:2758
+#: ../gio/gsocket.c:2762
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Agardando pola situación do socket: %s"
 
-#: ../gio/gsocket.c:3048
+#: ../gio/gsocket.c:3052
 msgid "GSocketControlMessage not supported on windows"
 msgstr "O GSocketControlMessage non está permitido en windows"
 
-#: ../gio/gsocket.c:3307 ../gio/gsocket.c:3448
+#: ../gio/gsocket.c:3311 ../gio/gsocket.c:3452
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Produciuse un erro ao recibir a mensaxe: %s"
 
-#: ../gio/gsocket.c:3543
+#: ../gio/gsocket.c:3547
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials non está implementado para este sistema operativo"
 
-#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1364
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Erro descoñecido ao conectar"
 
-#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1248
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr ""
 "Non se permite a conexión ao proxy mediante unha conexión que non sexa TCP."
 
-#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1273
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "Non é posíbel usar o proxy co protocolo «%s»"
@@ -3624,23 +3624,23 @@
 msgstr "O proxy SOCKSv5 non é compatíbel co tipo de enderezo fornecido."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
-msgstr "Produciuse un erro no proxy SOCKSv5 descoñecido."
+msgid "Unknown SOCKSv5 proxy error."
+msgstr "Erro no proxy SOCKSv5 descoñecido."
 
 #: ../gio/gthemedicon.c:498
 #, c-format
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Non é posíbel manipular a versión %d da codificación de GThemedIcon"
 
-#: ../gio/gtlscertificate.c:270
+#: ../gio/gtlscertificate.c:228
 msgid "No PEM-encoded certificate found"
 msgstr "Non se encontrou ningún certificado PEM codificado"
 
-#: ../gio/gtlscertificate.c:279
+#: ../gio/gtlscertificate.c:237
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Non foi posíbel analizar o certificado PEM codificado"
 
-#: ../gio/gtlscertificate.c:300
+#: ../gio/gtlscertificate.c:258
 msgid "Could not parse PEM-encoded private key"
 msgstr "Non foi posíbel analizar a chave privada PEM codificada"
 
@@ -3710,7 +3710,7 @@
 msgid "Error closing unix: %s"
 msgstr "Produciuse un erro ao pechar unix: %s"
 
-#: ../gio/gunixmounts.c:1846 ../gio/gunixmounts.c:1883
+#: ../gio/gunixmounts.c:1848 ../gio/gunixmounts.c:1885
 msgid "Filesystem root"
 msgstr "Raíz do sistema de ficheiros"
 
@@ -3733,7 +3733,7 @@
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:487
+#: ../gio/gvolume.c:488
 msgid "volume doesn't implement eject or eject_with_operation"
 msgstr "o volume non implementa a expulsión ou a operación_de_expulsión"
 
diff --git a/po/he.po b/po/he.po
index 0b099c2..1eef993 100644
--- a/po/he.po
+++ b/po/he.po
@@ -12,8 +12,8 @@
 msgstr ""
 "Project-Id-Version: glib.HEAD.he\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-05 13:17+0200\n"
-"PO-Revision-Date: 2010-12-05 13:18+0200\n"
+"POT-Creation-Date: 2010-12-23 17:19+0200\n"
+"PO-Revision-Date: 2010-12-23 17:20+0200\n"
 "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
 "Language-Team: Gezer (Hebrew)\n"
 "MIME-Version: 1.0\n"
@@ -394,134 +394,134 @@
 msgid "Error opening directory '%s': %s"
 msgstr "Error opening directory '%s': %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "Could not allocate %lu bytes to read file \"%s\""
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Error reading file '%s': %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "File \"%s\" is too large"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Failed to read from file '%s': %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Failed to open file '%s': %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "Failed to get attributes of file '%s': fstat() failed: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Failed to open file '%s': fdopen() failed: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgstr "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Failed to create file '%s': %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "Failed to open file '%s' for writing: fdopen() failed: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Failed to write file '%s': fwrite() failed: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Failed to write file '%s': fflush() failed: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Failed to write file '%s': fsync() failed: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Failed to close file '%s': fclose() failed: %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "Existing file '%s' could not be removed: g_unlink() failed: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "Template '%s' invalid, should not contain a '%s'"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "Template '%s' doesn't contain XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "בית אחד"
 msgstr[1] "%u בתים"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f ק״ב"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f מ״ב"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ג״ב"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ט״ב"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f פ״ב"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f א״ב"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Failed to read the symbolic link '%s': %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "Symbolic links not supported"
 
@@ -1375,15 +1375,15 @@
 msgid "Too large count value passed to %s"
 msgstr "Too large count value passed to %s"
 
-#: ../gio/gbufferedinputstream.c:880 ../gio/ginputstream.c:888
+#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888
 #: ../gio/giostream.c:306 ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "Stream is already closed"
 
-#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Operation was cancelled"
 
@@ -1562,7 +1562,7 @@
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Cannot determine session bus address (not implemented for this OS)"
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -1571,7 +1571,7 @@
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "- unknown value `%s'"
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1680,87 +1680,87 @@
 msgstr "(Additionally, releasing the lock for `%s' also failed: %s) "
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "The connection is closed"
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Timeout was reached"
 
-#: ../gio/gdbusconnection.c:2299
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Unsupported flags encountered when constructing a client-side connection"
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
 msgid ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 msgstr ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr "Error setting property `%s': Expected type `%s' but got `%s'"
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "No such property `%s'"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "Property `%s' is not readable"
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "Property `%s' is not writable"
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "No such interface `%s'"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "No such interface"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr "No such interface `%s' on object at path %s"
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "No such method `%s'"
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr "Type of message, `%s', does not match expected type `%s'"
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "An object is already exported for the interface %s at %s"
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr "Method `%s' returned type `%s', but expected `%s'"
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr "Method `%s' on interface `%s' with signature `%s' does not exist"
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "A subtree is already exported for %s"
@@ -1937,7 +1937,7 @@
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "Unable to load /var/lib/dbus/machine-id: "
 
@@ -2155,34 +2155,34 @@
 msgid "Monitor a remote object."
 msgstr "corrupted object"
 
-#: ../gio/gdesktopappinfo.c:471 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Unnamed"
 
-#: ../gio/gdesktopappinfo.c:755
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "Desktop file didn't specify Exec field"
 
-#: ../gio/gdesktopappinfo.c:948
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "Unable to find terminal required for application"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr "Can't create user application configuration folder %s: %s"
 
-#: ../gio/gdesktopappinfo.c:1161
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Can't create user MIME configuration folder %s: %s"
 
-#: ../gio/gdesktopappinfo.c:1569
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Can't create user desktop file %s"
 
-#: ../gio/gdesktopappinfo.c:1683
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Custom definition for %s"
@@ -2220,29 +2220,29 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Malformed number of tokens (%d) in GEmblem encoding"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Can't handle version %d of GEmblemedIcon encoding"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Expected a GEmblem for GEmblemedIcon"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Operation not supported"
@@ -2255,58 +2255,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "Containing mount does not exist"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "Can't copy over directory"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Can't copy directory over directory"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "Target file exists"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Can't recursively copy directory"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Symbolic links not supported"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error opening file: %s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Can't copy special file"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "Invalid symlink value given"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Trash not supported"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "File names cannot contain '%c'"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "volume doesn't implement mount"
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "No application is registered as handling this file"
 
@@ -3135,66 +3135,66 @@
 msgid "No such key '%s'\n"
 msgstr "No such key '%s'\n"
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "The provided value is outside of the valid range\n"
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr "List the installed (non-relocatable) schemas"
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr "List the installed relocatable schemas"
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr "Lists the keys in SCHEMA"
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr "Lists the children of SCHEMA"
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr "List keys and values, recursively"
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr "Gets the value of KEY"
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr "Queries the range of valid values for KEY"
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr "Sets the value of KEY to VALUE"
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:504
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
 msgstr "Resets KEY to its default value"
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr "Checks if KEY is writable"
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3204,11 +3204,11 @@
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -3217,7 +3217,7 @@
 "Unknown command %s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3259,7 +3259,7 @@
 "Use 'gsettings help COMMAND' to get detailed help.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3274,11 +3274,11 @@
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "Arguments:\n"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3286,19 +3286,19 @@
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       The (optional) key within the schema\n"
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       The key within the schema\n"
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     The value to set\n"
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
 msgstr "Empty schema name given"
@@ -3410,15 +3410,15 @@
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials not implemented for this OS"
 
-#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1364
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Unknown error on connect"
 
-#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1248
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr "Trying to proxy over non-TCP connection is not supported."
 
-#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1273
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "Proxy protocol '%s' is not supported."
@@ -3518,23 +3518,23 @@
 msgstr "SOCKSv5 proxy does not support provided address type."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
-msgstr "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
+msgstr "Unknown SOCKSv5 proxy error."
 
 #: ../gio/gthemedicon.c:498
 #, c-format
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Can't handle version %d of GThemedIcon encoding"
 
-#: ../gio/gtlscertificate.c:270
+#: ../gio/gtlscertificate.c:228
 msgid "No PEM-encoded certificate found"
 msgstr "No PEM-encoded certificate found"
 
-#: ../gio/gtlscertificate.c:279
+#: ../gio/gtlscertificate.c:237
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Could not parse PEM-encoded certificate"
 
-#: ../gio/gtlscertificate.c:300
+#: ../gio/gtlscertificate.c:258
 msgid "Could not parse PEM-encoded private key"
 msgstr "Could not parse PEM-encoded private key"
 
diff --git a/po/id.po b/po/id.po
index be64516..cc1558e 100644
--- a/po/id.po
+++ b/po/id.po
@@ -8,10 +8,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
-"product=glib&component=general\n"
-"POT-Creation-Date: 2010-10-17 03:32+0000\n"
-"PO-Revision-Date: 2010-10-25 22:10+0700\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=general\n"
+"POT-Creation-Date: 2011-01-04 14:39+0000\n"
+"PO-Revision-Date: 2011-01-07 11:37+0700\n"
 "Last-Translator: Andika Triwidada <andika@gmail.com>\n"
 "Language-Team: GNOME Indonesian Translation Team <gnome@i15n.org>\n"
 "MIME-Version: 1.0\n"
@@ -27,20 +26,26 @@
 msgid "Unexpected attribute '%s' for element '%s'"
 msgstr "Atribut '%s' yang tak diduga bagi elemen '%s'"
 
-#: ../glib/gbookmarkfile.c:791 ../glib/gbookmarkfile.c:862
-#: ../glib/gbookmarkfile.c:872 ../glib/gbookmarkfile.c:979
+#: ../glib/gbookmarkfile.c:791
+#: ../glib/gbookmarkfile.c:862
+#: ../glib/gbookmarkfile.c:872
+#: ../glib/gbookmarkfile.c:979
 #, c-format
 msgid "Attribute '%s' of element '%s' not found"
 msgstr "Atribut '%s' dari elemen '%s' tak ditemukan"
 
-#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1214
-#: ../glib/gbookmarkfile.c:1278 ../glib/gbookmarkfile.c:1288
+#: ../glib/gbookmarkfile.c:1149
+#: ../glib/gbookmarkfile.c:1214
+#: ../glib/gbookmarkfile.c:1278
+#: ../glib/gbookmarkfile.c:1288
 #, c-format
 msgid "Unexpected tag '%s', tag '%s' expected"
 msgstr "Tag '%s' yang tak diduga, diharapkan tag '%s'"
 
-#: ../glib/gbookmarkfile.c:1174 ../glib/gbookmarkfile.c:1188
-#: ../glib/gbookmarkfile.c:1256 ../glib/gbookmarkfile.c:1308
+#: ../glib/gbookmarkfile.c:1174
+#: ../glib/gbookmarkfile.c:1188
+#: ../glib/gbookmarkfile.c:1256
+#: ../glib/gbookmarkfile.c:1308
 #, c-format
 msgid "Unexpected tag '%s' inside '%s'"
 msgstr "Tag '%s' yang tak diduga di dalam '%s'"
@@ -54,14 +59,22 @@
 msgid "A bookmark for URI '%s' already exists"
 msgstr "Penanda buku bagi URI '%s' telah ada"
 
-#: ../glib/gbookmarkfile.c:2081 ../glib/gbookmarkfile.c:2239
-#: ../glib/gbookmarkfile.c:2324 ../glib/gbookmarkfile.c:2404
-#: ../glib/gbookmarkfile.c:2489 ../glib/gbookmarkfile.c:2572
-#: ../glib/gbookmarkfile.c:2650 ../glib/gbookmarkfile.c:2729
-#: ../glib/gbookmarkfile.c:2771 ../glib/gbookmarkfile.c:2868
-#: ../glib/gbookmarkfile.c:2994 ../glib/gbookmarkfile.c:3184
-#: ../glib/gbookmarkfile.c:3260 ../glib/gbookmarkfile.c:3425
-#: ../glib/gbookmarkfile.c:3514 ../glib/gbookmarkfile.c:3604
+#: ../glib/gbookmarkfile.c:2081
+#: ../glib/gbookmarkfile.c:2239
+#: ../glib/gbookmarkfile.c:2324
+#: ../glib/gbookmarkfile.c:2404
+#: ../glib/gbookmarkfile.c:2489
+#: ../glib/gbookmarkfile.c:2572
+#: ../glib/gbookmarkfile.c:2650
+#: ../glib/gbookmarkfile.c:2729
+#: ../glib/gbookmarkfile.c:2771
+#: ../glib/gbookmarkfile.c:2868
+#: ../glib/gbookmarkfile.c:2994
+#: ../glib/gbookmarkfile.c:3184
+#: ../glib/gbookmarkfile.c:3260
+#: ../glib/gbookmarkfile.c:3425
+#: ../glib/gbookmarkfile.c:3514
+#: ../glib/gbookmarkfile.c:3604
 #: ../glib/gbookmarkfile.c:3732
 #, c-format
 msgid "No bookmark found for URI '%s'"
@@ -82,7 +95,8 @@
 msgid "No groups set in bookmark for URI '%s'"
 msgstr "Grup tak ditata di penanda buku bagi URI '%s'"
 
-#: ../glib/gbookmarkfile.c:3278 ../glib/gbookmarkfile.c:3435
+#: ../glib/gbookmarkfile.c:3278
+#: ../glib/gbookmarkfile.c:3435
 #, c-format
 msgid "No application with name '%s' registered a bookmark for '%s'"
 msgstr "Tak ada aplikasi dengan nama '%s' mendaftarkan penanda buku bagi '%s'"
@@ -92,32 +106,46 @@
 msgid "Failed to expand exec line '%s' with URI '%s'"
 msgstr "Gagal mengembangkan baris eksekusi '%s' dengan URI '%s'"
 
-#: ../glib/gconvert.c:567 ../glib/gconvert.c:645 ../glib/giochannel.c:1403
+#: ../glib/gconvert.c:567
+#: ../glib/gconvert.c:645
+#: ../glib/giochannel.c:1403
 #: ../gio/gcharsetconverter.c:458
 #, c-format
 msgid "Conversion from character set '%s' to '%s' is not supported"
 msgstr "Konversi dari gugus karakter '%s' ke '%s' tak didukung"
 
-#: ../glib/gconvert.c:571 ../glib/gconvert.c:649
+#: ../glib/gconvert.c:571
+#: ../glib/gconvert.c:649
 #: ../gio/gcharsetconverter.c:462
 #, c-format
 msgid "Could not open converter from '%s' to '%s'"
 msgstr "Tidak dapat membuka pengubah dari '%s' ke '%s'"
 
-#: ../glib/gconvert.c:768 ../glib/gconvert.c:1161 ../glib/giochannel.c:1575
-#: ../glib/giochannel.c:1617 ../glib/giochannel.c:2461 ../glib/gutf8.c:992
-#: ../glib/gutf8.c:1447 ../gio/gcharsetconverter.c:345
+#: ../glib/gconvert.c:768
+#: ../glib/gconvert.c:1161
+#: ../glib/giochannel.c:1575
+#: ../glib/giochannel.c:1617
+#: ../glib/giochannel.c:2460
+#: ../glib/gutf8.c:992
+#: ../glib/gutf8.c:1447
+#: ../gio/gcharsetconverter.c:345
 msgid "Invalid byte sequence in conversion input"
 msgstr "Rangkaian byte dalam input konversi tidak benar"
 
-#: ../glib/gconvert.c:776 ../glib/gconvert.c:1086 ../glib/giochannel.c:1582
-#: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350
+#: ../glib/gconvert.c:776
+#: ../glib/gconvert.c:1086
+#: ../glib/giochannel.c:1582
+#: ../glib/giochannel.c:2472
+#: ../gio/gcharsetconverter.c:350
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Galat ketika konversi: %s"
 
-#: ../glib/gconvert.c:808 ../glib/gutf8.c:988 ../glib/gutf8.c:1198
-#: ../glib/gutf8.c:1339 ../glib/gutf8.c:1443
+#: ../glib/gconvert.c:808
+#: ../glib/gutf8.c:988
+#: ../glib/gutf8.c:1198
+#: ../glib/gutf8.c:1339
+#: ../glib/gutf8.c:1443
 msgid "Partial character sequence at end of input"
 msgstr "Rangkaian karakter sebagian pada akhir input"
 
@@ -386,139 +414,143 @@
 msgid "Sun"
 msgstr "Min"
 
-#: ../glib/gdir.c:115 ../glib/gdir.c:138
+#: ../glib/gdir.c:115
+#: ../glib/gdir.c:138
 #, c-format
 msgid "Error opening directory '%s': %s"
 msgstr "Galat ketika membuka direktori '%s': %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540
+#: ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "Tidak dapat mengalokasikan %lu byte untuk membaca berkas \"%s\""
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Galat ketika membaca berkas '%s': %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "Berkas \"%s\" terlalu besar"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Gagal membaca dari berkas '%s': %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703
+#: ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Gagal membuka berkas '%s': %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720
+#: ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "Gagal saat mengambil atribut berkas '%s': fstat() gagal: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Gagal saat membuka berkas '%s': fdopen() gagal: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr ""
-"Gagal untuk mengubah nama berkas '%s' menjadi '%s': g_rename() gagal: %s"
+msgstr "Gagal untuk mengubah nama berkas '%s' menjadi '%s': g_rename() gagal: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904
+#: ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Gagal membuat berkas '%s': %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "Gagal untuk membuka berkas '%s' untuk menulis: fdopen() gagal: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Gagal untuk menulis berkas '%s': fwrite() gagal: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Gagal untuk menulis berkas '%s': fflush() gagal: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Gagal untuk menulis berkas '%s': fsync() gagal: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Gagal untuk menutup berkas '%s': fclose() gagal: '%s'"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "Berkas '%s' tidak dapat dibuang: g_unlink() gagal: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "Palet '%s' tidak sah, seharusnya tidak mengandung '%s'"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "Palet '%s' tidak memuat XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bita"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Gagal saat membaca taut simbolik '%s': %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "Taut simbolik tidak didukung"
 
@@ -529,15 +561,16 @@
 
 #: ../glib/giochannel.c:1752
 msgid "Can't do a raw read in g_io_channel_read_line_string"
-msgstr ""
-"Tidak dapat melakukan proses baca mentah di g_io_channel_read_line_string"
+msgstr "Tidak dapat melakukan proses baca mentah di g_io_channel_read_line_string"
 
-#: ../glib/giochannel.c:1799 ../glib/giochannel.c:2057
-#: ../glib/giochannel.c:2144
+#: ../glib/giochannel.c:1799
+#: ../glib/giochannel.c:2056
+#: ../glib/giochannel.c:2143
 msgid "Leftover unconverted data in read buffer"
 msgstr "Ada data tersisa yang belum dikonversi pada penyangga read"
 
-#: ../glib/giochannel.c:1880 ../glib/giochannel.c:1957
+#: ../glib/giochannel.c:1880
+#: ../glib/giochannel.c:1957
 msgid "Channel terminates in a partial character"
 msgstr "Kanal terputus pada karakter sebagian"
 
@@ -555,12 +588,14 @@
 msgid "Failed to map file '%s': mmap() failed: %s"
 msgstr "Gagal saat memetakan berkas '%s': mmap() gagal: %s"
 
-#: ../glib/gmarkup.c:307 ../glib/gmarkup.c:347
+#: ../glib/gmarkup.c:307
+#: ../glib/gmarkup.c:347
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Galat pada baris %d karakter ke-%d: "
 
-#: ../glib/gmarkup.c:367 ../glib/gmarkup.c:445
+#: ../glib/gmarkup.c:367
+#: ../glib/gmarkup.c:445
 #, c-format
 msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
 msgstr "Teks UTF-8 dalam nama tak valid - bukan '%s' yang valid"
@@ -582,35 +617,21 @@
 
 #: ../glib/gmarkup.c:582
 #, c-format
-msgid ""
-"Failed to parse '%-.*s', which should have been a digit inside a character "
-"reference (&#234; for example) - perhaps the digit is too large"
-msgstr ""
-"Gagal saat mengurai '%-.*s'. yang seharusnya sebuah digit dalam referensi "
-"karakter (misalnya &#234;) - mungkin digitnya terlalu besar"
+msgid "Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for example) - perhaps the digit is too large"
+msgstr "Gagal saat mengurai '%-.*s'. yang seharusnya sebuah digit dalam referensi karakter (misalnya &#234;) - mungkin digitnya terlalu besar"
 
 #: ../glib/gmarkup.c:594
-msgid ""
-"Character reference did not end with a semicolon; most likely you used an "
-"ampersand character without intending to start an entity - escape ampersand "
-"as &amp;"
-msgstr ""
-"Referensi karakter tidak diakhiri dengan titik koma; Mungkin Anda sedang "
-"menggunakan karakter ampersand tanpa bermaksud menjadikannya sebagai "
-"entitas. Silakan gunakan &amp; saja"
+msgid "Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp;"
+msgstr "Referensi karakter tidak diakhiri dengan titik koma; Mungkin Anda sedang menggunakan karakter ampersand tanpa bermaksud menjadikannya sebagai entitas. Silakan gunakan &amp; saja"
 
 #: ../glib/gmarkup.c:620
 #, c-format
 msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr ""
-"Referensi karakter '%-.*s' tidak mengencodekan karakter yang diperbolehkan"
+msgstr "Referensi karakter '%-.*s' tidak mengencodekan karakter yang diperbolehkan"
 
 #: ../glib/gmarkup.c:658
-msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
-msgstr ""
-"Ada entitas '&;' yang kosong; Entitas yang benar antara lain adalah: &amp; "
-"&quot; &lt; &gt; &apos;"
+msgid "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+msgstr "Ada entitas '&;' yang kosong; Entitas yang benar antara lain adalah: &amp; &quot; &lt; &gt; &apos;"
 
 #: ../glib/gmarkup.c:666
 #, c-format
@@ -618,13 +639,8 @@
 msgstr "Nama entitas '%-.*s' tak dikenal"
 
 #: ../glib/gmarkup.c:671
-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;"
-msgstr ""
-"Entitas tidak diakhiri dengan titik koma. Mungkin Anda menggunakan karakter "
-"ampersand tanpa bermaksud menjadikannya sebagai entitas - silakan pakai "
-"&amp; saja"
+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;"
+msgstr "Entitas tidak diakhiri dengan titik koma. Mungkin Anda menggunakan karakter ampersand tanpa bermaksud menjadikannya sebagai entitas - silakan pakai &amp; saja"
 
 #: ../glib/gmarkup.c:1018
 msgid "Document must begin with an element (e.g. <book>)"
@@ -632,67 +648,38 @@
 
 #: ../glib/gmarkup.c:1058
 #, c-format
-msgid ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
-"element name"
-msgstr ""
-"'%s' bukanlah karakter yang benar bila diikuti dengan karakter '<'. Ini "
-"tidak boleh menjadi nama elemen"
+msgid "'%s' is not a valid character following a '<' character; it may not begin an element name"
+msgstr "'%s' bukanlah karakter yang benar bila diikuti dengan karakter '<'. Ini tidak boleh menjadi nama elemen"
 
 #: ../glib/gmarkup.c:1126
 #, c-format
-msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag '%"
-"s'"
-msgstr ""
-"Ada karakter aneh '%s', seharusnya ada '>' untuk mengakhiri tag elemen "
-"kosong '%s'"
+msgid "Odd character '%s', expected a '>' character to end the empty-element tag '%s'"
+msgstr "Ada karakter aneh '%s', seharusnya ada '>' untuk mengakhiri tag elemen kosong '%s'"
 
 #: ../glib/gmarkup.c:1210
 #, c-format
-msgid ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
-msgstr ""
-"Ada karakter aneh '%s'. Seharusnya ada karakter '=' setelah nama atribut '%"
-"s' pada elemen '%s'"
+msgid "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+msgstr "Ada karakter aneh '%s'. Seharusnya ada karakter '=' setelah nama atribut '%s' pada elemen '%s'"
 
 #: ../glib/gmarkup.c:1251
 #, c-format
-msgid ""
-"Odd character '%s', expected a '>' or '/' character to end the start tag of "
-"element '%s', or optionally an attribute; perhaps you used an invalid "
-"character in an attribute name"
-msgstr ""
-"Ada karakter aneh '%s'. Seharusnya ada '>' atau '/' untuk mengakhiri tag "
-"padaelemen '%s', atau bisa juga ada atribut lain. Mungkin Anda menggunakan "
-"karakter yang tidak diperbolehkan pada nama atribut."
+msgid "Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an attribute; perhaps you used an invalid character in an attribute name"
+msgstr "Ada karakter aneh '%s'. Seharusnya ada '>' atau '/' untuk mengakhiri tag padaelemen '%s', atau bisa juga ada atribut lain. Mungkin Anda menggunakan karakter yang tidak diperbolehkan pada nama atribut."
 
 #: ../glib/gmarkup.c:1295
 #, c-format
-msgid ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
-msgstr ""
-"Ada karakter aneh '%s'. Seharusnya ada tanda kutip buka setelah tanda sama "
-"dengan saat memberikan nilai atribut '%s' pada elemen '%s'"
+msgid "Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of element '%s'"
+msgstr "Ada karakter aneh '%s'. Seharusnya ada tanda kutip buka setelah tanda sama dengan saat memberikan nilai atribut '%s' pada elemen '%s'"
 
 #: ../glib/gmarkup.c:1429
 #, c-format
-msgid ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
-"begin an element name"
-msgstr ""
-"'%s' bukan karakter yang benar bila diikuti dengan karakter '</'. Karena itu "
-"'%s' tidak boleh dijadikan awal nama elemen"
+msgid "'%s' is not a valid character following the characters '</'; '%s' may not begin an element name"
+msgstr "'%s' bukan karakter yang benar bila diikuti dengan karakter '</'. Karena itu '%s' tidak boleh dijadikan awal nama elemen"
 
 #: ../glib/gmarkup.c:1465
 #, c-format
-msgid ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
-msgstr ""
-"'%s' bukan karakter yang benar bila diikuti elemen penutup '%s'. Karakter "
-"yang diperbolehkan adalah '>'"
+msgid "'%s' is not a valid character following the close element name '%s'; the allowed character is '>'"
+msgstr "'%s' bukan karakter yang benar bila diikuti elemen penutup '%s'. Karakter yang diperbolehkan adalah '>'"
 
 #: ../glib/gmarkup.c:1476
 #, c-format
@@ -710,26 +697,18 @@
 
 #: ../glib/gmarkup.c:1666
 msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr ""
-"Dokumen terpotong tidak sempurna sesaat setelah membuka kurung siku '<'"
+msgstr "Dokumen terpotong tidak sempurna sesaat setelah membuka kurung siku '<'"
 
-#: ../glib/gmarkup.c:1674 ../glib/gmarkup.c:1719
+#: ../glib/gmarkup.c:1674
+#: ../glib/gmarkup.c:1719
 #, c-format
-msgid ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
-"element opened"
-msgstr ""
-"Dokumen terpotong tidak sempurna dengan elemen yang masih terbuka - '%s' "
-"adalah elemen terakhir yang dibuka"
+msgid "Document ended unexpectedly with elements still open - '%s' was the last element opened"
+msgstr "Dokumen terpotong tidak sempurna dengan elemen yang masih terbuka - '%s' adalah elemen terakhir yang dibuka"
 
 #: ../glib/gmarkup.c:1682
 #, c-format
-msgid ""
-"Document ended unexpectedly, expected to see a close angle bracket ending "
-"the tag <%s/>"
-msgstr ""
-"Dokumen terpotong tidak sempurna, seharusnya ada kurung siku penutup untuk "
-"mengakhiri tag <%s/>"
+msgid "Document ended unexpectedly, expected to see a close angle bracket ending the tag <%s/>"
+msgstr "Dokumen terpotong tidak sempurna, seharusnya ada kurung siku penutup untuk mengakhiri tag <%s/>"
 
 #: ../glib/gmarkup.c:1688
 msgid "Document ended unexpectedly inside an element name"
@@ -744,12 +723,8 @@
 msgstr "Dokumen terpotong tidak sempurna di dalam tag pembukaan elemen."
 
 #: ../glib/gmarkup.c:1705
-msgid ""
-"Document ended unexpectedly after the equals sign following an attribute "
-"name; no attribute value"
-msgstr ""
-"Dokumen terpotong tidak sempurna setelah tanda sama dengan mengikuti nama "
-"atribut. Tidak ada nilai atribut yang diperoleh"
+msgid "Document ended unexpectedly after the equals sign following an attribute name; no attribute value"
+msgstr "Dokumen terpotong tidak sempurna setelah tanda sama dengan mengikuti nama atribut. Tidak ada nilai atribut yang diperoleh"
 
 #: ../glib/gmarkup.c:1712
 msgid "Document ended unexpectedly while inside an attribute value"
@@ -762,9 +737,7 @@
 
 #: ../glib/gmarkup.c:1734
 msgid "Document ended unexpectedly inside a comment or processing instruction"
-msgstr ""
-"Dokumen terpotong tidak sempurna di dalam keterangan atau instruksi "
-"pemrosesan"
+msgstr "Dokumen terpotong tidak sempurna di dalam keterangan atau instruksi pemrosesan"
 
 #: ../glib/gregex.c:188
 msgid "corrupted object"
@@ -782,11 +755,13 @@
 msgid "backtracking limit reached"
 msgstr "batas pelacakan balik tercapai"
 
-#: ../glib/gregex.c:209 ../glib/gregex.c:217
+#: ../glib/gregex.c:209
+#: ../glib/gregex.c:217
 msgid "the pattern contains items not supported for partial matching"
 msgstr "pola memuat butir yang tak didukung bagi pencocokan sebagian"
 
-#: ../glib/gregex.c:211 ../gio/glocalfile.c:2109
+#: ../glib/gregex.c:211
+#: ../gio/glocalfile.c:2109
 msgid "internal error"
 msgstr "kesalahan internal"
 
@@ -824,8 +799,7 @@
 
 #: ../glib/gregex.c:269
 msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-msgstr ""
-"escape pengubah huruf besar kecil (\\l, \\L, \\u, \\U) tak diijinkan di sini"
+msgstr "escape pengubah huruf besar kecil (\\l, \\L, \\u, \\U) tak diijinkan di sini"
 
 #: ../glib/gregex.c:272
 msgid "numbers out of order in {} quantifier"
@@ -979,11 +953,8 @@
 msgstr "opsi NEWLINE tak konsisten"
 
 #: ../glib/gregex.c:390
-msgid ""
-"\\g is not followed by a braced name or an optionally braced non-zero number"
-msgstr ""
-"\\g tak diikuti oleh nama dalam kurung atau tambahan angka bukan nol dalam "
-"kurung"
+msgid "\\g is not followed by a braced name or an optionally braced non-zero number"
+msgstr "\\g tak diikuti oleh nama dalam kurung atau tambahan angka bukan nol dalam kurung"
 
 #: ../glib/gregex.c:395
 msgid "unexpected repeat"
@@ -1001,7 +972,8 @@
 msgid "previously-checked referenced subpattern not found"
 msgstr "sub pola yang diacu yang sebelumnya diperiksa tak ditemukan"
 
-#: ../glib/gregex.c:579 ../glib/gregex.c:1700
+#: ../glib/gregex.c:579
+#: ../glib/gregex.c:1700
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Galat saat mencocokkan ekspresi reguler %s: %s"
@@ -1071,22 +1043,17 @@
 
 #: ../glib/gshell.c:181
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
-msgstr ""
-"Tanda kutip kurang satu pada perintah atau pada teks yang dikutip dari shell "
-"lain"
+msgstr "Tanda kutip kurang satu pada perintah atau pada teks yang dikutip dari shell lain"
 
 #: ../glib/gshell.c:559
 #, c-format
 msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr ""
-"Teks berakhir saat setelah karakter '\\' dijumpai. (Teksnya adalah '%s')"
+msgstr "Teks berakhir saat setelah karakter '\\' dijumpai. (Teksnya adalah '%s')"
 
 #: ../glib/gshell.c:566
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was '%s')"
-msgstr ""
-"Teks berakhir sebelum tanda kutip pasangannya ditemukan untuk %c.  (Tesknya "
-"adalah '%s')"
+msgstr "Teks berakhir sebelum tanda kutip pasangannya ditemukan untuk %c.  (Tesknya adalah '%s')"
 
 #: ../glib/gshell.c:578
 msgid "Text was empty (or contained only whitespace)"
@@ -1096,23 +1063,27 @@
 msgid "Failed to read data from child process"
 msgstr "Gagal untuk membaca data dari proses child"
 
-#: ../glib/gspawn-win32.c:299 ../glib/gspawn.c:1486
+#: ../glib/gspawn-win32.c:299
+#: ../glib/gspawn.c:1486
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr ""
-"Gagal saat membuat pipe untuk sarana  komunikasi dengan proses child (%s)"
+msgstr "Gagal saat membuat pipe untuk sarana  komunikasi dengan proses child (%s)"
 
-#: ../glib/gspawn-win32.c:338 ../glib/gspawn-win32.c:346 ../glib/gspawn.c:1145
+#: ../glib/gspawn-win32.c:338
+#: ../glib/gspawn-win32.c:346
+#: ../glib/gspawn.c:1145
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Gagal saat membaca dari pipe child (%s)"
 
-#: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1352
+#: ../glib/gspawn-win32.c:369
+#: ../glib/gspawn.c:1352
 #, c-format
 msgid "Failed to change to directory '%s' (%s)"
 msgstr "Gagal saat mengganti direktori ke '%s' (%s)"
 
-#: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494
+#: ../glib/gspawn-win32.c:375
+#: ../glib/gspawn-win32.c:494
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Gagal saat menjalankan proses child (%s)"
@@ -1122,19 +1093,22 @@
 msgid "Invalid program name: %s"
 msgstr "Nama program salah: %s"
 
-#: ../glib/gspawn-win32.c:454 ../glib/gspawn-win32.c:722
+#: ../glib/gspawn-win32.c:454
+#: ../glib/gspawn-win32.c:722
 #: ../glib/gspawn-win32.c:1278
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "String tidak benar pada vektor argumen pada %d: %s"
 
-#: ../glib/gspawn-win32.c:465 ../glib/gspawn-win32.c:737
+#: ../glib/gspawn-win32.c:465
+#: ../glib/gspawn-win32.c:737
 #: ../glib/gspawn-win32.c:1311
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "String tidak benar pada variabel lingkungan: %s"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259
+#: ../glib/gspawn-win32.c:718
+#: ../glib/gspawn-win32.c:1259
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Direktori aktif salah: %s"
@@ -1145,12 +1119,8 @@
 msgstr "Gagal saat menjalankan program bantuan (%s)"
 
 #: ../glib/gspawn-win32.c:997
-msgid ""
-"Unexpected error in g_io_channel_win32_poll() reading data from a child "
-"process"
-msgstr ""
-"Terjadi galat pada g_io_channel_win32_poll() ketika membaca data dari anak "
-"proses"
+msgid "Unexpected error in g_io_channel_win32_poll() reading data from a child process"
+msgstr "Terjadi galat pada g_io_channel_win32_poll() ketika membaca data dari anak proses"
 
 #: ../glib/gspawn.c:196
 #, c-format
@@ -1160,8 +1130,7 @@
 #: ../glib/gspawn.c:335
 #, c-format
 msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Terjadi galat pada fungsi select() ketika membaca data dari anak proses (%s)"
+msgstr "Terjadi galat pada fungsi select() ketika membaca data dari anak proses (%s)"
 
 #: ../glib/gspawn.c:420
 #, c-format
@@ -1202,12 +1171,17 @@
 msgid "Character out of range for UTF-8"
 msgstr "Karakter di luar jangkauan UTF-8"
 
-#: ../glib/gutf8.c:1166 ../glib/gutf8.c:1175 ../glib/gutf8.c:1307
-#: ../glib/gutf8.c:1316 ../glib/gutf8.c:1457 ../glib/gutf8.c:1553
+#: ../glib/gutf8.c:1166
+#: ../glib/gutf8.c:1175
+#: ../glib/gutf8.c:1307
+#: ../glib/gutf8.c:1316
+#: ../glib/gutf8.c:1457
+#: ../glib/gutf8.c:1553
 msgid "Invalid sequence in conversion input"
 msgstr "Rangkaian input konversi salah"
 
-#: ../glib/gutf8.c:1468 ../glib/gutf8.c:1564
+#: ../glib/gutf8.c:1468
+#: ../glib/gutf8.c:1564
 msgid "Character out of range for UTF-16"
 msgstr "Karakter di luar jangkauan UTF-16"
 
@@ -1235,12 +1209,14 @@
 msgid "Application Options:"
 msgstr "Opsi Aplikasi:"
 
-#: ../glib/goption.c:997 ../glib/goption.c:1067
+#: ../glib/goption.c:997
+#: ../glib/goption.c:1067
 #, c-format
 msgid "Cannot parse integer value '%s' for %s"
 msgstr "Tidak dapat menguraikan nilai integer '%s' untuk %s"
 
-#: ../glib/goption.c:1007 ../glib/goption.c:1075
+#: ../glib/goption.c:1007
+#: ../glib/goption.c:1075
 #, c-format
 msgid "Integer value '%s' for %s out of range"
 msgstr "Nilai integer '%s' untuk %s di luar jangkauan"
@@ -1255,12 +1231,14 @@
 msgid "Double value '%s' for %s out of range"
 msgstr "Nilai double '%s' untuk %s di luar jangkauan"
 
-#: ../glib/goption.c:1303 ../glib/goption.c:1382
+#: ../glib/goption.c:1303
+#: ../glib/goption.c:1382
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Galat saat mengurai opsi %s"
 
-#: ../glib/goption.c:1413 ../glib/goption.c:1527
+#: ../glib/goption.c:1413
+#: ../glib/goption.c:1527
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Argumen untuk %s tidak lengkap"
@@ -1284,11 +1262,8 @@
 
 #: ../glib/gkeyfile.c:764
 #, c-format
-msgid ""
-"Key file contains line '%s' which is not a key-value pair, group, or comment"
-msgstr ""
-"Berkas kunci berisi baris '%s' yang bukan pasangan nilai kunci, kelompok "
-"atau komentar"
+msgid "Key file contains line '%s' which is not a key-value pair, group, or comment"
+msgstr "Berkas kunci berisi baris '%s' yang bukan pasangan nilai kunci, kelompok atau komentar"
 
 #: ../glib/gkeyfile.c:824
 #, c-format
@@ -1309,9 +1284,15 @@
 msgid "Key file contains unsupported encoding '%s'"
 msgstr "Berkas kunci mengadung encoding yang tidak didukung '%s'"
 
-#: ../glib/gkeyfile.c:1115 ../glib/gkeyfile.c:1277 ../glib/gkeyfile.c:2656
-#: ../glib/gkeyfile.c:2722 ../glib/gkeyfile.c:2857 ../glib/gkeyfile.c:2990
-#: ../glib/gkeyfile.c:3143 ../glib/gkeyfile.c:3330 ../glib/gkeyfile.c:3391
+#: ../glib/gkeyfile.c:1115
+#: ../glib/gkeyfile.c:1277
+#: ../glib/gkeyfile.c:2656
+#: ../glib/gkeyfile.c:2722
+#: ../glib/gkeyfile.c:2857
+#: ../glib/gkeyfile.c:2990
+#: ../glib/gkeyfile.c:3143
+#: ../glib/gkeyfile.c:3330
+#: ../glib/gkeyfile.c:3391
 #, c-format
 msgid "Key file does not have group '%s'"
 msgstr "Berkas kunci tidak memiliki kelompok '%s'"
@@ -1321,35 +1302,32 @@
 msgid "Key file does not have key '%s'"
 msgstr "Berkas kunci tidak memiliki kunci '%s'"
 
-#: ../glib/gkeyfile.c:1396 ../glib/gkeyfile.c:1511
+#: ../glib/gkeyfile.c:1396
+#: ../glib/gkeyfile.c:1511
 #, c-format
 msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
 msgstr "Berkas kunci mengandung kunci '%s' dengan nilai '%s' yang bukan UTF-8"
 
-#: ../glib/gkeyfile.c:1416 ../glib/gkeyfile.c:1910
+#: ../glib/gkeyfile.c:1416
+#: ../glib/gkeyfile.c:1910
 #, c-format
 msgid "Key file contains key '%s' which has value that cannot be interpreted."
-msgstr ""
-"Berkas kunci mengandung kunci '%s' yang memiliki nilai yang tidak dapat "
-"diterjemahkan."
+msgstr "Berkas kunci mengandung kunci '%s' yang memiliki nilai yang tidak dapat diterjemahkan."
 
 #: ../glib/gkeyfile.c:1531
 #, c-format
-msgid ""
-"Key file contains key '%s' which has a value that cannot be interpreted."
-msgstr ""
-"Berkas kunci mengandung kunci '%s' yang nilainya tidak dapat diterjemahkan."
+msgid "Key file contains key '%s' which has a value that cannot be interpreted."
+msgstr "Berkas kunci mengandung kunci '%s' yang nilainya tidak dapat diterjemahkan."
 
-#: ../glib/gkeyfile.c:2125 ../glib/gkeyfile.c:2487
+#: ../glib/gkeyfile.c:2125
+#: ../glib/gkeyfile.c:2487
 #, c-format
-msgid ""
-"Key file contains key '%s' in group '%s' which has value that cannot be "
-"interpreted."
-msgstr ""
-"Berkas kunci mengandung kunci '%s' dalam kelompok '%s' yang memiliki nilai "
-"yang tidak dapat diterjemahkan."
+msgid "Key file contains key '%s' in group '%s' which has value that cannot be interpreted."
+msgstr "Berkas kunci mengandung kunci '%s' dalam kelompok '%s' yang memiliki nilai yang tidak dapat diterjemahkan."
 
-#: ../glib/gkeyfile.c:2671 ../glib/gkeyfile.c:2872 ../glib/gkeyfile.c:3402
+#: ../glib/gkeyfile.c:2671
+#: ../glib/gkeyfile.c:2872
+#: ../glib/gkeyfile.c:3402
 #, c-format
 msgid "Key file does not have key '%s' in group '%s'"
 msgstr "Berkas kunci tidak memiliki kunci '%s' pada kelompok '%s'"
@@ -1383,23 +1361,32 @@
 msgid "Value '%s' cannot be interpreted as a boolean."
 msgstr "Nilai '%s' tidak dapat diterjemahkan sebagai suatu nilai boolean."
 
-#: ../gio/gbufferedinputstream.c:411 ../gio/gbufferedinputstream.c:492
-#: ../gio/ginputstream.c:185 ../gio/ginputstream.c:317
-#: ../gio/ginputstream.c:556 ../gio/ginputstream.c:681
-#: ../gio/goutputstream.c:198 ../gio/goutputstream.c:725
+#: ../gio/gbufferedinputstream.c:411
+#: ../gio/gbufferedinputstream.c:492
+#: ../gio/ginputstream.c:185
+#: ../gio/ginputstream.c:317
+#: ../gio/ginputstream.c:556
+#: ../gio/ginputstream.c:680
+#: ../gio/goutputstream.c:198
+#: ../gio/goutputstream.c:726
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "Nilai cacah yang dilewatkan ke %s terlalu besar"
 
-#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:891
-#: ../gio/giostream.c:306 ../gio/goutputstream.c:1200
+#: ../gio/gbufferedinputstream.c:881
+#: ../gio/ginputstream.c:888
+#: ../gio/giostream.c:306
+#: ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "Stream telah ditutup"
 
-#: ../gio/gcancellable.c:432 ../gio/gdbusconnection.c:1642
-#: ../gio/gdbusconnection.c:1731 ../gio/gdbusconnection.c:1913
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:755
-#: ../gio/gsimpleasyncresult.c:781
+#: ../gio/gcancellable.c:433
+#: ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726
+#: ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102
+#: ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Operasi dibatalkan"
 
@@ -1407,15 +1394,18 @@
 msgid "Invalid object, not initialized"
 msgstr "Objek tak valid, tak diinisialisasi"
 
-#: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312
+#: ../gio/gcharsetconverter.c:284
+#: ../gio/gcharsetconverter.c:312
 msgid "Incomplete multibyte sequence in input"
 msgstr "Rangkaian byte tak lengkap dalam input"
 
-#: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327
+#: ../gio/gcharsetconverter.c:318
+#: ../gio/gcharsetconverter.c:327
 msgid "Not enough space in destination"
 msgstr "Tak cukup ruang di tujuan"
 
-#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:810
+#: ../gio/gcharsetconverter.c:447
+#: ../gio/gsocket.c:832
 msgid "Cancellable initialization not supported"
 msgstr "Inisialisasi yang dapat dibatalkan tak didukung"
 
@@ -1433,7 +1423,8 @@
 msgid "%s type"
 msgstr "tipe %s"
 
-#: ../gio/gcredentials.c:246 ../gio/gcredentials.c:441
+#: ../gio/gcredentials.c:246
+#: ../gio/gcredentials.c:441
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials tak diimplementasikan di OS ini"
 
@@ -1445,7 +1436,8 @@
 msgid "Unexpected early end-of-stream"
 msgstr "Akhir stream terlalu dini, tak diharapkan"
 
-#: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230
+#: ../gio/gdbusaddress.c:142
+#: ../gio/gdbusaddress.c:230
 #: ../gio/gdbusaddress.c:304
 #, c-format
 msgid "Unsupported key `%s' in address entry `%s'"
@@ -1453,23 +1445,22 @@
 
 #: ../gio/gdbusaddress.c:169
 #, c-format
-msgid ""
-"Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
-msgstr ""
-"Alamat '%s' tak valid (perlu hanya salah satu dari path, tmpdir, atau kunci "
-"abstrak)"
+msgid "Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
+msgstr "Alamat '%s' tak valid (perlu hanya salah satu dari path, tmpdir, atau kunci abstrak)"
 
 #: ../gio/gdbusaddress.c:182
 #, c-format
 msgid "Meaningless key/value pair combination in address entry `%s'"
 msgstr "Kombinasi pasangan kunci/nilai tanpa arti di entri alamat '%s'"
 
-#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:319
+#: ../gio/gdbusaddress.c:245
+#: ../gio/gdbusaddress.c:319
 #, c-format
 msgid "Error in address `%s' - the port attribute is malformed"
 msgstr "Galat di alamat '%s' - atribut port salah bentuk"
 
-#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:330
+#: ../gio/gdbusaddress.c:256
+#: ../gio/gdbusaddress.c:330
 #, c-format
 msgid "Error in address `%s' - the family attribute is malformed"
 msgstr "Galat di alamat '%s' - atribut family salah bentuk"
@@ -1481,30 +1472,18 @@
 
 #: ../gio/gdbusaddress.c:455
 #, c-format
-msgid ""
-"Key/Value pair %d, `%s', in address element `%s', does not contain an equal "
-"sign"
-msgstr ""
-"Pasangan kunci/nilai %d, '%s', di elemen alamat '%s' tak memuat tanda sama "
-"dengan"
+msgid "Key/Value pair %d, `%s', in address element `%s', does not contain an equal sign"
+msgstr "Pasangan kunci/nilai %d, '%s', di elemen alamat '%s' tak memuat tanda sama dengan"
 
 #: ../gio/gdbusaddress.c:469
 #, c-format
-msgid ""
-"Error unescaping key or value in Key/Value pair %d, `%s', in address element "
-"`%s'"
-msgstr ""
-"Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, '%s', "
-"dalam elemen alamat '%s'"
+msgid "Error unescaping key or value in Key/Value pair %d, `%s', in address element `%s'"
+msgstr "Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, '%s', dalam elemen alamat '%s'"
 
 #: ../gio/gdbusaddress.c:547
 #, c-format
-msgid ""
-"Error in address `%s' - the unix transport requires exactly one of the keys "
-"`path' or `abstract' to be set"
-msgstr ""
-"Galat di alamat '%s' - transport unix memerlukan hanya satu dari kunci "
-"`path' atau `abstract' untuk ditata"
+msgid "Error in address `%s' - the unix transport requires exactly one of the keys `path' or `abstract' to be set"
+msgstr "Galat di alamat '%s' - transport unix memerlukan hanya satu dari kunci `path' atau `abstract' untuk ditata"
 
 #: ../gio/gdbusaddress.c:583
 #, c-format
@@ -1550,53 +1529,46 @@
 msgid "Error writing contents of nonce file `%s' to stream:"
 msgstr "Galat saat menulis isi dari berkas nonce '%s' ke stream:"
 
-#: ../gio/gdbusaddress.c:942
+#: ../gio/gdbusaddress.c:939
 msgid "The given address is empty"
 msgstr "Tidak ada alamat yang diberikan"
 
-#: ../gio/gdbusaddress.c:1011
+#: ../gio/gdbusaddress.c:1008
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Tidak bisa spawn suatu bus pesan tanpa id-mesin:"
 
-#: ../gio/gdbusaddress.c:1048
+#: ../gio/gdbusaddress.c:1045
 #, c-format
 msgid "Error spawning command line `%s': "
 msgstr "Galat saat membaca berkas nonce '%s':"
 
-#: ../gio/gdbusaddress.c:1059
+#: ../gio/gdbusaddress.c:1056
 #, c-format
 msgid "Abnormal program termination spawning command line `%s': %s"
 msgstr "Akhir program tidak normal saat spawn perintah baris '%s': %s"
 
-#: ../gio/gdbusaddress.c:1073
+#: ../gio/gdbusaddress.c:1070
 #, c-format
 msgid "Command line `%s' exited with non-zero exit status %d: %s"
 msgstr "Baris perintah `%s' berakhir dengan status tidak nol %d: %s"
 
-#: ../gio/gdbusaddress.c:1146
+#: ../gio/gdbusaddress.c:1143
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
-msgstr ""
-"Tidak bisa menentukan alamat bus sesi (tidak diimplementasi bagi OS ini)"
+msgstr "Tidak bisa menentukan alamat bus sesi (tidak diimplementasi bagi OS ini)"
 
-#: ../gio/gdbusaddress.c:1245 ../gio/gdbusconnection.c:6151
+#: ../gio/gdbusaddress.c:1242
+#: ../gio/gdbusconnection.c:6168
 #, c-format
-msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value `%s'"
-msgstr ""
-"Tak bisa menentukan alamat bus dari variabel lingkungan "
-"DBUS_STARTER_BUS_TYPE - nilai tak dikenal '%s'"
+msgid "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable - unknown value `%s'"
+msgstr "Tak bisa menentukan alamat bus dari variabel lingkungan DBUS_STARTER_BUS_TYPE - nilai tak dikenal '%s'"
 
-#: ../gio/gdbusaddress.c:1254 ../gio/gdbusconnection.c:6160
-msgid ""
-"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
-"variable is not set"
-msgstr ""
-"Tak bisa menentukan alamat bus karena variabel lingkungan "
-"DBUS_STARTER_BUS_TYPE tak diisi"
+#: ../gio/gdbusaddress.c:1251
+#: ../gio/gdbusconnection.c:6177
+msgid "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set"
+msgstr "Tak bisa menentukan alamat bus karena variabel lingkungan DBUS_STARTER_BUS_TYPE tak diisi"
 
-#: ../gio/gdbusaddress.c:1264
+#: ../gio/gdbusaddress.c:1261
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipe bus %d tak dikenal"
@@ -1607,16 +1579,12 @@
 
 #: ../gio/gdbusauth.c:332
 msgid "Unexpected lack of content trying to (safely) read a line"
-msgstr ""
-"Ketiadaan isi yang tak diharapkan ketika membaca suatu baris (secara aman)"
+msgstr "Ketiadaan isi yang tak diharapkan ketika membaca suatu baris (secara aman)"
 
 #: ../gio/gdbusauth.c:503
 #, c-format
-msgid ""
-"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
-msgstr ""
-"Menghabiskan semua mekanisme otentikasi yang tersedia (dicoba: %s) "
-"(tersedia: %s)"
+msgid "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
+msgstr "Menghabiskan semua mekanisme otentikasi yang tersedia (dicoba: %s) (tersedia: %s)"
 
 #: ../gio/gdbusauth.c:1150
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
@@ -1629,10 +1597,8 @@
 
 #: ../gio/gdbusauthmechanismsha1.c:278
 #, c-format
-msgid ""
-"Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o"
-msgstr ""
-"Ijin pada direktori '%s' salah bentuk. Diharapkan mode 0700, diperoleh 0%o"
+msgid "Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o"
+msgstr "Ijin pada direktori '%s' salah bentuk. Diharapkan mode 0700, diperoleh 0%o"
 
 #: ../gio/gdbusauthmechanismsha1.c:299
 #, c-format
@@ -1644,26 +1610,23 @@
 msgid "Error opening keyring `%s' for reading: "
 msgstr "Galat saat membuka gantungan kunci '%s' untuk dibaca:"
 
-#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:715
+#: ../gio/gdbusauthmechanismsha1.c:406
+#: ../gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Line %d of the keyring at `%s' with content `%s' is malformed"
 msgstr "Baris %d dari gantungan kunci pada '%s' dengan isi '%s' salah bentuk"
 
-#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:729
+#: ../gio/gdbusauthmechanismsha1.c:420
+#: ../gio/gdbusauthmechanismsha1.c:729
 #, c-format
-msgid ""
-"First token of line %d of the keyring at `%s' with content `%s' is malformed"
-msgstr ""
-"Token pertama dari baris %d dari gantungan kunci pada '%s' dengan isi '%s' "
-"salah bentuk"
+msgid "First token of line %d of the keyring at `%s' with content `%s' is malformed"
+msgstr "Token pertama dari baris %d dari gantungan kunci pada '%s' dengan isi '%s' salah bentuk"
 
-#: ../gio/gdbusauthmechanismsha1.c:434 ../gio/gdbusauthmechanismsha1.c:743
+#: ../gio/gdbusauthmechanismsha1.c:434
+#: ../gio/gdbusauthmechanismsha1.c:743
 #, c-format
-msgid ""
-"Second token of line %d of the keyring at `%s' with content `%s' is malformed"
-msgstr ""
-"Token kedua dari baris %d dari gantungan kunci pada '%s' dengan isi '%s' "
-"salah bentuk"
+msgid "Second token of line %d of the keyring at `%s' with content `%s' is malformed"
+msgstr "Token kedua dari baris %d dari gantungan kunci pada '%s' dengan isi '%s' salah bentuk"
 
 #: ../gio/gdbusauthmechanismsha1.c:458
 #, c-format
@@ -1700,89 +1663,89 @@
 msgid "(Additionally, releasing the lock for `%s' also failed: %s) "
 msgstr "(Selain itu, melepas kunci bagi '%s' juga gagal: %s)"
 
-#: ../gio/gdbusconnection.c:1151 ../gio/gdbusconnection.c:1380
-#: ../gio/gdbusconnection.c:1419 ../gio/gdbusconnection.c:1742
+#: ../gio/gdbusconnection.c:1148
+#: ../gio/gdbusconnection.c:1374
+#: ../gio/gdbusconnection.c:1413
+#: ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "Sambungan tertutup"
 
-#: ../gio/gdbusconnection.c:1686
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Kehabisan waktu"
 
 #: ../gio/gdbusconnection.c:2300
-msgid ""
-"Unsupported flags encountered when constructing a client-side connection"
-msgstr ""
-"Ditemui flag yang tak didukung ketika membangun sambungan di sisi klien"
+msgid "Unsupported flags encountered when constructing a client-side connection"
+msgstr "Ditemui flag yang tak didukung ketika membangun sambungan di sisi klien"
 
-#: ../gio/gdbusconnection.c:3734 ../gio/gdbusconnection.c:4052
+#: ../gio/gdbusconnection.c:3752
+#: ../gio/gdbusconnection.c:4070
 #, c-format
-msgid ""
-"No such interface `org.freedesktop.DBus.Properties' on object at path %s"
-msgstr ""
-"Tidak ada antarmuka `org.freedesktop.DBus.Properties' pada objek di lokasi %s"
+msgid "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
+msgstr "Tidak ada antarmuka `org.freedesktop.DBus.Properties' pada objek di lokasi %s"
 
-#: ../gio/gdbusconnection.c:3806
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
-msgstr ""
-"Galat menata properti '%s': Tipe yang diharapkan '%s' tapi diperoleh '%s'"
+msgstr "Galat menata properti '%s': Tipe yang diharapkan '%s' tapi diperoleh '%s'"
 
-#: ../gio/gdbusconnection.c:3901
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "Tak ada properti '%s'"
 
-#: ../gio/gdbusconnection.c:3913
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "Properti '%s' tidak dapat dibaca"
 
-#: ../gio/gdbusconnection.c:3924
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "Properti '%s' tidak dapat ditulisi"
 
-#: ../gio/gdbusconnection.c:3994 ../gio/gdbusconnection.c:5585
+#: ../gio/gdbusconnection.c:4012
+#: ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "Tak ada antar muka '%s'"
 
-#: ../gio/gdbusconnection.c:4182
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "Tak ada antar muka begitu"
 
-#: ../gio/gdbusconnection.c:4398 ../gio/gdbusconnection.c:6101
+#: ../gio/gdbusconnection.c:4416
+#: ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr "Tak ada antar muka '%s' pada objek di lokasi %s"
 
-#: ../gio/gdbusconnection.c:4450
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "Tak ada metoda '%s'"
 
-#: ../gio/gdbusconnection.c:4481
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr "Tipe pesan '%s' tak cocok dengan tipe yang diharapkan '%s'"
 
-#: ../gio/gdbusconnection.c:4700
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Suatu objek telah diekspor bagi antar muka %s pada %s"
 
-#: ../gio/gdbusconnection.c:4894
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr "Metoda '%s' mengembalikan tipe '%s', tapi yang diharapkan '%s'"
 
-#: ../gio/gdbusconnection.c:5696
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr "Metoda '%s' pada antar muka '%s' dengan tanda tangan '%s' tak ada"
 
-#: ../gio/gdbusconnection.c:5814
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Subtree telah diekspor bagi %s"
@@ -1808,20 +1771,12 @@
 msgstr "Pesan SIGNAL: ruas header PATH, INTERFACE, atau MEMBER hilang"
 
 #: ../gio/gdbusmessage.c:911
-msgid ""
-"SIGNAL message: The PATH header field is using the reserved value /org/"
-"freedesktop/DBus/Local"
-msgstr ""
-"Pesan SIGNAL: ruas header PATH memakai nilai khusus /org/freedesktop/DBus/"
-"Local"
+msgid "SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local"
+msgstr "Pesan SIGNAL: ruas header PATH memakai nilai khusus /org/freedesktop/DBus/Local"
 
 #: ../gio/gdbusmessage.c:919
-msgid ""
-"SIGNAL message: The INTERFACE header field is using the reserved value org."
-"freedesktop.DBus.Local"
-msgstr ""
-"Pesan SIGNAL: ruas header INTERFACE memakai nilai khusus org.freedesktop."
-"DBus.Local"
+msgid "SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local"
+msgstr "Pesan SIGNAL: ruas header INTERFACE memakai nilai khusus org.freedesktop.DBus.Local"
 
 #: ../gio/gdbusmessage.c:994
 #, c-format
@@ -1830,13 +1785,8 @@
 
 #: ../gio/gdbusmessage.c:1019
 #, c-format
-msgid ""
-"Expected valid UTF-8 string but found invalid bytes at byte offset %d "
-"(length of string is %d). The valid UTF-8 string up until that point was `%s'"
-msgstr ""
-"Berharap string UTF-8 yang valid tapi menjumpai byte tak valid pada ofset %d "
-"(panjang string adalah %d). String UTF-8 yang valid sampai titik itu adalah "
-"'%s'"
+msgid "Expected valid UTF-8 string but found invalid bytes at byte offset %d (length of string is %d). The valid UTF-8 string up until that point was `%s'"
+msgstr "Berharap string UTF-8 yang valid tapi menjumpai byte tak valid pada ofset %d (panjang string adalah %d). String UTF-8 yang valid sampai titik itu adalah '%s'"
 
 #: ../gio/gdbusmessage.c:1032
 #, c-format
@@ -1855,11 +1805,8 @@
 
 #: ../gio/gdbusmessage.c:1311
 #, c-format
-msgid ""
-"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
-msgstr ""
-"Menjumpai larik dengan panjang %u byte. Panjang maksimum adalah 2<<26 byte "
-"(64 MiB). "
+msgid "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+msgstr "Menjumpai larik dengan panjang %u byte. Panjang maksimum adalah 2<<26 byte (64 MiB). "
 
 #: ../gio/gdbusmessage.c:1472
 #, c-format
@@ -1868,20 +1815,13 @@
 
 #: ../gio/gdbusmessage.c:1499
 #, c-format
-msgid ""
-"Error deserializing GVariant with type string `%s' from the D-Bus wire format"
-msgstr ""
-"Galat saat deserialisasi GVariant dengan type string '%s' dari format kabel "
-"D-Bus"
+msgid "Error deserializing GVariant with type string `%s' from the D-Bus wire format"
+msgstr "Galat saat deserialisasi GVariant dengan type string '%s' dari format kabel D-Bus"
 
 #: ../gio/gdbusmessage.c:1683
 #, c-format
-msgid ""
-"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
-"0x%02x"
-msgstr ""
-"Nilai ke-endian-an tak valid. Berharap 0x6c ('l') atau (0x42) 'B' tapi "
-"menemui 0x%02x"
+msgid "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value 0x%02x"
+msgstr "Nilai ke-endian-an tak valid. Berharap 0x6c ('l') atau (0x42) 'B' tapi menemui 0x%02x"
 
 #: ../gio/gdbusmessage.c:1697
 #, c-format
@@ -1891,8 +1831,7 @@
 #: ../gio/gdbusmessage.c:1754
 #, c-format
 msgid "Signature header with signature `%s' found but message body is empty"
-msgstr ""
-"Header tanda tangan dengan tanda tangan '%s' ditemukan tapi body pesan kosong"
+msgstr "Header tanda tangan dengan tanda tangan '%s' ditemukan tapi body pesan kosong"
 
 #: ../gio/gdbusmessage.c:1768
 #, c-format
@@ -1910,10 +1849,8 @@
 
 #: ../gio/gdbusmessage.c:2131
 #, c-format
-msgid ""
-"Error serializing GVariant with type string `%s' to the D-Bus wire format"
-msgstr ""
-"Kesalahan serialisasi GVariant dengan type string '%s' ke format kabel D-Bus"
+msgid "Error serializing GVariant with type string `%s' to the D-Bus wire format"
+msgstr "Kesalahan serialisasi GVariant dengan type string '%s' ke format kabel D-Bus"
 
 #: ../gio/gdbusmessage.c:2272
 #, c-format
@@ -1931,12 +1868,8 @@
 
 #: ../gio/gdbusmessage.c:2334
 #, c-format
-msgid ""
-"Message body has type signature `%s' but signature in the header field is `%"
-"s'"
-msgstr ""
-"Body pesan memiliki tanda tangan tipe '%s' tapi tanda tangan di ruas header "
-"adalah '(%s)'"
+msgid "Message body has type signature `%s' but signature in the header field is `%s'"
+msgstr "Body pesan memiliki tanda tangan tipe '%s' tapi tanda tangan di ruas header adalah '(%s)'"
 
 #: ../gio/gdbusmessage.c:2350
 #, c-format
@@ -1957,42 +1890,36 @@
 msgid "Type of return value is incorrect, got `%s', expected `%s'"
 msgstr "Tipe nilai balikan salah, mendapat '%s', mengharapkan '%s'"
 
-#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:2974
-#: ../gio/gsocket.c:3055
+#: ../gio/gdbusmethodinvocation.c:406
+#: ../gio/gsocket.c:3027
+#: ../gio/gsocket.c:3108
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: ../gio/gdbusprivate.c:1759
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "Tidak dapat memuat /var/lib/dbus/machine-id: "
 
 #: ../gio/gdbusproxy.c:714
 #, c-format
-msgid ""
-"Trying to set property %s of type %s but according to the expected interface "
-"the type is %s"
-msgstr ""
-"Mencoba menata properti %s bertipe %s tetapi menurut antar muka yang "
-"diharapkan tipenya adalah %s"
+msgid "Trying to set property %s of type %s but according to the expected interface the type is %s"
+msgstr "Mencoba menata properti %s bertipe %s tetapi menurut antar muka yang diharapkan tipenya adalah %s"
 
-#: ../gio/gdbusproxy.c:1235
+#: ../gio/gdbusproxy.c:1234
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Galat sewaktu memanggil StartServiceByName untuk %s: "
 
-#: ../gio/gdbusproxy.c:1256
+#: ../gio/gdbusproxy.c:1255
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Balasan tak diharapkan %d dari metode StartServiceByName(\"%s\")"
 
-#: ../gio/gdbusproxy.c:2315 ../gio/gdbusproxy.c:2472
-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"
-msgstr ""
-"Tidak bisa menjalankan metoda; proksi adalah nama terkenal tanpa pemilik dan "
-"proksi dibangun dengan flag G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
+#: ../gio/gdbusproxy.c:2311
+#: ../gio/gdbusproxy.c:2469
+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"
+msgstr "Tidak bisa menjalankan metoda; proksi adalah nama terkenal tanpa pemilik dan proksi dibangun dengan flag G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
 #: ../gio/gdbusserver.c:715
 msgid "Abstract name space not supported"
@@ -2038,16 +1965,21 @@
 "  monitor      Pantau suatu objek jauh\n"
 "  call         Jalankan suatu metode pada suatu objek jauh\n"
 "\n"
-"Gunakan \"%s PERINTAH --help\" untuk memperoleh bantuan pada setiap "
-"perintah.\n"
+"Gunakan \"%s PERINTAH --help\" untuk memperoleh bantuan pada setiap perintah.\n"
 
-#: ../gio/gdbus-tool.c:160 ../gio/gdbus-tool.c:216 ../gio/gdbus-tool.c:288
-#: ../gio/gdbus-tool.c:312 ../gio/gdbus-tool.c:814 ../gio/gdbus-tool.c:1324
+#: ../gio/gdbus-tool.c:160
+#: ../gio/gdbus-tool.c:216
+#: ../gio/gdbus-tool.c:288
+#: ../gio/gdbus-tool.c:312
+#: ../gio/gdbus-tool.c:814
+#: ../gio/gdbus-tool.c:1324
 #, c-format
 msgid "Error: %s\n"
 msgstr "Galat: %s\n"
 
-#: ../gio/gdbus-tool.c:171 ../gio/gdbus-tool.c:229 ../gio/gdbus-tool.c:1340
+#: ../gio/gdbus-tool.c:171
+#: ../gio/gdbus-tool.c:229
+#: ../gio/gdbus-tool.c:1340
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Galat saat mengurai XML introspeksi: %s\n"
@@ -2084,18 +2016,13 @@
 
 #: ../gio/gdbus-tool.c:459
 #, c-format
-msgid ""
-"Warning: According to introspection data, interface `%s' does not exist\n"
+msgid "Warning: According to introspection data, interface `%s' does not exist\n"
 msgstr "Peringatan: Menurut data introspeksi, antar muka '%s' tak ada\n"
 
 #: ../gio/gdbus-tool.c:468
 #, c-format
-msgid ""
-"Warning: According to introspection data, method `%s' does not exist on "
-"interface `%s'\n"
-msgstr ""
-"Peringatan: Menurut data introspeksi, metoda '%s' tak ada pada antar muka '%"
-"s'\n"
+msgid "Warning: According to introspection data, method `%s' does not exist on interface `%s'\n"
+msgstr "Peringatan: Menurut data introspeksi, metoda '%s' tak ada pada antar muka '%s'\n"
 
 #: ../gio/gdbus-tool.c:530
 msgid "Destination name to invoke method on"
@@ -2113,22 +2040,29 @@
 msgid "Invoke a method on a remote object."
 msgstr "Jalankan suatu metoda pada suatu objek jauh."
 
-#: ../gio/gdbus-tool.c:626 ../gio/gdbus-tool.c:1245 ../gio/gdbus-tool.c:1505
+#: ../gio/gdbus-tool.c:626
+#: ../gio/gdbus-tool.c:1245
+#: ../gio/gdbus-tool.c:1505
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Galat saat menyambung: %s\n"
 
-#: ../gio/gdbus-tool.c:646 ../gio/gdbus-tool.c:1264 ../gio/gdbus-tool.c:1524
+#: ../gio/gdbus-tool.c:646
+#: ../gio/gdbus-tool.c:1264
+#: ../gio/gdbus-tool.c:1524
 #, c-format
 msgid "Error: Destination is not specified\n"
 msgstr "Galat: Tujuan tak dinyatakan\n"
 
-#: ../gio/gdbus-tool.c:667 ../gio/gdbus-tool.c:1283
+#: ../gio/gdbus-tool.c:667
+#: ../gio/gdbus-tool.c:1283
 #, c-format
 msgid "Error: Object path is not specified\n"
 msgstr "Galat: Lokasi objek tak dinyatakan\n"
 
-#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1303 ../gio/gdbus-tool.c:1564
+#: ../gio/gdbus-tool.c:687
+#: ../gio/gdbus-tool.c:1303
+#: ../gio/gdbus-tool.c:1564
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Galat: '%s' bukan suatu lokasi objek yang valid\n"
@@ -2181,35 +2115,35 @@
 msgid "Monitor a remote object."
 msgstr "Memantau suatu objek jauh"
 
-#: ../gio/gdesktopappinfo.c:467 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480
+#: ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Tanpa nama"
 
-#: ../gio/gdesktopappinfo.c:751
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "Berkas desktop tak menyatakan ruas Exec"
 
-#: ../gio/gdesktopappinfo.c:944
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "Tak bisa temukan terminal yang diperlukan bagi aplikasi"
 
-#: ../gio/gdesktopappinfo.c:1153
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
-msgstr ""
-"Tak bisa membuat folder %s untuk konfigurasi aplikasi bagi pengguna: %s"
+msgstr "Tak bisa membuat folder %s untuk konfigurasi aplikasi bagi pengguna: %s"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Tak bisa membuat folder %s untuk konfigurasi MIME bagi pengguna: %s"
 
-#: ../gio/gdesktopappinfo.c:1565
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Tak bisa membuat berkas desktop pengguna %s"
 
-#: ../gio/gdesktopappinfo.c:1679
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definisi gubahan bagi %s"
@@ -2247,29 +2181,47 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Cacah token (%d) salah bentuk di pengkodean GEmblem"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Tak bisa menangani pengkodean versi %d dari GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Cacah token (%d) salah bentuk di pengkodean GEmblemedIcon"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Berharap suatu GEmblem bagi GEmblemedIcon"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5047 ../gio/gfile.c:5327 ../gio/gfile.c:5396
-#: ../gio/gfile.c:6988 ../gio/gfile.c:7078 ../gio/gfile.c:7164
+#: ../gio/gfile.c:872
+#: ../gio/gfile.c:1103
+#: ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475
+#: ../gio/gfile.c:1529
+#: ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669
+#: ../gio/gfile.c:1724
+#: ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838
+#: ../gio/gfile.c:3308
+#: ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494
+#: ../gio/gfile.c:3535
+#: ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264
+#: ../gio/gfile.c:4350
+#: ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537
+#: ../gio/gfile.c:4624
+#: ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039
+#: ../gio/gfile.c:5306
+#: ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945
+#: ../gio/gfile.c:7035
+#: ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Operasi tak didukung"
@@ -2282,58 +2234,63 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359
+#: ../gio/glocalfile.c:1059
+#: ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "Kait yang memuat tak ada"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412
+#: ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "Tak bisa menyalin atas direktori"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Tak bisa menyalin direktori atas direktori"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481
+#: ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "Berkas tujuan telah ada"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Tak bisa menyalin direktori secara rekursif"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Splice tidak didukung"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Galat saat men-splice berkas: %s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Tak bisa menyalin berkas spesial"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "Diberikan nilai link simbolik yang tak valid"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Tong sampah tak didukung"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Nama berkas tak boleh mengandung '%c'"
 
-#: ../gio/gfile.c:6045 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004
+#: ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "volume tak mengimplementasi pengaitan"
 
-#: ../gio/gfile.c:6156
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "Tak ada aplikasi terdaftar yang menangani berkas ini"
 
@@ -2341,12 +2298,15 @@
 msgid "Enumerator is closed"
 msgstr "Enumerator ditutup"
 
-#: ../gio/gfileenumerator.c:212 ../gio/gfileenumerator.c:271
-#: ../gio/gfileenumerator.c:371 ../gio/gfileenumerator.c:480
+#: ../gio/gfileenumerator.c:212
+#: ../gio/gfileenumerator.c:271
+#: ../gio/gfileenumerator.c:371
+#: ../gio/gfileenumerator.c:480
 msgid "File enumerator has outstanding operation"
 msgstr "Enumerator berkas memiliki operasi tertunda"
 
-#: ../gio/gfileenumerator.c:361 ../gio/gfileenumerator.c:470
+#: ../gio/gfileenumerator.c:361
+#: ../gio/gfileenumerator.c:470
 msgid "File enumerator is already closed"
 msgstr "Enumerator berkas telah ditutup"
 
@@ -2359,22 +2319,26 @@
 msgid "Malformed input data for GFileIcon"
 msgstr "Data masukan salah bentuk bagi GFileIcon"
 
-#: ../gio/gfileinputstream.c:154 ../gio/gfileinputstream.c:421
-#: ../gio/gfileiostream.c:170 ../gio/gfileoutputstream.c:169
-#: ../gio/gfileoutputstream.c:524
+#: ../gio/gfileinputstream.c:154
+#: ../gio/gfileinputstream.c:420
+#: ../gio/gfileiostream.c:170
+#: ../gio/gfileoutputstream.c:169
+#: ../gio/gfileoutputstream.c:523
 msgid "Stream doesn't support query_info"
 msgstr "Stream tak mendukung query_info"
 
-#: ../gio/gfileinputstream.c:336 ../gio/gfileiostream.c:388
-#: ../gio/gfileoutputstream.c:382
+#: ../gio/gfileinputstream.c:335
+#: ../gio/gfileiostream.c:387
+#: ../gio/gfileoutputstream.c:381
 msgid "Seek not supported on stream"
 msgstr "Seek tak didukung pada stream"
 
-#: ../gio/gfileinputstream.c:380
+#: ../gio/gfileinputstream.c:379
 msgid "Truncate not allowed on input stream"
 msgstr "Pemenggalan tak diijinkan pada stream masukan"
 
-#: ../gio/gfileiostream.c:464 ../gio/gfileoutputstream.c:458
+#: ../gio/gfileiostream.c:463
+#: ../gio/gfileoutputstream.c:457
 msgid "Truncate not supported on stream"
 msgstr "Pemenggalan tak didukung pada stream"
 
@@ -2422,12 +2386,14 @@
 #. 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:901 ../gio/giostream.c:316
-#: ../gio/goutputstream.c:1210
+#: ../gio/ginputstream.c:898
+#: ../gio/giostream.c:316
+#: ../gio/goutputstream.c:1207
 msgid "Stream has outstanding operation"
 msgstr "Stream memiliki operasi tertunda"
 
-#: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198
+#: ../gio/ginetsocketaddress.c:181
+#: ../gio/ginetsocketaddress.c:198
 #: ../gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
 msgstr "Tak cukup ruang bagi alamat soket"
@@ -2447,12 +2413,8 @@
 
 #: ../gio/glib-compile-schemas.c:735
 #, c-format
-msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and dash ('-') are permitted."
-msgstr ""
-"nama '%s' tak valid: karakter tak valid '%c'; hanya huruf kecil, angka, dan "
-"minus yang diijinkan."
+msgid "invalid name '%s': invalid character '%c'; only lowercase letters, numbers and dash ('-') are permitted."
+msgstr "nama '%s' tak valid: karakter tak valid '%c'; hanya huruf kecil, angka, dan minus yang diijinkan."
 
 #: ../gio/glib-compile-schemas.c:744
 #, c-format
@@ -2485,21 +2447,13 @@
 
 #: ../gio/glib-compile-schemas.c:885
 #, c-format
-msgid ""
-"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
-"to modify value"
-msgstr ""
-"<key name='%s'> membayangi <key name='%s'> di <schema id='%s'>; gunakan "
-"<override> untuk mengubah nilai"
+msgid "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value"
+msgstr "<key name='%s'> membayangi <key name='%s'> di <schema id='%s'>; gunakan <override> untuk mengubah nilai"
 
 #: ../gio/glib-compile-schemas.c:896
 #, c-format
-msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
-"to <key>"
-msgstr ""
-"persis satu dari 'type', 'enum', atau 'flags' mesti dinyatakan sebagai "
-"atribut dari <key>"
+msgid "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key>"
+msgstr "persis satu dari 'type', 'enum', atau 'flags' mesti dinyatakan sebagai atribut dari <key>"
 
 #: ../gio/glib-compile-schemas.c:915
 #, c-format
@@ -2552,25 +2506,18 @@
 
 #: ../gio/glib-compile-schemas.c:1108
 #, c-format
-msgid ""
-"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
-msgstr ""
-"<schema id='%s'> adalah daftar, memperluas <schema id='%s'> yang bukan daftar"
+msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr "<schema id='%s'> adalah daftar, memperluas <schema id='%s'> yang bukan daftar"
 
 #: ../gio/glib-compile-schemas.c:1118
 #, c-format
-msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
-msgstr ""
-"<schema id='%s' list-of='%s'> memperluas <schema id='%s' list-of='%s'> tapi "
-"'%s' tak memperluas '%s'"
+msgid "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s'"
+msgstr "<schema id='%s' list-of='%s'> memperluas <schema id='%s' list-of='%s'> tapi '%s' tak memperluas '%s'"
 
 #: ../gio/glib-compile-schemas.c:1135
 #, c-format
 msgid "a path, if given, must begin and end with a slash"
-msgstr ""
-"suatu path, bila diberikan, harus dimulai dan diakhiri dengan garis miring"
+msgstr "suatu path, bila diberikan, harus dimulai dan diakhiri dengan garis miring"
 
 #: ../gio/glib-compile-schemas.c:1142
 #, c-format
@@ -2582,115 +2529,104 @@
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> sudah ditentukan"
 
-#: ../gio/glib-compile-schemas.c:1385
+#: ../gio/glib-compile-schemas.c:1387
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Elemen <%s> tidak diijinkan di dalam <%s>"
 
-#: ../gio/glib-compile-schemas.c:1389
+#: ../gio/glib-compile-schemas.c:1391
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Elemen <%s> tidak diijinkan pada aras puncak"
 
-#: ../gio/glib-compile-schemas.c:1483
+#: ../gio/glib-compile-schemas.c:1485
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "teks tidak boleh muncul di dalam <%s>"
 
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1652 ../gio/glib-compile-schemas.c:1723
-#: ../gio/glib-compile-schemas.c:1799
+#: ../gio/glib-compile-schemas.c:1654
+#: ../gio/glib-compile-schemas.c:1725
+#: ../gio/glib-compile-schemas.c:1801
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr "--strict dinyatakan; keluar.\n"
 
-#: ../gio/glib-compile-schemas.c:1660
+#: ../gio/glib-compile-schemas.c:1662
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr "Seluruh berkas telah diabaikan.\n"
 
-#: ../gio/glib-compile-schemas.c:1719
+#: ../gio/glib-compile-schemas.c:1721
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr "Mengabaikan berkas ini.\n"
 
-#: ../gio/glib-compile-schemas.c:1759
+#: ../gio/glib-compile-schemas.c:1761
 #, c-format
 msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
-msgstr ""
-"Tak ada kunci '%s' dalam skema '%s' sebagaimana dinyatakan di berkas penimpa "
-"'%s'"
+msgstr "Tak ada kunci '%s' dalam skema '%s' sebagaimana dinyatakan di berkas penimpa '%s'"
 
-#: ../gio/glib-compile-schemas.c:1765 ../gio/glib-compile-schemas.c:1823
-#: ../gio/glib-compile-schemas.c:1851
+#: ../gio/glib-compile-schemas.c:1767
+#: ../gio/glib-compile-schemas.c:1825
+#: ../gio/glib-compile-schemas.c:1853
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr "; mengabaikan penimpaan kunci ini.\n"
 
-#: ../gio/glib-compile-schemas.c:1769 ../gio/glib-compile-schemas.c:1827
-#: ../gio/glib-compile-schemas.c:1855
+#: ../gio/glib-compile-schemas.c:1771
+#: ../gio/glib-compile-schemas.c:1829
+#: ../gio/glib-compile-schemas.c:1857
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr " dan --strict dinyatakan; keluar.\n"
 
-#: ../gio/glib-compile-schemas.c:1785
+#: ../gio/glib-compile-schemas.c:1787
 #, c-format
-#| msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
-msgid ""
-"error parsing key `%s' in schema `%s' as specified in override file `%s': %"
-"s.  "
-msgstr ""
-"galat mengurai kunci '%s' dalam skema '%s' sebagaimana dinyatakan di berkas "
-"penimpa '%s': %s."
+msgid "error parsing key `%s' in schema `%s' as specified in override file `%s': %s.  "
+msgstr "galat mengurai kunci '%s' dalam skema '%s' sebagaimana dinyatakan di berkas penimpa '%s': %s."
 
-#: ../gio/glib-compile-schemas.c:1795
+#: ../gio/glib-compile-schemas.c:1797
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr "Mengabaikan penimpaan bagi kunci ini.\n"
 
-#: ../gio/glib-compile-schemas.c:1813
+#: ../gio/glib-compile-schemas.c:1815
 #, c-format
-msgid ""
-"override for key `%s' in schema `%s' in override file `%s' is out of the "
-"range given in the schema"
-msgstr ""
-"penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' di luar "
-"jangkauan yang diberikan di dalam skema"
+msgid "override for key `%s' in schema `%s' in override file `%s' is out of the range given in the schema"
+msgstr "penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' di luar jangkauan yang diberikan di dalam skema"
 
-#: ../gio/glib-compile-schemas.c:1841
+#: ../gio/glib-compile-schemas.c:1843
 #, c-format
-msgid ""
-"override for key `%s' in schema `%s' in override file `%s' is not in the "
-"list of valid choices"
-msgstr ""
-"penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' tak ada di "
-"dalam daftar pilihan yang valid"
+msgid "override for key `%s' in schema `%s' in override file `%s' is not in the list of valid choices"
+msgstr "penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' tak ada di dalam daftar pilihan yang valid"
 
-#: ../gio/glib-compile-schemas.c:1895
+#: ../gio/glib-compile-schemas.c:1897
 msgid "where to store the gschemas.compiled file"
 msgstr "dimana menyimpan berkas gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:1895 ../gio/glib-compile-schemas.c:1908
+#: ../gio/glib-compile-schemas.c:1897
+#: ../gio/glib-compile-schemas.c:1910
 msgid "DIRECTORY"
 msgstr "DIREKTORI"
 
-#: ../gio/glib-compile-schemas.c:1896
+#: ../gio/glib-compile-schemas.c:1898
 msgid "Abort on any errors in schemas"
 msgstr "Gugurkan pada sebarang galat dalam skema"
 
-#: ../gio/glib-compile-schemas.c:1897
+#: ../gio/glib-compile-schemas.c:1899
 msgid "Do not write the gschema.compiled file"
 msgstr "Jangan menulis berkas gschema.compiled"
 
-#: ../gio/glib-compile-schemas.c:1898
+#: ../gio/glib-compile-schemas.c:1900
 msgid "This option will be removed soon."
 msgstr "Opsi ini akan segera dihapus."
 
-#: ../gio/glib-compile-schemas.c:1899
+#: ../gio/glib-compile-schemas.c:1901
 msgid "Do not enforce key name restrictions"
 msgstr "Jangan paksakan pembatasan nama kunci"
 
-#: ../gio/glib-compile-schemas.c:1911
+#: ../gio/glib-compile-schemas.c:1913
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2700,22 +2636,22 @@
 "Berkas skema diharuskan memiliki ekstensi .gschema.xml,\n"
 "dan berkas singgahan dinamai gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:1927
+#: ../gio/glib-compile-schemas.c:1929
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr "Anda mesti memberikan hanya satu nama direktori\n"
 
-#: ../gio/glib-compile-schemas.c:1966
+#: ../gio/glib-compile-schemas.c:1968
 #, c-format
 msgid "No schema files found: "
 msgstr "Tidak menemukan berkas skema: "
 
-#: ../gio/glib-compile-schemas.c:1969
+#: ../gio/glib-compile-schemas.c:1971
 #, c-format
 msgid "doing nothing.\n"
 msgstr "tak melakukan apapun.\n"
 
-#: ../gio/glib-compile-schemas.c:1972
+#: ../gio/glib-compile-schemas.c:1974
 #, c-format
 msgid "removed existing output file.\n"
 msgstr "menghapus berkas keluaran yang telah ada.\n"
@@ -2724,7 +2660,8 @@
 msgid "Unable to find default local directory monitor type"
 msgstr "Tak bisa temukan tipe pemantau direktori lokal baku"
 
-#: ../gio/glocalfile.c:593 ../gio/win32/gwinhttpfile.c:422
+#: ../gio/glocalfile.c:593
+#: ../gio/win32/gwinhttpfile.c:422
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Nama berkas tak valid: %s"
@@ -2738,7 +2675,8 @@
 msgid "Can't rename root directory"
 msgstr "Tak bisa mengubah nama direktori root"
 
-#: ../gio/glocalfile.c:1125 ../gio/glocalfile.c:1151
+#: ../gio/glocalfile.c:1125
+#: ../gio/glocalfile.c:1151
 #, c-format
 msgid "Error renaming file: %s"
 msgstr "Galat saat mengubah nama berkas: %s"
@@ -2747,9 +2685,13 @@
 msgid "Can't rename file, filename already exist"
 msgstr "Tak bisa mengubah nama berkas, nama telah dipakai"
 
-#: ../gio/glocalfile.c:1147 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2160
-#: ../gio/glocalfile.c:2320 ../gio/glocalfileoutputstream.c:571
-#: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669
+#: ../gio/glocalfile.c:1147
+#: ../gio/glocalfile.c:2131
+#: ../gio/glocalfile.c:2160
+#: ../gio/glocalfile.c:2320
+#: ../gio/glocalfileoutputstream.c:571
+#: ../gio/glocalfileoutputstream.c:624
+#: ../gio/glocalfileoutputstream.c:669
 #: ../gio/glocalfileoutputstream.c:1151
 msgid "Invalid filename"
 msgstr "Nama berkas tak valid"
@@ -2782,7 +2724,8 @@
 msgid "Unable to find toplevel directory for trash"
 msgstr "Tak bisa temukan direktori puncak bagi tong sampah"
 
-#: ../gio/glocalfile.c:1933 ../gio/glocalfile.c:1953
+#: ../gio/glocalfile.c:1933
+#: ../gio/glocalfile.c:1953
 msgid "Unable to find or create trash directory"
 msgstr "Tak bisa temukan atau buat direktori tong sampah"
 
@@ -2791,7 +2734,9 @@
 msgid "Unable to create trashing info file: %s"
 msgstr "Tak bis membuat berkas informasi pembuangan ke tong sampah: %s"
 
-#: ../gio/glocalfile.c:2016 ../gio/glocalfile.c:2021 ../gio/glocalfile.c:2101
+#: ../gio/glocalfile.c:2016
+#: ../gio/glocalfile.c:2021
+#: ../gio/glocalfile.c:2101
 #: ../gio/glocalfile.c:2108
 #, c-format
 msgid "Unable to trash file: %s"
@@ -2812,7 +2757,8 @@
 msgid "Error making symbolic link: %s"
 msgstr "Galat saat membuat taut simbolis: %s"
 
-#: ../gio/glocalfile.c:2230 ../gio/glocalfile.c:2324
+#: ../gio/glocalfile.c:2230
+#: ../gio/glocalfile.c:2324
 #, c-format
 msgid "Error moving file: %s"
 msgstr "Galat saat memindah berkas: %s"
@@ -2821,9 +2767,12 @@
 msgid "Can't move directory over directory"
 msgstr "Tak bisa memindah direktori atas direktori"
 
-#: ../gio/glocalfile.c:2280 ../gio/glocalfileoutputstream.c:949
-#: ../gio/glocalfileoutputstream.c:963 ../gio/glocalfileoutputstream.c:978
-#: ../gio/glocalfileoutputstream.c:994 ../gio/glocalfileoutputstream.c:1008
+#: ../gio/glocalfile.c:2280
+#: ../gio/glocalfileoutputstream.c:949
+#: ../gio/glocalfileoutputstream.c:963
+#: ../gio/glocalfileoutputstream.c:978
+#: ../gio/glocalfileoutputstream.c:994
+#: ../gio/glocalfileoutputstream.c:1008
 msgid "Backup file creation failed"
 msgstr "Pembuatan berkas cadangan gagal"
 
@@ -2853,7 +2802,8 @@
 msgid "Error setting extended attribute '%s': %s"
 msgstr "Galat saat menata atribut tambahan '%s': %s"
 
-#: ../gio/glocalfileinfo.c:1483 ../gio/glocalfileoutputstream.c:833
+#: ../gio/glocalfileinfo.c:1483
+#: ../gio/glocalfileoutputstream.c:833
 #, c-format
 msgid "Error stating file '%s': %s"
 msgstr "Galat saat men-stat berkas '%s': %s"
@@ -2875,7 +2825,8 @@
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipe atribut tak valid (diharapkan uint64)"
 
-#: ../gio/glocalfileinfo.c:1851 ../gio/glocalfileinfo.c:1870
+#: ../gio/glocalfileinfo.c:1851
+#: ../gio/glocalfileinfo.c:1870
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipe atribut tak valid (diharapkan string byte)"
 
@@ -2897,7 +2848,8 @@
 msgid "symlink must be non-NULL"
 msgstr "symlink tak boleh NULL"
 
-#: ../gio/glocalfileinfo.c:2005 ../gio/glocalfileinfo.c:2024
+#: ../gio/glocalfileinfo.c:2005
+#: ../gio/glocalfileinfo.c:2024
 #: ../gio/glocalfileinfo.c:2035
 #, c-format
 msgid "Error setting symlink: %s"
@@ -2930,19 +2882,23 @@
 msgid "Setting attribute %s not supported"
 msgstr "Penataan atribut %s tak didukung"
 
-#: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722
+#: ../gio/glocalfileinputstream.c:185
+#: ../gio/glocalfileoutputstream.c:722
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Galat saat membaca dari berkas: %s"
 
-#: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228
-#: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470
+#: ../gio/glocalfileinputstream.c:216
+#: ../gio/glocalfileinputstream.c:228
+#: ../gio/glocalfileinputstream.c:340
+#: ../gio/glocalfileoutputstream.c:470
 #: ../gio/glocalfileoutputstream.c:1026
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Galat saat men-seek di berkas: %s"
 
-#: ../gio/glocalfileinputstream.c:261 ../gio/glocalfileoutputstream.c:256
+#: ../gio/glocalfileinputstream.c:261
+#: ../gio/glocalfileoutputstream.c:256
 #: ../gio/glocalfileoutputstream.c:351
 #, c-format
 msgid "Error closing file: %s"
@@ -2952,7 +2908,8 @@
 msgid "Unable to find default local file monitor type"
 msgstr "Tak bisa temukan tipe pemantauan berkas lokal baku"
 
-#: ../gio/glocalfileoutputstream.c:202 ../gio/glocalfileoutputstream.c:235
+#: ../gio/glocalfileoutputstream.c:202
+#: ../gio/glocalfileoutputstream.c:235
 #: ../gio/glocalfileoutputstream.c:743
 #, c-format
 msgid "Error writing to file: %s"
@@ -2963,7 +2920,8 @@
 msgid "Error removing old backup link: %s"
 msgstr "Galat saat menghapus taut cadangan lama: %s"
 
-#: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310
+#: ../gio/glocalfileoutputstream.c:297
+#: ../gio/glocalfileoutputstream.c:310
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Galat saat membuat salinan cadangan: %s"
@@ -2973,14 +2931,18 @@
 msgid "Error renaming temporary file: %s"
 msgstr "Galat saat mengubah nama berkas sementara: %s"
 
-#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1077
+#: ../gio/glocalfileoutputstream.c:516
+#: ../gio/glocalfileoutputstream.c:1077
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Galat saat memenggal berkas: %s"
 
-#: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630
-#: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815
-#: ../gio/glocalfileoutputstream.c:1058 ../gio/glocalfileoutputstream.c:1157
+#: ../gio/glocalfileoutputstream.c:577
+#: ../gio/glocalfileoutputstream.c:630
+#: ../gio/glocalfileoutputstream.c:675
+#: ../gio/glocalfileoutputstream.c:815
+#: ../gio/glocalfileoutputstream.c:1058
+#: ../gio/glocalfileoutputstream.c:1157
 #, c-format
 msgid "Error opening file '%s': %s"
 msgstr "Galat saat membuka berkas '%s': %s"
@@ -3002,7 +2964,8 @@
 msgid "Error removing old file: %s"
 msgstr "Galat saat menghapus berkas lama: %s"
 
-#: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746
+#: ../gio/gmemoryinputstream.c:486
+#: ../gio/gmemoryoutputstream.c:746
 msgid "Invalid GSeekType supplied"
 msgstr "GSeekType yang tak valid diberikan"
 
@@ -3023,12 +2986,8 @@
 msgstr "Gagal mengubah ukuran memori stream keluaran"
 
 #: ../gio/gmemoryoutputstream.c:600
-msgid ""
-"Amount of memory required to process the write is larger than available "
-"address space"
-msgstr ""
-"Banyaknya memori yang diperlukan untuk memroses penulisan lebih besar "
-"daripada ruang tersedia"
+msgid "Amount of memory required to process the write is larger than available address space"
+msgstr "Banyaknya memori yang diperlukan untuk memroses penulisan lebih besar daripada ruang tersedia"
 
 #: ../gio/gmemoryoutputstream.c:756
 msgid "Requested seek before the beginning of the stream"
@@ -3092,11 +3051,13 @@
 msgid "Hostname '%s' contains '[' but not ']'"
 msgstr "Nama host '%s' memuat '[' tapi tanpa ']'"
 
-#: ../gio/goutputstream.c:207 ../gio/goutputstream.c:408
+#: ../gio/goutputstream.c:207
+#: ../gio/goutputstream.c:408
 msgid "Output stream doesn't implement write"
 msgstr "Stream keluaran tak mengimplementasi penulisan"
 
-#: ../gio/goutputstream.c:369 ../gio/goutputstream.c:849
+#: ../gio/goutputstream.c:369
+#: ../gio/goutputstream.c:849
 msgid "Source stream is already closed"
 msgstr "Stream sumber telah ditutup"
 
@@ -3110,137 +3071,377 @@
 msgid "Error reverse-resolving '%s': %s"
 msgstr "Galat saat mengurai balik '%s': %s"
 
-#: ../gio/gresolver.c:822 ../gio/gresolver.c:900
+#: ../gio/gresolver.c:822
+#: ../gio/gresolver.c:900
 #, c-format
 msgid "No service record for '%s'"
 msgstr "Tak ada catatan layanan bagi '%s'"
 
-#: ../gio/gresolver.c:827 ../gio/gresolver.c:905
+#: ../gio/gresolver.c:827
+#: ../gio/gresolver.c:905
 #, c-format
 msgid "Temporarily unable to resolve '%s'"
 msgstr "Sementara tidak dapat menguraikan '%s'"
 
-#: ../gio/gresolver.c:832 ../gio/gresolver.c:910
+#: ../gio/gresolver.c:832
+#: ../gio/gresolver.c:910
 #, c-format
 msgid "Error resolving '%s'"
 msgstr "Galat saat menguraikan '%s'"
 
-#: ../gio/gsocket.c:276
+#: ../gio/gsettings-tool.c:60
+#, c-format
+msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgstr "Skema '%s' tak dapat dipindahkan (path tak boleh dinyatakan)\n"
+
+#: ../gio/gsettings-tool.c:65
+#: ../gio/gsettings-tool.c:82
+#, c-format
+#| msgid "No such interface `%s'"
+msgid "No such schema '%s'\n"
+msgstr "Tak ada skema '%s'\n"
+
+#: ../gio/gsettings-tool.c:77
+#, c-format
+msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgstr "Skema '%s' dapat dipindahkan (path mesti dinyatakan)\n"
+
+#: ../gio/gsettings-tool.c:92
+#, c-format
+msgid "Empty path given.\n"
+msgstr "Path yang diberikan kosong.\n"
+
+#: ../gio/gsettings-tool.c:98
+#, c-format
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "Path must begin with a slash (/)\n"
+msgstr "Path harus dimulai dengan garis miring (/)\n"
+
+#: ../gio/gsettings-tool.c:104
+#, c-format
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "Path must end with a slash (/)\n"
+msgstr "Path harus diakhiri dengan garis miring (/)\n"
+
+#: ../gio/gsettings-tool.c:110
+#, c-format
+msgid "Path must not contain two adjacent slashes (//)\n"
+msgstr "Path tak boleh memuat dua slash berturutan (//)\n"
+
+#: ../gio/gsettings-tool.c:131
+#, c-format
+#| msgid "No such property `%s'"
+msgid "No such key '%s'\n"
+msgstr "Tak ada kunci '%s'\n"
+
+#: ../gio/gsettings-tool.c:429
+#, c-format
+msgid "The provided value is outside of the valid range\n"
+msgstr "Nilai yang diberikan diluar rentang yang valid\n"
+
+#: ../gio/gsettings-tool.c:458
+msgid "List the installed (non-relocatable) schemas"
+msgstr "Daftar skema (yang tak bisa dipindah) yang terpasang"
+
+#: ../gio/gsettings-tool.c:464
+msgid "List the installed relocatable schemas"
+msgstr "Daftar skema yang dapat dipindah yang terpasang"
+
+#: ../gio/gsettings-tool.c:470
+msgid "Lists the keys in SCHEMA"
+msgstr "Daftar kunci di SKEMA"
+
+#: ../gio/gsettings-tool.c:471
+#: ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
+msgid "SCHEMA[:PATH]"
+msgstr "SKEMA[:PATH]"
+
+#: ../gio/gsettings-tool.c:476
+msgid "Lists the children of SCHEMA"
+msgstr "Daftar anak dari SKEMA"
+
+#: ../gio/gsettings-tool.c:482
+msgid "List keys and values, recursively"
+msgstr "Daftar kunci dan nilai, secara rekursif"
+
+#: ../gio/gsettings-tool.c:488
+#| msgid "Get the value of KEY"
+msgid "Gets the value of KEY"
+msgstr "Ambil nilai dari KUNCI"
+
+#: ../gio/gsettings-tool.c:489
+#: ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507
+#: ../gio/gsettings-tool.c:513
+#| msgid "SCHEMA KEY"
+msgid "SCHEMA[:PATH] KEY"
+msgstr "SKEMA[:PATH] KUNCI"
+
+#: ../gio/gsettings-tool.c:494
+msgid "Queries the range of valid values for KEY"
+msgstr "Kueri rentang nilai yang valid bagi KUNCI"
+
+#: ../gio/gsettings-tool.c:500
+#| msgid "Set the value of KEY"
+msgid "Sets the value of KEY to VALUE"
+msgstr "Menata nilai KUNCI ke NILAI"
+
+#: ../gio/gsettings-tool.c:501
+#| msgid "SCHEMA KEY VALUE"
+msgid "SCHEMA[:PATH] KEY VALUE"
+msgstr "SKEMA[:PATH] KUNCI NILAI"
+
+#: ../gio/gsettings-tool.c:506
+#| msgid "Sets KEY to its default value"
+msgid "Resets KEY to its default value"
+msgstr "Menata KUNCI ke nilai bawaannya"
+
+#: ../gio/gsettings-tool.c:512
+#| msgid "Find out whether KEY is writable"
+msgid "Checks if KEY is writable"
+msgstr "Periksa apakah KUNCI dapat ditulisi"
+
+#: ../gio/gsettings-tool.c:518
+msgid ""
+"Monitors KEY for changes.\n"
+"If no KEY is specified, monitor all keys in SCHEMA.\n"
+"Use ^C to stop monitoring.\n"
+msgstr ""
+"Pantau perubahan atas KUNCI.\n"
+"Bila tak ada KUNCI yang dinyatakan, memantau semua kunci dalam SKEMA.\n"
+"Gunakan ^C untuk berhenti memantau.\n"
+
+#: ../gio/gsettings-tool.c:521
+#| msgid "SCHEMA KEY"
+msgid "SCHEMA[:PATH] [KEY]"
+msgstr "SKEMA[:PATH] [KUNCI]"
+
+#: ../gio/gsettings-tool.c:525
+#, c-format
+#| msgid "Unknown command '%s'\n"
+msgid ""
+"Unknown command %s\n"
+"\n"
+msgstr ""
+"Perintah tidak dikenal %s\n"
+"\n"
+
+#: ../gio/gsettings-tool.c:533
+msgid ""
+"Usage:\n"
+"  gsettings COMMAND [ARGS...]\n"
+"\n"
+"Commands:\n"
+"  help                      Show this information\n"
+"  list-schemas              List installed schemas\n"
+"  list-relocatable-schemas  List relocatable schemas\n"
+"  list-keys                 List keys in a schema\n"
+"  list-children             List children of a schema\n"
+"  list-recursively          List keys and values, recursively\n"
+"  range                     Queries the range of a key\n"
+"  get                       Get the value of a key\n"
+"  set                       Set the value of a key\n"
+"  reset                     Reset the value of a key\n"
+"  writable                  Check if a key is writable\n"
+"  monitor                   Watch for changes\n"
+"\n"
+"Use 'gsettings help COMMAND' to get detailed help.\n"
+"\n"
+msgstr ""
+"Cara pakai:\n"
+"  gsettings PERINTAH [ARG...]\n"
+"\n"
+"Perintah:\n"
+"  help                      Tampilkan informasi ini\n"
+"  list-schemas              Lihat daftar skema terpasang\n"
+"  list-relocatable-schemas  Lihat daftar skema yang dapat dipindah\n"
+"  list-keys                 Lihat daftar kunci dalam sebuah skema\n"
+"  list-children             Lihat daftar anak dari sebuah skema\n"
+"  list-recursively          Lihat daftar kunci dan nilai secara rekursif\n"
+"  range                     Kueri rentang dari suatu kunci\n"
+"  get                       Ambil nilai dari suatu kunci\n"
+"  set                       Atur nilai dari suatu kunci\n"
+"  reset                     Reset nilai dari suatu kunci\n"
+"  writable                  Periksa apakah suatu kunci dapat ditulisi\n"
+"  monitor                   Pantau perubahan\n"
+"\n"
+"Gunakan 'gsettings help PERINTAH' untuk memperoleh bantuan rinci.\n"
+"\n"
+
+#: ../gio/gsettings-tool.c:554
+#, c-format
+msgid ""
+"Usage:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
+msgstr ""
+"Cara pakai:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
+
+#: ../gio/gsettings-tool.c:559
+msgid "Arguments:\n"
+msgstr "Argumen:\n"
+
+#: ../gio/gsettings-tool.c:563
+#| msgid ""
+#| "Arguments:\n"
+#| "  SCHEMA      The id of the schema\n"
+#| "  KEY         The name of the key\n"
+msgid ""
+"  SCHEMA    The name of the schema\n"
+"  PATH      The path, for relocatable schemas\n"
+msgstr ""
+"  SKEMA     Nama skema\n"
+"  PATH      Path, bagi skema yang dapat dipindah\n"
+
+#: ../gio/gsettings-tool.c:568
+msgid "  KEY       The (optional) key within the schema\n"
+msgstr "  KUNCI     Kunci (opsional) dalam skema\n"
+
+#: ../gio/gsettings-tool.c:572
+msgid "  KEY       The key within the schema\n"
+msgstr "  KUNCI     Kunci dalam skema\n"
+
+#: ../gio/gsettings-tool.c:576
+msgid "  VALUE     The value to set\n"
+msgstr "  NILAI     Tatanan nilai\n"
+
+#: ../gio/gsettings-tool.c:652
+#, c-format
+msgid "Empty schema name given"
+msgstr "Nama skema yang diberikan kosong"
+
+#: ../gio/gsocket.c:277
 msgid "Invalid socket, not initialized"
 msgstr "Soket tak valid, tak diinisialisasi"
 
-#: ../gio/gsocket.c:283
+#: ../gio/gsocket.c:284
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Soket tak valid, inisialisasi gagal karena: %s"
 
-#: ../gio/gsocket.c:291
+#: ../gio/gsocket.c:292
 msgid "Socket is already closed"
 msgstr "Soket telah ditutup"
 
-#: ../gio/gsocket.c:299 ../gio/gsocket.c:2716 ../gio/gsocket.c:2760
+#: ../gio/gsocket.c:300
+#: ../gio/gsocket.c:2769
+#: ../gio/gsocket.c:2813
 msgid "Socket I/O timed out"
 msgstr "I/O soket kehabisan waktu"
 
-#: ../gio/gsocket.c:421
+#: ../gio/gsocket.c:443
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "membuat GSocket dari fd: %s"
 
-#: ../gio/gsocket.c:455 ../gio/gsocket.c:471 ../gio/gsocket.c:2113
+#: ../gio/gsocket.c:477
+#: ../gio/gsocket.c:493
+#: ../gio/gsocket.c:2135
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Tak bisa membuat soket: %s"
 
-#: ../gio/gsocket.c:455
+#: ../gio/gsocket.c:477
 msgid "Unknown protocol was specified"
 msgstr "Protokol tak dikenal dinyatakan"
 
-#: ../gio/gsocket.c:1224
+#: ../gio/gsocket.c:1246
 #, c-format
 msgid "could not get local address: %s"
 msgstr "tak bisa mendapat alamat lokal: %s"
 
-#: ../gio/gsocket.c:1267
+#: ../gio/gsocket.c:1289
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "tak bisa mendapat alamat jauh: %s"
 
-#: ../gio/gsocket.c:1328
+#: ../gio/gsocket.c:1350
 #, c-format
 msgid "could not listen: %s"
 msgstr "tak bisa mendengarkan: %s"
 
-#: ../gio/gsocket.c:1402
+#: ../gio/gsocket.c:1424
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Galat saat mengikat ke alamat: %s"
 
-#: ../gio/gsocket.c:1522
+#: ../gio/gsocket.c:1544
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Galat saat menerima sambungan: %s"
 
-#: ../gio/gsocket.c:1639
+#: ../gio/gsocket.c:1661
 msgid "Error connecting: "
 msgstr "Galat saat menyambung: "
 
-#: ../gio/gsocket.c:1644
+#: ../gio/gsocket.c:1666
 msgid "Connection in progress"
 msgstr "Penyambungan tengah berlangsung"
 
-#: ../gio/gsocket.c:1651
+#: ../gio/gsocket.c:1673
 #, c-format
 msgid "Error connecting: %s"
 msgstr "Galat saat menyambung: %s"
 
-#: ../gio/gsocket.c:1694 ../gio/gsocket.c:3479
+#: ../gio/gsocket.c:1716
+#: ../gio/gsocket.c:3532
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr "Tak bisa mendapat kesalahan yang tertunda: %s"
 
-#: ../gio/gsocket.c:1826
+#: ../gio/gsocket.c:1848
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Galat saat menerima data: %s"
 
-#: ../gio/gsocket.c:2000
+#: ../gio/gsocket.c:2022
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Galat saat mengirim data: %s"
 
-#: ../gio/gsocket.c:2192
+#: ../gio/gsocket.c:2214
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Galat saat menutup soket: %s"
 
-#: ../gio/gsocket.c:2709
+#: ../gio/gsocket.c:2762
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Menunggu kondisi soket: %s"
 
-#: ../gio/gsocket.c:2999
+#: ../gio/gsocket.c:3052
 msgid "GSocketControlMessage not supported on windows"
 msgstr "GSocketControlMessage tak didukung pada windows"
 
-#: ../gio/gsocket.c:3258 ../gio/gsocket.c:3399
+#: ../gio/gsocket.c:3311
+#: ../gio/gsocket.c:3452
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: ../gio/gsocket.c:3494
+#: ../gio/gsocket.c:3547
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials tidak diimplementasikan untuk OS ini"
 
-#: ../gio/gsocketclient.c:674 ../gio/gsocketclient.c:1153
+#: ../gio/gsocketclient.c:798
+#: ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Galat tak dikenal saat hubungan"
 
-#: ../gio/gsocketclient.c:711 ../gio/gsocketclient.c:1038
+#: ../gio/gsocketclient.c:836
+#: ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr "Mencoba proksi melalui koneksi bukan TCP tidak didukung."
 
-#: ../gio/gsocketclient.c:749 ../gio/gsocketclient.c:1061
+#: ../gio/gsocketclient.c:858
+#: ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "Protokol proksi '%s' tidak didukung."
@@ -3276,7 +3477,8 @@
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Koneksi melalui server SOCKSv4 ditolak"
 
-#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:328
+#: ../gio/gsocks5proxy.c:155
+#: ../gio/gsocks5proxy.c:328
 #: ../gio/gsocks5proxy.c:338
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr "Server bukan server proksi SOCKSv5."
@@ -3286,16 +3488,13 @@
 msgstr "Proksi SOCKv5 memerlukan otentikasi."
 
 #: ../gio/gsocks5proxy.c:179
-msgid ""
-"The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
+msgid "The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
 msgstr "SOCKSv5 memerlukan metoda otentikasi yang tidak didukung oleh GLib."
 
 #: ../gio/gsocks5proxy.c:208
 #, c-format
 msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)."
-msgstr ""
-"Nama pengguna atau kata sandi terlalu panjang bagi protokol SOCKSv5 (maks. %"
-"i)."
+msgstr "Nama pengguna atau kata sandi terlalu panjang bagi protokol SOCKSv5 (maks. %i)."
 
 #: ../gio/gsocks5proxy.c:239
 msgid "SOCKSv5 authentication failed due to wrong username or password."
@@ -3304,8 +3503,7 @@
 #: ../gio/gsocks5proxy.c:289
 #, c-format
 msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)"
-msgstr ""
-"Nama host '%s' terlalu panjang untuk protokol SOCKSv5 (maksimal %i bita)"
+msgstr "Nama host '%s' terlalu panjang untuk protokol SOCKSv5 (maksimal %i bita)"
 
 #: ../gio/gsocks5proxy.c:352
 msgid "The SOCKSv5 proxy server uses unkown address type."
@@ -3340,7 +3538,8 @@
 msgstr "Proksi SOCSKv5 tidak mendukung jenis alamat yang diberikan."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
+#| msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
 msgstr "Galat tak dikenal pada proksi SOCKSv5."
 
 #: ../gio/gthemedicon.c:498
@@ -3348,12 +3547,26 @@
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Tak bisa menangani pengkodean versi %d dari GThemedIcon"
 
-#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:505
+#: ../gio/gtlscertificate.c:228
+msgid "No PEM-encoded certificate found"
+msgstr "Tak ditemukan sertifika terenkode-PEM"
+
+#: ../gio/gtlscertificate.c:237
+msgid "Could not parse PEM-encoded certificate"
+msgstr "Tak bisa mengurai sertifikat terenkode-PEM"
+
+#: ../gio/gtlscertificate.c:258
+msgid "Could not parse PEM-encoded private key"
+msgstr "Tak bisa mengurai kunci privat terenkode-PEM"
+
+#: ../gio/gunixconnection.c:164
+#: ../gio/gunixconnection.c:505
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgstr "Mengharapkan 1 pesan kendali, memperoleh %d"
 
-#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:515
+#: ../gio/gunixconnection.c:177
+#: ../gio/gunixconnection.c:515
 msgid "Unexpected type of ancillary data"
 msgstr "Tipe yang tak diharapkan dari data ancillary"
 
@@ -3377,12 +3590,8 @@
 
 #: ../gio/gunixconnection.c:448
 #, c-format
-msgid ""
-"Unexpected option length while checking if SO_PASSCRED is enabled for "
-"socket. Expected %d bytes, got %d"
-msgstr ""
-"Panjang opsi yang tak diduga ketika memeriksa apakah SO_PASSCRED diaktifkan "
-"bagi soket. Berharap %d byte, mendapat %d"
+msgid "Unexpected option length while checking if SO_PASSCRED is enabled for socket. Expected %d bytes, got %d"
+msgstr "Panjang opsi yang tak diduga ketika memeriksa apakah SO_PASSCRED diaktifkan bagi soket. Berharap %d byte, mendapat %d"
 
 #: ../gio/gunixconnection.c:465
 #, c-format
@@ -3390,35 +3599,37 @@
 msgstr "Galat saat mengaktifkan SO_PASSCRED: %s"
 
 #: ../gio/gunixconnection.c:495
-msgid ""
-"Expecting to read a single byte for receiving credentials but read zero bytes"
-msgstr ""
-"Berharap membaca byte tunggal untuk penerimaan kredensial tapi membaca nol "
-"byte"
+msgid "Expecting to read a single byte for receiving credentials but read zero bytes"
+msgstr "Berharap membaca byte tunggal untuk penerimaan kredensial tapi membaca nol byte"
 
 #: ../gio/gunixconnection.c:538
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Galat ketika mematikan SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:353 ../gio/gunixinputstream.c:373
-#: ../gio/gunixinputstream.c:451
+#: ../gio/gunixinputstream.c:368
+#: ../gio/gunixinputstream.c:388
+#: ../gio/gunixinputstream.c:466
 #, c-format
 msgid "Error reading from unix: %s"
 msgstr "Galat saat membaca dari unix: %s"
 
-#: ../gio/gunixinputstream.c:406 ../gio/gunixinputstream.c:589
-#: ../gio/gunixoutputstream.c:393 ../gio/gunixoutputstream.c:545
+#: ../gio/gunixinputstream.c:421
+#: ../gio/gunixinputstream.c:601
+#: ../gio/gunixoutputstream.c:407
+#: ../gio/gunixoutputstream.c:556
 #, c-format
 msgid "Error closing unix: %s"
 msgstr "Galat saat menutup unix: %s"
 
-#: ../gio/gunixmounts.c:1846 ../gio/gunixmounts.c:1883
+#: ../gio/gunixmounts.c:1846
+#: ../gio/gunixmounts.c:1883
 msgid "Filesystem root"
 msgstr "Akar sistem berkas"
 
-#: ../gio/gunixoutputstream.c:339 ../gio/gunixoutputstream.c:360
-#: ../gio/gunixoutputstream.c:438
+#: ../gio/gunixoutputstream.c:353
+#: ../gio/gunixoutputstream.c:374
+#: ../gio/gunixoutputstream.c:452
 #, c-format
 msgid "Error writing to unix: %s"
 msgstr "Galat saat menulis ke unix: %s"
@@ -3464,7 +3675,8 @@
 msgid "Error reading from handle: %s"
 msgstr "Galat saat membaca dari handle: %s"
 
-#: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348
+#: ../gio/gwin32inputstream.c:348
+#: ../gio/gwin32outputstream.c:348
 #, c-format
 msgid "Error closing handle: %s"
 msgstr "Galat saat menutup handle: %s"
@@ -3474,16 +3686,19 @@
 msgid "Error writing to handle: %s"
 msgstr "Galat saat menulis ke handle: %s"
 
-#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349
+#: ../gio/gzlibcompressor.c:396
+#: ../gio/gzlibdecompressor.c:349
 msgid "Not enough memory"
 msgstr "Tidak cukup memori"
 
-#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356
+#: ../gio/gzlibcompressor.c:403
+#: ../gio/gzlibdecompressor.c:356
 #, c-format
 msgid "Internal error: %s"
 msgstr "Galat internal: %s"
 
-#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370
+#: ../gio/gzlibcompressor.c:416
+#: ../gio/gzlibdecompressor.c:370
 msgid "Need more input"
 msgstr "Perlu masukan lagi"
 
@@ -3522,27 +3737,6 @@
 #~ msgid "PATH"
 #~ msgstr "LOKASI"
 
-#~ msgid "SCHEMA KEY"
-#~ msgstr "KUNCI SKEMA"
-
-#~ msgid "Get the value of KEY"
-#~ msgstr "Ambil nilai dari KEY"
-
-#~ msgid ""
-#~ "Arguments:\n"
-#~ "  SCHEMA      The id of the schema\n"
-#~ "  KEY         The name of the key\n"
-#~ msgstr ""
-#~ "Argumen:\n"
-#~ "  SKEMA      Id dari skema\n"
-#~ "  KUNCI      Nama kunci\n"
-
-#~ msgid "SCHEMA KEY VALUE"
-#~ msgstr "SKEMA KUNCI NILAI"
-
-#~ msgid "Set the value of KEY"
-#~ msgstr "Menentukan nilai KUNCI"
-
 #~ msgid ""
 #~ "Arguments:\n"
 #~ "  SCHEMA      The id of the schema\n"
@@ -3558,18 +3752,9 @@
 #~ msgid "Key %s is not writable\n"
 #~ msgstr "Kunci %s tidak dapat ditulisi\n"
 
-#~ msgid "Sets KEY to its default value"
-#~ msgstr "Menata KEY ke nilai bawaannya"
-
-#~ msgid "Find out whether KEY is writable"
-#~ msgstr "Cari tahu apakah KEY dapat ditulisi"
-
 #~ msgid ""
 #~ "Monitor KEY for changes and print the changed values.\n"
 #~ "Monitoring will continue until the process is terminated."
 #~ msgstr ""
 #~ "Memantau perubahan KUNCI dan mencetak nilai yang berubah.\n"
 #~ "Pemantauan akan terus berlanjut hingga proses dihentikan."
-
-#~ msgid "Unknown command '%s'\n"
-#~ msgstr "Perintah tidak dikenal '%s'\n"
diff --git a/po/nb.po b/po/nb.po
index 88eaba2..d6ead5f 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,23 +1,26 @@
 # translation of nb.po to Norwegian Bokmal
 # Norwegian (bokmål) translation of glib.
 # Copyright (C) 2001-2003, 2005 Free Software Foundation, Inc.
+#
+#
 # Kjartan Maraas <kmaraas@gnome.org>, 2001-2010.
 # Terance Edward Sola <terance@lyse.net>, 2005.
-#
-#
+# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: glib 2.26.x\n"
-"Report-Msgid-Bugs-To:\n"
-"POT-Creation-Date: 2010-11-18 14:05+0100\n"
-"PO-Revision-Date: 2010-11-18 14:08+0100\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
-"Language:\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=glib&component=general\n"
+"POT-Creation-Date: 2010-12-21 12:55+0000\n"
+"PO-Revision-Date: 2010-12-30 21:24+0100\n"
+"Last-Translator: Torstein Adolf Winterseth <kvikende@fsfe.org>\n"
+"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.uio.no>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language:\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.1\n"
 
 #: ../glib/gbookmarkfile.c:780
 #, c-format
@@ -388,135 +391,134 @@
 msgid "Error opening directory '%s': %s"
 msgstr "Feil under åpning av katalog «%s»: %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "Kunne ikke allokere %lu bytes til lest fil «%s»"
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Feil under lesing av fil «%s»: %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "Fil «%s» er for stor"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Feil under lesing fra fil «%s»: %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Feil under åpning av fil «%s»: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "Feil ved uthenting av attributter for fil «%s»: fstat() feilet: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Feil under åpning av fil «%s»: fdopen() feilet: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr ""
-"Feil under endring av navn på filen «%s» til «%s»: g_rename() feilet: %s"
+msgstr "Feil under endring av navn på filen «%s» til «%s»: g_rename() feilet: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Feil under oppretting av fil «%s»: %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "Feil under åpning av filen «%s» for skriving: fdopen() feilet: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Kunne ikke skrive fil «%s»: fwrite() feilet: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Kunne ikke skrive fil «%s»: fflush() feilet: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Kunne ikke skrive fil «%s»: fsync() feilet: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Kunne ikke lukke fil «%s»: fclose() feilet: %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "Eksisterende fil «%s» kunne ikke bli fjernet: g_unlink() feilet: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "Mal «%s» er ugyldig, må ikke inneholde «%s»"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "Mal «%s» inneholder ikke XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Feil under lesing av symbolsk lenke «%s»: %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "Symbolske lenker er ikke støttet"
 
@@ -583,8 +585,8 @@
 "Failed to parse '%-.*s', which should have been a digit inside a character "
 "reference (&#234; for example) - perhaps the digit is too large"
 msgstr ""
-"Feil under lesing av «%-.*s», som skulle vært et tall inne i en "
-"tegnreferanse (&#234; for eksempel) - tallet er muligens for stort"
+"Feil under lesing av «%-.*s», som skulle vært et tall inne i en tegnreferanse "
+"(&#234; for eksempel) - tallet er muligens for stort"
 
 #: ../glib/gmarkup.c:594
 msgid ""
@@ -602,8 +604,7 @@
 msgstr "Tegnreferanse «%-.*s» koder ikke et tillatt tegn"
 
 #: ../glib/gmarkup.c:658
-msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+msgid "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
 "Tom entitet «&;» funnet; gyldige entiteter er: &amp; &quot; &lt; &gt; &apos;"
 
@@ -637,8 +638,8 @@
 #: ../glib/gmarkup.c:1126
 #, c-format
 msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag "
-"'%s'"
+"Odd character '%s', expected a '>' character to end the empty-element tag '%"
+"s'"
 msgstr ""
 "Rart tegn «%s», forventet et «>» tegn for å avslutte start-taggen til det "
 "tomme elementet «%s»"
@@ -647,8 +648,7 @@
 #, c-format
 msgid ""
 "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
-msgstr ""
-"Rart tegn «%s», forventet et «=» etter attributtnavn «%s» for element «%s»"
+msgstr "Rart tegn «%s», forventet et «=» etter attributtnavn «%s» for element «%s»"
 
 #: ../glib/gmarkup.c:1251
 #, c-format
@@ -916,7 +916,7 @@
 
 #: ../glib/gregex.c:348
 msgid "character value in \\x{...} sequence is too large"
-msgstr "tegnverdi i \\x{...} sekvens er for stor"
+msgstr "tegnverdi i \\x{…} sekvens er for stor"
 
 #: ../glib/gregex.c:351
 msgid "invalid condition (?(0)"
@@ -1073,8 +1073,7 @@
 #: ../glib/gshell.c:566
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was '%s')"
-msgstr ""
-"Teksten sluttet før likt sitattegn ble funnet for %c. (Teksten var «%s»)"
+msgstr "Teksten sluttet før likt sitattegn ble funnet for %c. (Teksten var «%s»)"
 
 #: ../glib/gshell.c:578
 msgid "Text was empty (or contained only whitespace)"
@@ -1203,7 +1202,7 @@
 
 #: ../glib/goption.c:760
 msgid "[OPTION...]"
-msgstr "[FLAGG...]"
+msgstr "[FLAGG …]"
 
 #: ../glib/goption.c:866
 msgid "Help Options:"
@@ -1273,8 +1272,8 @@
 msgid ""
 "Key file contains line '%s' which is not a key-value pair, group, or comment"
 msgstr ""
-"Nøkkelfil inneholder linjen «%s» som ikke er et par med nøkkelverdier, "
-"gruppe eller kommentar"
+"Nøkkelfil inneholder linjen «%s» som ikke er et par med nøkkelverdier, gruppe "
+"eller kommentar"
 
 #: ../glib/gkeyfile.c:824
 #, c-format
@@ -1320,11 +1319,9 @@
 
 #: ../glib/gkeyfile.c:1531
 #, c-format
-msgid ""
-"Key file contains key '%s' which has a value that cannot be interpreted."
+msgid "Key file contains key '%s' which has a value that cannot be interpreted."
 msgstr ""
-"Nøkkelfilen inneholder nøkkelen «%s» som har en verdi som ikke kan bli "
-"tolket."
+"Nøkkelfilen inneholder nøkkelen «%s» som har en verdi som ikke kan bli tolket."
 
 #: ../glib/gkeyfile.c:2125 ../glib/gkeyfile.c:2487
 #, c-format
@@ -1332,8 +1329,8 @@
 "Key file contains key '%s' in group '%s' which has value that cannot be "
 "interpreted."
 msgstr ""
-"Nøkkelfilen inneholder nøkkelen «%s» i gruppen «%s» som har en verdi som "
-"ikke kan bli tolket."
+"Nøkkelfilen inneholder nøkkelen «%s» i gruppen «%s» som har en verdi som ikke "
+"kan bli tolket."
 
 #: ../glib/gkeyfile.c:2671 ../glib/gkeyfile.c:2872 ../glib/gkeyfile.c:3402
 #, c-format
@@ -1382,10 +1379,10 @@
 msgid "Stream is already closed"
 msgstr "Strømmen er allerede lukket"
 
-#: ../gio/gcancellable.c:432 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Operasjonen ble avbrutt"
 
@@ -1401,7 +1398,7 @@
 msgid "Not enough space in destination"
 msgstr "Ikke nok plass i mål"
 
-#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:831
+#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:832
 msgid "Cancellable initialization not supported"
 msgstr "Avbrytbar initiering er ikke støttet"
 
@@ -1439,8 +1436,7 @@
 
 #: ../gio/gdbusaddress.c:169
 #, c-format
-msgid ""
-"Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
+msgid "Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
 msgstr ""
 "Adressen «%s» er ugyldig (trenger eksakt en av følgende: sti, tmpdir eller "
 "abstrakte nøkler)"
@@ -1556,17 +1552,16 @@
 #: ../gio/gdbusaddress.c:1143
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
-msgstr ""
-"Kan ikke bestemme adresse til sesjonsbussen (ikke implementert på dette OSet)"
+msgstr "Kan ikke bestemme adresse til øktbussen (ikke implementert på dette OSet)"
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "- unknown value `%s'"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1602,8 +1597,7 @@
 
 #: ../gio/gdbusauthmechanismsha1.c:278
 #, c-format
-msgid ""
-"Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o"
+msgid "Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 
 #: ../gio/gdbusauthmechanismsha1.c:299
@@ -1669,85 +1663,83 @@
 msgstr ""
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "Tilkoblingen er lukket"
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Tidsavbrudd ble nådd"
 
-#: ../gio/gdbusconnection.c:2299
-msgid ""
-"Unsupported flags encountered when constructing a client-side connection"
+#: ../gio/gdbusconnection.c:2300
+msgid "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
-msgid ""
-"No such interface `org.freedesktop.DBus.Properties' on object at path %s"
+msgid "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "Egenskap «%s» finnes ikke"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "Egenskap «%s» er er ikke lesbar"
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "Egenskap «%s» er er ikke skrivbar"
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "Grensesnitt «%s» finnes ikke"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "Grensesnittet finnes ikke"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "Metoden «%s» finnes ikke"
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Et undertre er allerede eksportert for %s"
@@ -1861,8 +1853,7 @@
 
 #: ../gio/gdbusmessage.c:2131
 #, c-format
-msgid ""
-"Error serializing GVariant with type string `%s' to the D-Bus wire format"
+msgid "Error serializing GVariant with type string `%s' to the D-Bus wire format"
 msgstr ""
 
 #: ../gio/gdbusmessage.c:2272
@@ -1882,8 +1873,8 @@
 #: ../gio/gdbusmessage.c:2334
 #, c-format
 msgid ""
-"Message body has type signature `%s' but signature in the header field is `"
-"%s'"
+"Message body has type signature `%s' but signature in the header field is `%"
+"s'"
 msgstr ""
 
 #: ../gio/gdbusmessage.c:2350
@@ -1905,13 +1896,13 @@
 msgid "Type of return value is incorrect, got `%s', expected `%s'"
 msgstr ""
 
-#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:2992
-#: ../gio/gsocket.c:3073
+#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3104
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Feil ved sending av melding: %s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "Kan ikke laste /var/lib/dbus/machine-id: "
 
@@ -2001,7 +1992,7 @@
 
 #: ../gio/gdbus-tool.c:347
 msgid "Connect to the session bus"
-msgstr "Koble til sesjonsbussen"
+msgstr "Koble til øktbussen"
 
 #: ../gio/gdbus-tool.c:348
 msgid "Connect to given D-Bus address"
@@ -2027,8 +2018,7 @@
 
 #: ../gio/gdbus-tool.c:459
 #, c-format
-msgid ""
-"Warning: According to introspection data, interface `%s' does not exist\n"
+msgid "Warning: According to introspection data, interface `%s' does not exist\n"
 msgstr ""
 
 #: ../gio/gdbus-tool.c:468
@@ -2122,34 +2112,34 @@
 msgid "Monitor a remote object."
 msgstr "Overvåk et eksternt objekt."
 
-#: ../gio/gdesktopappinfo.c:469 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Uten navn"
 
-#: ../gio/gdesktopappinfo.c:753
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "Desktop-filen hadde ingen verdi i Exec-feltet"
 
-#: ../gio/gdesktopappinfo.c:946
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "Kan ikke finne terminalen som kreves for programmet"
 
-#: ../gio/gdesktopappinfo.c:1155
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr "Kan ikke opprette konfigurasjonsmappe %s for brukers program: %s"
 
-#: ../gio/gdesktopappinfo.c:1159
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Kan ikke opprette brukers konfigurasjonsmappe %s for MIME: %s"
 
-#: ../gio/gdesktopappinfo.c:1567
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Kan ikke opprette brukers desktop-fil %s"
 
-#: ../gio/gdesktopappinfo.c:1681
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Egendefinert definisjon for %s"
@@ -2187,29 +2177,29 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Feil antall tegn (%d) i GEmblem-koding"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Kan ikke håndtere versjon %d av GEmblemedIcon-koding"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Feil antall tegn (%d) i GEmblemedIcon-koding"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Ventet et GEmblem for GEmblemedIcon"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Operasjonen er ikke støttet"
@@ -2222,58 +2212,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "Omsluttende monteringspunkt finnes ikke"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "Kan ikke kopiere over katalog"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Kan ikke kopiere katalog over katalog"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "Målfilen eksisterer"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Kan ikke kopiere katalog rekursivt"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Splice er ikke støttet"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Feil ved bruk av  splice(2) på fil: %s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Kan ikke kopiere spesiell fil"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "Ugyldig verdi oppgitt for symbolsk lenke"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Papirkurv er ikke støttet"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Filnavn kan ikke inneholde «%c»"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "volumet implementerer ikke montering"
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "Ingen program registrert for å håndtere denne filen"
 
@@ -2486,8 +2476,7 @@
 
 #: ../gio/glib-compile-schemas.c:1108
 #, c-format
-msgid ""
-"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
 
 #: ../gio/glib-compile-schemas.c:1118
@@ -2512,128 +2501,128 @@
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id=«%s»> er allerede spesifisert"
 
-#: ../gio/glib-compile-schemas.c:1385
+#: ../gio/glib-compile-schemas.c:1387
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Element <%s> er ikke tillatt inne i <%s>"
 
-#: ../gio/glib-compile-schemas.c:1389
+#: ../gio/glib-compile-schemas.c:1391
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Element <%s> er ikke tillatt på toppnivå"
 
-#: ../gio/glib-compile-schemas.c:1483
+#: ../gio/glib-compile-schemas.c:1485
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "tekst kan ikke forekomme inne i <%s>"
 
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1652 ../gio/glib-compile-schemas.c:1723
-#: ../gio/glib-compile-schemas.c:1799
+#: ../gio/glib-compile-schemas.c:1654 ../gio/glib-compile-schemas.c:1725
+#: ../gio/glib-compile-schemas.c:1801
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1660
+#: ../gio/glib-compile-schemas.c:1662
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1719
+#: ../gio/glib-compile-schemas.c:1721
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1759
+#: ../gio/glib-compile-schemas.c:1761
 #, c-format
 msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1765 ../gio/glib-compile-schemas.c:1823
-#: ../gio/glib-compile-schemas.c:1851
+#: ../gio/glib-compile-schemas.c:1767 ../gio/glib-compile-schemas.c:1825
+#: ../gio/glib-compile-schemas.c:1853
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1769 ../gio/glib-compile-schemas.c:1827
-#: ../gio/glib-compile-schemas.c:1855
+#: ../gio/glib-compile-schemas.c:1771 ../gio/glib-compile-schemas.c:1829
+#: ../gio/glib-compile-schemas.c:1857
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1785
+#: ../gio/glib-compile-schemas.c:1787
 #, c-format
 msgid ""
-"error parsing key `%s' in schema `%s' as specified in override file `%s': "
-"%s.  "
+"error parsing key `%s' in schema `%s' as specified in override file `%s': %"
+"s.  "
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1795
+#: ../gio/glib-compile-schemas.c:1797
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1813
+#: ../gio/glib-compile-schemas.c:1815
 #, c-format
 msgid ""
 "override for key `%s' in schema `%s' in override file `%s' is out of the "
 "range given in the schema"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1841
+#: ../gio/glib-compile-schemas.c:1843
 #, c-format
 msgid ""
 "override for key `%s' in schema `%s' in override file `%s' is not in the "
 "list of valid choices"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1895
+#: ../gio/glib-compile-schemas.c:1897
 msgid "where to store the gschemas.compiled file"
 msgstr "gschemas.compiled filen lagres her"
 
-#: ../gio/glib-compile-schemas.c:1895 ../gio/glib-compile-schemas.c:1908
+#: ../gio/glib-compile-schemas.c:1897 ../gio/glib-compile-schemas.c:1910
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: ../gio/glib-compile-schemas.c:1896
+#: ../gio/glib-compile-schemas.c:1898
 msgid "Abort on any errors in schemas"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1897
+#: ../gio/glib-compile-schemas.c:1899
 msgid "Do not write the gschema.compiled file"
 msgstr "Ikke skriv filen gschema.compiled"
 
-#: ../gio/glib-compile-schemas.c:1898
+#: ../gio/glib-compile-schemas.c:1900
 msgid "This option will be removed soon."
 msgstr "Dette alternativet vil bli fjernet snart."
 
-#: ../gio/glib-compile-schemas.c:1899
+#: ../gio/glib-compile-schemas.c:1901
 msgid "Do not enforce key name restrictions"
 msgstr "Ikke sett restriksjoner på navn på nøkler"
 
-#: ../gio/glib-compile-schemas.c:1911
+#: ../gio/glib-compile-schemas.c:1913
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
 "and the cache file is called gschemas.compiled."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1927
+#: ../gio/glib-compile-schemas.c:1929
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr "Du må kun oppgi navn på én katalog\n"
 
-#: ../gio/glib-compile-schemas.c:1966
+#: ../gio/glib-compile-schemas.c:1968
 #, c-format
 msgid "No schema files found: "
 msgstr "Ingen schema-filer funnet: "
 
-#: ../gio/glib-compile-schemas.c:1969
+#: ../gio/glib-compile-schemas.c:1971
 #, c-format
 msgid "doing nothing.\n"
 msgstr "gjør ingenting.\n"
 
-#: ../gio/glib-compile-schemas.c:1972
+#: ../gio/glib-compile-schemas.c:1974
 #, c-format
 msgid "removed existing output file.\n"
 msgstr "fjernet eksisterende utdatafil.\n"
@@ -3083,85 +3072,86 @@
 msgid "No such key '%s'\n"
 msgstr "Nøkkel «%s» finnes ikke\n"
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr "SKJEMA[:STI]"
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr "Henter verdien for NØKKEL"
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SKJEMA[:STI] NØKKEL"
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr "Sett verdien for NØKKEL til VERDI"
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SKJEMA[:STI] NØKKEL VERDI"
 
-#: ../gio/gsettings-tool.c:504
-#, fuzzy
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
-msgstr "Setter NØKKEL til forvalgt verdi"
+msgstr "Nullstiller NØKKEL til forvalgt verdi"
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr "Sjekker om NØKKEL er skrivbar"
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:STI] [NØKKEL]"
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
 "\n"
-msgstr "Ukjent kommando «%s»\n\n"
+msgstr ""
+"Ukjent kommando «%s»\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3184,7 +3174,7 @@
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3194,153 +3184,152 @@
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "Argumenter:\n"
 
-#: ../gio/gsettings-tool.c:561
-#, fuzzy
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 "Argumenter:\n"
 "  SCHEMA      Id for schema\n"
-"  NØKKEL      Navn på nøkkelen\n"
+"  PATH        Sti, for schema som kan relokeres\n"
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
-msgstr ""
+msgstr "  NØKKEL    Valgfri nøkkel i schema\n"
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
-msgstr ""
+msgstr "Tomt navn på schema oppgitt"
 
-#: ../gio/gsocket.c:276
+#: ../gio/gsocket.c:277
 msgid "Invalid socket, not initialized"
 msgstr "Ugyldig plugg, ikke initiert"
 
-#: ../gio/gsocket.c:283
+#: ../gio/gsocket.c:284
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ugyldig plugg, initiering feilet pga: %s"
 
-#: ../gio/gsocket.c:291
+#: ../gio/gsocket.c:292
 msgid "Socket is already closed"
 msgstr "Pluggen er allerede lukket"
 
-#: ../gio/gsocket.c:299 ../gio/gsocket.c:2734 ../gio/gsocket.c:2778
+#: ../gio/gsocket.c:300 ../gio/gsocket.c:2765 ../gio/gsocket.c:2809
 msgid "Socket I/O timed out"
 msgstr "Tidsavbrudd for I/U mot plugg"
 
-#: ../gio/gsocket.c:442
+#: ../gio/gsocket.c:443
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "lager GSocket fra fd: %s"
 
-#: ../gio/gsocket.c:476 ../gio/gsocket.c:492 ../gio/gsocket.c:2134
+#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2135
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kunne ikke lage plugg: %s"
 
-#: ../gio/gsocket.c:476
+#: ../gio/gsocket.c:477
 msgid "Unknown protocol was specified"
 msgstr "Ukjent protokoll ble oppgitt"
 
-#: ../gio/gsocket.c:1245
+#: ../gio/gsocket.c:1246
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunne ikke hente lokal adresse: %s"
 
-#: ../gio/gsocket.c:1288
+#: ../gio/gsocket.c:1289
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kunne ikke hente ekstern adresse: %s"
 
-#: ../gio/gsocket.c:1349
+#: ../gio/gsocket.c:1350
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunne ikke lytte: %s"
 
-#: ../gio/gsocket.c:1423
+#: ../gio/gsocket.c:1424
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Feil ved binding til adresse: %s"
 
-#: ../gio/gsocket.c:1543
+#: ../gio/gsocket.c:1544
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Feil ved godkjenning av tilkobling: %s"
 
-#: ../gio/gsocket.c:1660
+#: ../gio/gsocket.c:1661
 msgid "Error connecting: "
 msgstr "Feil under tilkobling: "
 
-#: ../gio/gsocket.c:1665
+#: ../gio/gsocket.c:1666
 msgid "Connection in progress"
 msgstr "Tilkobling pågår"
 
-#: ../gio/gsocket.c:1672
+#: ../gio/gsocket.c:1673
 #, c-format
 msgid "Error connecting: %s"
 msgstr "Feil under tilkobling: %s"
 
-#: ../gio/gsocket.c:1715 ../gio/gsocket.c:3497
+#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3528
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr "Kan ikke hente utestående feil: %s"
 
-#: ../gio/gsocket.c:1847
+#: ../gio/gsocket.c:1848
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Feil ved mottak av data: %s"
 
-#: ../gio/gsocket.c:2021
+#: ../gio/gsocket.c:2022
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Feil ved sending av data: %s"
 
-#: ../gio/gsocket.c:2213
+#: ../gio/gsocket.c:2214
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Feil ved lukking av plugg: %s"
 
-#: ../gio/gsocket.c:2727
+#: ../gio/gsocket.c:2758
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Venter på tilstand for plugg: %s"
 
-#: ../gio/gsocket.c:3017
+#: ../gio/gsocket.c:3048
 msgid "GSocketControlMessage not supported on windows"
 msgstr "GSocketControlMessage er ikke støttet på windows"
 
-#: ../gio/gsocket.c:3276 ../gio/gsocket.c:3417
+#: ../gio/gsocket.c:3307 ../gio/gsocket.c:3448
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Feil ved mottak av melding: %s"
 
-#: ../gio/gsocket.c:3512
+#: ../gio/gsocket.c:3543
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials ikke implementert for dette OSet"
 
-#: ../gio/gsocketclient.c:674 ../gio/gsocketclient.c:1152
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Ukjent feil ved tilkobling"
 
-#: ../gio/gsocketclient.c:711 ../gio/gsocketclient.c:1037
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr ""
 
-#: ../gio/gsocketclient.c:749 ../gio/gsocketclient.c:1060
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "Protokoll «%s» er er ikke støttet"
@@ -3387,7 +3376,8 @@
 
 #: ../gio/gsocks5proxy.c:179
 msgid ""
-"The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
+"The SOCKSv5 proxy requires an authentication method that is not supported by "
+"GLib."
 msgstr ""
 
 #: ../gio/gsocks5proxy.c:208
@@ -3437,7 +3427,9 @@
 msgstr "SOCKSv5-proxy støtter ikke oppgitt type adresse."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
+#, fuzzy
+#| msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
 msgstr "Ukjent feil i SOCKSv5-proxy."
 
 #: ../gio/gthemedicon.c:498
@@ -3445,6 +3437,18 @@
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Kan ikke håndtere versjon %d av GThemedIcon-koding"
 
+#: ../gio/gtlscertificate.c:228
+msgid "No PEM-encoded certificate found"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:237
+msgid "Could not parse PEM-encoded certificate"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:258
+msgid "Could not parse PEM-encoded private key"
+msgstr ""
+
 #: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:505
 #, c-format
 msgid "Expecting 1 control message, got %d"
@@ -3494,14 +3498,14 @@
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Feil ved forsøk på å slå av SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:353 ../gio/gunixinputstream.c:373
-#: ../gio/gunixinputstream.c:451
+#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388
+#: ../gio/gunixinputstream.c:466
 #, c-format
 msgid "Error reading from unix: %s"
 msgstr "Feil under lesing fra unix: %s"
 
-#: ../gio/gunixinputstream.c:406 ../gio/gunixinputstream.c:586
-#: ../gio/gunixoutputstream.c:393 ../gio/gunixoutputstream.c:542
+#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601
+#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556
 #, c-format
 msgid "Error closing unix: %s"
 msgstr "Feil ved lukking av unix: %s"
@@ -3510,8 +3514,8 @@
 msgid "Filesystem root"
 msgstr "Filsystemrot"
 
-#: ../gio/gunixoutputstream.c:339 ../gio/gunixoutputstream.c:360
-#: ../gio/gunixoutputstream.c:438
+#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374
+#: ../gio/gunixoutputstream.c:452
 #, c-format
 msgid "Error writing to unix: %s"
 msgstr "Feil ved skriving til unix: %s"
@@ -3583,3 +3587,4 @@
 #: ../gio/gzlibdecompressor.c:342
 msgid "Invalid compressed data"
 msgstr "Ugyldige komprimerte data"
+
diff --git a/po/sv.po b/po/sv.po
index bd2d9ad..2aee371 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,10 +7,11 @@
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-12 20:16+0200\n"
-"PO-Revision-Date: 2010-09-12 20:25+0100\n"
+"POT-Creation-Date: 2010-12-31 15:11+0100\n"
+"PO-Revision-Date: 2010-12-31 15:22+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -120,7 +121,7 @@
 #: ../glib/gconvert.c:1161
 #: ../glib/giochannel.c:1575
 #: ../glib/giochannel.c:1617
-#: ../glib/giochannel.c:2461
+#: ../glib/giochannel.c:2460
 #: ../glib/gutf8.c:992
 #: ../glib/gutf8.c:1447
 #: ../gio/gcharsetconverter.c:345
@@ -130,7 +131,7 @@
 #: ../glib/gconvert.c:776
 #: ../glib/gconvert.c:1086
 #: ../glib/giochannel.c:1582
-#: ../glib/giochannel.c:2473
+#: ../glib/giochannel.c:2472
 #: ../gio/gcharsetconverter.c:350
 #, c-format
 msgid "Error during conversion: %s"
@@ -184,362 +185,370 @@
 msgid "Invalid hostname"
 msgstr "Ogiltigt värdnamn"
 
-#: ../glib/gdatetime.c:104
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:149
 msgctxt "GDateTime"
 msgid "am"
 msgstr "am"
 
-#: ../glib/gdatetime.c:104
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:151
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "AM"
 
-#: ../glib/gdatetime.c:105
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:153
 msgctxt "GDateTime"
 msgid "pm"
 msgstr "pm"
 
-#: ../glib/gdatetime.c:105
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:155
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:114
+#: ../glib/gdatetime.c:164
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%y-%m-%d"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:117
+#: ../glib/gdatetime.c:167
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H.%M.%S"
 
-#: ../glib/gdatetime.c:162
+#: ../glib/gdatetime.c:193
 msgctxt "full month name"
 msgid "January"
 msgstr "Januari"
 
-#: ../glib/gdatetime.c:164
+#: ../glib/gdatetime.c:195
 msgctxt "full month name"
 msgid "February"
 msgstr "Februari"
 
-#: ../glib/gdatetime.c:166
+#: ../glib/gdatetime.c:197
 msgctxt "full month name"
 msgid "March"
 msgstr "Mars"
 
-#: ../glib/gdatetime.c:168
+#: ../glib/gdatetime.c:199
 msgctxt "full month name"
 msgid "April"
 msgstr "April"
 
-#: ../glib/gdatetime.c:170
-#: ../glib/gdatetime.c:207
+#: ../glib/gdatetime.c:201
 msgctxt "full month name"
 msgid "May"
 msgstr "Maj"
 
-#: ../glib/gdatetime.c:172
+#: ../glib/gdatetime.c:203
 msgctxt "full month name"
 msgid "June"
 msgstr "Juni"
 
-#: ../glib/gdatetime.c:174
+#: ../glib/gdatetime.c:205
 msgctxt "full month name"
 msgid "July"
 msgstr "Juli"
 
-#: ../glib/gdatetime.c:176
+#: ../glib/gdatetime.c:207
 msgctxt "full month name"
 msgid "August"
 msgstr "Augusti"
 
-#: ../glib/gdatetime.c:178
+#: ../glib/gdatetime.c:209
 msgctxt "full month name"
 msgid "September"
 msgstr "September"
 
-#: ../glib/gdatetime.c:180
+#: ../glib/gdatetime.c:211
 msgctxt "full month name"
 msgid "October"
 msgstr "Oktober"
 
-#: ../glib/gdatetime.c:182
+#: ../glib/gdatetime.c:213
 msgctxt "full month name"
 msgid "November"
 msgstr "November"
 
-#: ../glib/gdatetime.c:184
+#: ../glib/gdatetime.c:215
 msgctxt "full month name"
 msgid "December"
 msgstr "December"
 
-#: ../glib/gdatetime.c:199
+#: ../glib/gdatetime.c:230
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "Jan"
 
-#: ../glib/gdatetime.c:201
+#: ../glib/gdatetime.c:232
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "Feb"
 
-#: ../glib/gdatetime.c:203
+#: ../glib/gdatetime.c:234
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "Mar"
 
-#: ../glib/gdatetime.c:205
+#: ../glib/gdatetime.c:236
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "Apr"
 
-#: ../glib/gdatetime.c:209
+#: ../glib/gdatetime.c:238
+msgctxt "abbreviated month name"
+msgid "May"
+msgstr "Maj"
+
+#: ../glib/gdatetime.c:240
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "Jun"
 
-#: ../glib/gdatetime.c:211
+#: ../glib/gdatetime.c:242
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "Jul"
 
-#: ../glib/gdatetime.c:213
+#: ../glib/gdatetime.c:244
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "Aug"
 
-#: ../glib/gdatetime.c:215
+#: ../glib/gdatetime.c:246
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "Sep"
 
-#: ../glib/gdatetime.c:217
+#: ../glib/gdatetime.c:248
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "Okt"
 
-#: ../glib/gdatetime.c:219
+#: ../glib/gdatetime.c:250
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "Nov"
 
-#: ../glib/gdatetime.c:221
+#: ../glib/gdatetime.c:252
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "Dec"
 
-#: ../glib/gdatetime.c:236
+#: ../glib/gdatetime.c:267
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "Måndag"
 
-#: ../glib/gdatetime.c:238
+#: ../glib/gdatetime.c:269
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "Tisdag"
 
-#: ../glib/gdatetime.c:240
+#: ../glib/gdatetime.c:271
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "Onsdag"
 
-#: ../glib/gdatetime.c:242
+#: ../glib/gdatetime.c:273
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "Torsdag"
 
-#: ../glib/gdatetime.c:244
+#: ../glib/gdatetime.c:275
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "Fredag"
 
-#: ../glib/gdatetime.c:246
+#: ../glib/gdatetime.c:277
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "Lördag"
 
-#: ../glib/gdatetime.c:248
+#: ../glib/gdatetime.c:279
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "Söndag"
 
-#: ../glib/gdatetime.c:263
+#: ../glib/gdatetime.c:294
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "Mån"
 
-#: ../glib/gdatetime.c:265
+#: ../glib/gdatetime.c:296
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "Tis"
 
-#: ../glib/gdatetime.c:267
+#: ../glib/gdatetime.c:298
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "Ons"
 
-#: ../glib/gdatetime.c:269
+#: ../glib/gdatetime.c:300
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "Tor"
 
-#: ../glib/gdatetime.c:271
+#: ../glib/gdatetime.c:302
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "Fre"
 
-#: ../glib/gdatetime.c:273
+#: ../glib/gdatetime.c:304
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "Lör"
 
-#: ../glib/gdatetime.c:275
+#: ../glib/gdatetime.c:306
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "Sön"
 
-#: ../glib/gdir.c:114
-#: ../glib/gdir.c:137
+#: ../glib/gdir.c:115
+#: ../glib/gdir.c:138
 #, c-format
 msgid "Error opening directory '%s': %s"
 msgstr "Fel vid öppning av katalogen \"%s\": %s"
 
-#: ../glib/gfileutils.c:536
-#: ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540
+#: ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "Kunde inte allokera %lu byte för att läsa filen \"%s\""
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "Fel vid läsning av filen \"%s\": %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "Filen \"%s\" är för stor"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "Misslyckades med att läsa från filen \"%s\": %s"
 
-#: ../glib/gfileutils.c:699
-#: ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703
+#: ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "Misslyckades med att öppna filen \"%s\": %s"
 
-#: ../glib/gfileutils.c:716
+#: ../glib/gfileutils.c:720
 #: ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "Misslyckades med att få tag på attributen på filen \"%s\": fstat() misslyckades: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "Misslyckades med att öppna filen \"%s\": fdopen() misslyckades: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgstr "Misslyckades med att byta namn på filen \"%s\" till \"%s\": g_rename() misslyckades: %s"
 
-#: ../glib/gfileutils.c:900
-#: ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904
+#: ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "Misslyckades med att skapa filen \"%s\": %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "Misslyckades med att öppna filen \"%s\" för skrivning: fdopen() misslyckades: %s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "Misslyckades med att skriva filen \"%s\": fwrite() misslyckades: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Misslyckades med att skriva filen \"%s\": fflush() misslyckades: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Misslyckades med att skriva filen \"%s\": fsync() misslyckades: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "Misslyckades med att stänga filen \"%s\": fclose() misslyckades: %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "Befintliga filen \"%s\" kunde inte tas bort: g_unlink() misslyckades: %s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "Mallen \"%s\" är ogiltig, den får inte innehålla ett \"%s\""
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "Mallen \"%s\" innehåller inte XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Misslyckades med att läsa den symboliska länken \"%s\": %s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "Symboliska länkar stöds inte"
 
@@ -553,8 +562,8 @@
 msgstr "Kan inte göra en rå läsning i g_io_channel_read_line_string"
 
 #: ../glib/giochannel.c:1799
-#: ../glib/giochannel.c:2057
-#: ../glib/giochannel.c:2144
+#: ../glib/giochannel.c:2056
+#: ../glib/giochannel.c:2143
 msgid "Leftover unconverted data in read buffer"
 msgstr "Överbliven okonverterad data i läsbufferten"
 
@@ -728,300 +737,300 @@
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Dokumentet tog oväntat slut inuti en kommentar eller behandlingsinstruktion"
 
-#: ../glib/gregex.c:184
+#: ../glib/gregex.c:188
 msgid "corrupted object"
 msgstr "skadat objekt"
 
-#: ../glib/gregex.c:186
+#: ../glib/gregex.c:190
 msgid "internal error or corrupted object"
 msgstr "internt fel eller skadat objekt"
 
-#: ../glib/gregex.c:188
+#: ../glib/gregex.c:192
 msgid "out of memory"
 msgstr "slut på minne"
 
-#: ../glib/gregex.c:193
+#: ../glib/gregex.c:197
 msgid "backtracking limit reached"
 msgstr "bakåtspårningsgräns nådd"
 
-#: ../glib/gregex.c:205
-#: ../glib/gregex.c:213
+#: ../glib/gregex.c:209
+#: ../glib/gregex.c:217
 msgid "the pattern contains items not supported for partial matching"
 msgstr "mönstret innehåller objekt som inte stöds för delvis matchning"
 
-#: ../glib/gregex.c:207
+#: ../glib/gregex.c:211
 #: ../gio/glocalfile.c:2109
 msgid "internal error"
 msgstr "internt fel"
 
-#: ../glib/gregex.c:215
+#: ../glib/gregex.c:219
 msgid "back references as conditions are not supported for partial matching"
 msgstr "bakreferenser som villkor stöds inte för delvis matchning"
 
-#: ../glib/gregex.c:224
+#: ../glib/gregex.c:228
 msgid "recursion limit reached"
 msgstr "rekursionsgräns nådd"
 
-#: ../glib/gregex.c:226
+#: ../glib/gregex.c:230
 msgid "workspace limit for empty substrings reached"
 msgstr "arbetsytans gräns för tomma understrängar nådd"
 
-#: ../glib/gregex.c:228
+#: ../glib/gregex.c:232
 msgid "invalid combination of newline flags"
 msgstr "ogiltig kombination av nyradsflaggor"
 
-#: ../glib/gregex.c:232
+#: ../glib/gregex.c:236
 msgid "unknown error"
 msgstr "okänt fel"
 
-#: ../glib/gregex.c:252
+#: ../glib/gregex.c:256
 msgid "\\ at end of pattern"
 msgstr "\\ på slutet av mönster"
 
-#: ../glib/gregex.c:255
+#: ../glib/gregex.c:259
 msgid "\\c at end of pattern"
 msgstr "\\c på slutet av mönster"
 
-#: ../glib/gregex.c:258
+#: ../glib/gregex.c:262
 msgid "unrecognized character follows \\"
 msgstr "okänt tecken efter \\"
 
-#: ../glib/gregex.c:265
+#: ../glib/gregex.c:269
 msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
 msgstr "skiftlägesändrade escape-tecken (\\l, \\L, \\u, \\U) tillåts inte här"
 
-#: ../glib/gregex.c:268
+#: ../glib/gregex.c:272
 msgid "numbers out of order in {} quantifier"
 msgstr "tal är inte i ordning i {}-kvantifierare"
 
-#: ../glib/gregex.c:271
+#: ../glib/gregex.c:275
 msgid "number too big in {} quantifier"
 msgstr "tal för stort i {}-kvantifierare"
 
-#: ../glib/gregex.c:274
+#: ../glib/gregex.c:278
 msgid "missing terminating ] for character class"
 msgstr "saknar avslutande ] för teckenklass"
 
-#: ../glib/gregex.c:277
+#: ../glib/gregex.c:281
 msgid "invalid escape sequence in character class"
 msgstr "ogiltig escape-sekvens i teckenklass"
 
-#: ../glib/gregex.c:280
+#: ../glib/gregex.c:284
 msgid "range out of order in character class"
 msgstr "intervall är inte i ordning i teckenklass"
 
-#: ../glib/gregex.c:283
+#: ../glib/gregex.c:287
 msgid "nothing to repeat"
 msgstr "ingenting att upprepa"
 
-#: ../glib/gregex.c:286
+#: ../glib/gregex.c:290
 msgid "unrecognized character after (?"
 msgstr "okänt tecken efter (?"
 
-#: ../glib/gregex.c:290
+#: ../glib/gregex.c:294
 msgid "unrecognized character after (?<"
 msgstr "okänt tecken efter (?<"
 
-#: ../glib/gregex.c:294
+#: ../glib/gregex.c:298
 msgid "unrecognized character after (?P"
 msgstr "okänt tecken efter (?P"
 
-#: ../glib/gregex.c:297
+#: ../glib/gregex.c:301
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX-namngivna klasser stöds endast inom en klass"
 
-#: ../glib/gregex.c:300
+#: ../glib/gregex.c:304
 msgid "missing terminating )"
 msgstr "saknar avslutande )"
 
-#: ../glib/gregex.c:304
+#: ../glib/gregex.c:308
 msgid ") without opening ("
 msgstr ") utan öppnande ("
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:311
+#: ../glib/gregex.c:315
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "(?R eller (?[+-]siffror måste efterföljas av )"
 
-#: ../glib/gregex.c:314
+#: ../glib/gregex.c:318
 msgid "reference to non-existent subpattern"
 msgstr "referens till icke-existerande undermönster"
 
-#: ../glib/gregex.c:317
+#: ../glib/gregex.c:321
 msgid "missing ) after comment"
 msgstr "saknar ) efter kommentar"
 
-#: ../glib/gregex.c:320
+#: ../glib/gregex.c:324
 msgid "regular expression too large"
 msgstr "reguljärt uttryck för stort"
 
-#: ../glib/gregex.c:323
+#: ../glib/gregex.c:327
 msgid "failed to get memory"
 msgstr "misslyckades med att få minne"
 
-#: ../glib/gregex.c:326
+#: ../glib/gregex.c:330
 msgid "lookbehind assertion is not fixed length"
 msgstr "lookbehind-assertion är inte av fast längd"
 
-#: ../glib/gregex.c:329
+#: ../glib/gregex.c:333
 msgid "malformed number or name after (?("
 msgstr "felformulerat tal eller namn efter (?("
 
-#: ../glib/gregex.c:332
+#: ../glib/gregex.c:336
 msgid "conditional group contains more than two branches"
 msgstr "villkorsgrupp innehåller fler än två grenar"
 
-#: ../glib/gregex.c:335
+#: ../glib/gregex.c:339
 msgid "assertion expected after (?("
 msgstr "assertion förväntades efter (?("
 
-#: ../glib/gregex.c:338
+#: ../glib/gregex.c:342
 msgid "unknown POSIX class name"
 msgstr "okänt POSIX-klassnamn"
 
-#: ../glib/gregex.c:341
+#: ../glib/gregex.c:345
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX-sorteringselement stöds inte"
 
-#: ../glib/gregex.c:344
+#: ../glib/gregex.c:348
 msgid "character value in \\x{...} sequence is too large"
 msgstr "teckenvärde i \\x{...}-sekvens är för stort"
 
-#: ../glib/gregex.c:347
+#: ../glib/gregex.c:351
 msgid "invalid condition (?(0)"
 msgstr "ogiltigt tillstånd (?(0)"
 
-#: ../glib/gregex.c:350
+#: ../glib/gregex.c:354
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C tillåts inte i lookbehind-assertion"
 
-#: ../glib/gregex.c:353
+#: ../glib/gregex.c:357
 msgid "recursive call could loop indefinitely"
 msgstr "rekursivt anrop kan gå in i en oändlig slinga"
 
-#: ../glib/gregex.c:356
+#: ../glib/gregex.c:360
 msgid "missing terminator in subpattern name"
 msgstr "saknar avslutstecken i undermönstrets namn"
 
-#: ../glib/gregex.c:359
+#: ../glib/gregex.c:363
 msgid "two named subpatterns have the same name"
 msgstr "två namngivna undermönster har samma namn"
 
-#: ../glib/gregex.c:362
+#: ../glib/gregex.c:366
 msgid "malformed \\P or \\p sequence"
 msgstr "felformulerad \\P eller \\p-sekvens"
 
-#: ../glib/gregex.c:365
+#: ../glib/gregex.c:369
 msgid "unknown property name after \\P or \\p"
 msgstr "okänt egenskapsnamn efter \\P eller \\p"
 
-#: ../glib/gregex.c:368
+#: ../glib/gregex.c:372
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "undermönstrets namn är för långt (maximalt 32 tecken)"
 
-#: ../glib/gregex.c:371
+#: ../glib/gregex.c:375
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "för många namngivna undermönster (maximalt 10,000)"
 
-#: ../glib/gregex.c:374
+#: ../glib/gregex.c:378
 msgid "octal value is greater than \\377"
 msgstr "oktalt värde är större än \\377"
 
-#: ../glib/gregex.c:377
+#: ../glib/gregex.c:381
 msgid "DEFINE group contains more than one branch"
 msgstr "DEFINE-grupp innehåller fler än en gren"
 
-#: ../glib/gregex.c:380
+#: ../glib/gregex.c:384
 msgid "repeating a DEFINE group is not allowed"
 msgstr "upprepning av en DEFINE-grupp tillåts inte"
 
-#: ../glib/gregex.c:383
+#: ../glib/gregex.c:387
 msgid "inconsistent NEWLINE options"
 msgstr "inkonsistenta NEWLINE-flaggor"
 
-#: ../glib/gregex.c:386
+#: ../glib/gregex.c:390
 msgid "\\g is not followed by a braced name or an optionally braced non-zero number"
 msgstr "\\g följs inte av ett namn inom klamrar eller ett valfri (icke-noll) tal inom klamrar"
 
-#: ../glib/gregex.c:391
+#: ../glib/gregex.c:395
 msgid "unexpected repeat"
 msgstr "oväntad upprepning"
 
-#: ../glib/gregex.c:395
+#: ../glib/gregex.c:399
 msgid "code overflow"
 msgstr "överflöde i kod"
 
-#: ../glib/gregex.c:399
+#: ../glib/gregex.c:403
 msgid "overran compiling workspace"
 msgstr "fyllde över kompileringsutrymme"
 
-#: ../glib/gregex.c:403
+#: ../glib/gregex.c:407
 msgid "previously-checked referenced subpattern not found"
 msgstr "tidigare kontrollerad refererande undermönster hittades inte"
 
-#: ../glib/gregex.c:575
-#: ../glib/gregex.c:1696
+#: ../glib/gregex.c:579
+#: ../glib/gregex.c:1700
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Fel vid matchning av reguljära uttrycket %s: %s"
 
-#: ../glib/gregex.c:1151
+#: ../glib/gregex.c:1155
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "PCRE-biblioteket är byggt utan stöd för UTF8"
 
-#: ../glib/gregex.c:1160
+#: ../glib/gregex.c:1164
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "PCRE-biblioteket är byggt utan stöd för UTF8-egenskaper"
 
-#: ../glib/gregex.c:1214
+#: ../glib/gregex.c:1218
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Fel vid kompilering av reguljära uttrycket %s vid tecknet %d: %s"
 
-#: ../glib/gregex.c:1250
+#: ../glib/gregex.c:1254
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Fel vid optimering av reguljära uttrycket %s: %s"
 
-#: ../glib/gregex.c:2124
+#: ../glib/gregex.c:2128
 msgid "hexadecimal digit or '}' expected"
 msgstr "hexadecimal siffra eller \"}\" förväntades"
 
-#: ../glib/gregex.c:2140
+#: ../glib/gregex.c:2144
 msgid "hexadecimal digit expected"
 msgstr "hexadecimal siffra förväntades"
 
-#: ../glib/gregex.c:2180
+#: ../glib/gregex.c:2184
 msgid "missing '<' in symbolic reference"
 msgstr "saknar \"<\" i symbolisk referens"
 
-#: ../glib/gregex.c:2189
+#: ../glib/gregex.c:2193
 msgid "unfinished symbolic reference"
 msgstr "oavslutad symbolisk referens"
 
-#: ../glib/gregex.c:2196
+#: ../glib/gregex.c:2200
 msgid "zero-length symbolic reference"
 msgstr "symbolisk referens med noll-längd"
 
-#: ../glib/gregex.c:2207
+#: ../glib/gregex.c:2211
 msgid "digit expected"
 msgstr "siffra förväntades"
 
-#: ../glib/gregex.c:2225
+#: ../glib/gregex.c:2229
 msgid "illegal symbolic reference"
 msgstr "otillåten symbolisk referens"
 
-#: ../glib/gregex.c:2287
+#: ../glib/gregex.c:2291
 msgid "stray final '\\'"
 msgstr "felplacerad avslutande \"\\\""
 
-#: ../glib/gregex.c:2291
+#: ../glib/gregex.c:2295
 msgid "unknown escape sequence"
 msgstr "okänd escape-sekvens"
 
-#: ../glib/gregex.c:2301
+#: ../glib/gregex.c:2305
 #, c-format
 msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
 msgstr "Fel vid tolkning av ersättningstexten \"%s\" vid tecknet %lu: %s"
@@ -1355,27 +1364,27 @@
 #: ../gio/ginputstream.c:185
 #: ../gio/ginputstream.c:317
 #: ../gio/ginputstream.c:556
-#: ../gio/ginputstream.c:681
-#: ../gio/goutputstream.c:197
-#: ../gio/goutputstream.c:724
+#: ../gio/ginputstream.c:680
+#: ../gio/goutputstream.c:198
+#: ../gio/goutputstream.c:726
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "För stort räknevärde skickat till %s"
 
 #: ../gio/gbufferedinputstream.c:881
-#: ../gio/ginputstream.c:891
+#: ../gio/ginputstream.c:888
 #: ../gio/giostream.c:306
-#: ../gio/goutputstream.c:1199
+#: ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "Strömmen är redan stängd"
 
-#: ../gio/gcancellable.c:432
-#: ../gio/gdbusconnection.c:1549
-#: ../gio/gdbusconnection.c:1638
-#: ../gio/gdbusconnection.c:1820
+#: ../gio/gcancellable.c:433
+#: ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726
+#: ../gio/gdbusconnection.c:1912
 #: ../gio/glocalfile.c:2102
-#: ../gio/gsimpleasyncresult.c:755
-#: ../gio/gsimpleasyncresult.c:781
+#: ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Åtgärden avbröts"
 
@@ -1394,7 +1403,7 @@
 msgstr "Inte tillräckligt med utrymme i målet"
 
 #: ../gio/gcharsetconverter.c:447
-#: ../gio/gsocket.c:810
+#: ../gio/gsocket.c:832
 msgid "Cancellable initialization not supported"
 msgstr "Avbrytningsbar initiering stöds inte"
 
@@ -1421,7 +1430,7 @@
 msgid "There is no GCredentials support for your platform"
 msgstr "Det finns inget stöd för GCredentials för din plattform"
 
-#: ../gio/gdatainputstream.c:310
+#: ../gio/gdatainputstream.c:311
 msgid "Unexpected early end-of-stream"
 msgstr "Oväntat tidig end-of-stream"
 
@@ -1519,46 +1528,46 @@
 msgid "Error writing contents of nonce file `%s' to stream:"
 msgstr "Fel vid skrivning till fil: %s"
 
-#: ../gio/gdbusaddress.c:942
+#: ../gio/gdbusaddress.c:939
 msgid "The given address is empty"
 msgstr "Angivna adressen är tom"
 
-#: ../gio/gdbusaddress.c:1011
+#: ../gio/gdbusaddress.c:1008
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1048
+#: ../gio/gdbusaddress.c:1045
 #, fuzzy, c-format
 msgid "Error spawning command line `%s': "
 msgstr "Fel vid läsning av filen \"%s\": %s"
 
-#: ../gio/gdbusaddress.c:1059
+#: ../gio/gdbusaddress.c:1056
 #, c-format
 msgid "Abnormal program termination spawning command line `%s': %s"
 msgstr "Onormal programterminering startar kommandoraden \"%s\": %s"
 
-#: ../gio/gdbusaddress.c:1073
+#: ../gio/gdbusaddress.c:1070
 #, c-format
 msgid "Command line `%s' exited with non-zero exit status %d: %s"
 msgstr "Kommandoraden \"%s\" avslutades med icke-noll-status %d: %s"
 
-#: ../gio/gdbusaddress.c:1146
+#: ../gio/gdbusaddress.c:1143
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1245
-#: ../gio/gdbusconnection.c:6013
+#: ../gio/gdbusaddress.c:1242
+#: ../gio/gdbusconnection.c:6168
 #, c-format
 msgid "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable - unknown value `%s'"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1254
-#: ../gio/gdbusconnection.c:6022
+#: ../gio/gdbusaddress.c:1251
+#: ../gio/gdbusconnection.c:6177
 msgid "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1264
+#: ../gio/gdbusaddress.c:1261
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Okänd busstyp %d"
@@ -1653,89 +1662,89 @@
 msgid "(Additionally, releasing the lock for `%s' also failed: %s) "
 msgstr ""
 
-#: ../gio/gdbusconnection.c:1058
-#: ../gio/gdbusconnection.c:1287
-#: ../gio/gdbusconnection.c:1326
-#: ../gio/gdbusconnection.c:1649
+#: ../gio/gdbusconnection.c:1148
+#: ../gio/gdbusconnection.c:1374
+#: ../gio/gdbusconnection.c:1413
+#: ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "Anslutningen är stängd"
 
-#: ../gio/gdbusconnection.c:1593
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "Tidsgränsen uppnåddes"
 
-#: ../gio/gdbusconnection.c:2170
+#: ../gio/gdbusconnection.c:2300
 msgid "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3596
-#: ../gio/gdbusconnection.c:3914
+#: ../gio/gdbusconnection.c:3752
+#: ../gio/gdbusconnection.c:4070
 #, c-format
 msgid "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3668
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3763
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "Ingen sådan egenskap \"%s\""
 
-#: ../gio/gdbusconnection.c:3775
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "Egenskapen \"%s\" är inte läsbar"
 
-#: ../gio/gdbusconnection.c:3786
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "Egenskapen \"%s\" är inte skrivbar"
 
-#: ../gio/gdbusconnection.c:3856
-#: ../gio/gdbusconnection.c:5447
+#: ../gio/gdbusconnection.c:4012
+#: ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "Inget sådan gränssnitt \"%s\""
 
-#: ../gio/gdbusconnection.c:4044
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "Inget sådant gränssnitt"
 
-#: ../gio/gdbusconnection.c:4260
-#: ../gio/gdbusconnection.c:5963
+#: ../gio/gdbusconnection.c:4416
+#: ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4312
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "Ingen sådan metod \"%s\""
 
-#: ../gio/gdbusconnection.c:4343
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4562
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4756
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
-msgstr ""
+msgstr "Metoden \"%s\" returnerade typen \"%s\", men förväntade \"%s\""
 
-#: ../gio/gdbusconnection.c:5558
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
-msgstr ""
+msgstr "Metoden \"%s\" på gränssnittet \"%s\" med signaturen \"%s\" finns inte"
 
-#: ../gio/gdbusconnection.c:5676
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ett underträd har redan exporterats för %s"
@@ -1881,13 +1890,13 @@
 msgstr ""
 
 #: ../gio/gdbusmethodinvocation.c:406
-#: ../gio/gsocket.c:2974
-#: ../gio/gsocket.c:3055
+#: ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3104
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fel vid sändning av meddelande: %s"
 
-#: ../gio/gdbusprivate.c:1766
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "Kunde inte läsa in /var/lib/dbus/machine-id: "
 
@@ -1896,18 +1905,18 @@
 msgid "Trying to set property %s of type %s but according to the expected interface the type is %s"
 msgstr ""
 
-#: ../gio/gdbusproxy.c:1235
+#: ../gio/gdbusproxy.c:1234
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr ""
 
-#: ../gio/gdbusproxy.c:1256
+#: ../gio/gdbusproxy.c:1255
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 
-#: ../gio/gdbusproxy.c:2315
-#: ../gio/gdbusproxy.c:2472
+#: ../gio/gdbusproxy.c:2311
+#: ../gio/gdbusproxy.c:2469
 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"
 msgstr ""
 
@@ -1936,7 +1945,6 @@
 msgstr "Kan inte lyssna på transport som inte stöds \"%s\""
 
 #: ../gio/gdbus-tool.c:87
-#: ../gio/gsettings-tool.c:76
 msgid "COMMAND"
 msgstr "KOMMANDO"
 
@@ -2108,35 +2116,35 @@
 msgid "Monitor a remote object."
 msgstr "Övervaka ett fjärrobjekt."
 
-#: ../gio/gdesktopappinfo.c:467
+#: ../gio/gdesktopappinfo.c:480
 #: ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Namnlös"
 
-#: ../gio/gdesktopappinfo.c:751
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "Skrivbordsfilen angav inget Exec-fält"
 
-#: ../gio/gdesktopappinfo.c:944
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "Kunde inte hitta terminal som krävs för programmet"
 
-#: ../gio/gdesktopappinfo.c:1153
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr "Kan inte skapa programkonfigurationsmapp för användare %s: %s"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Kan inte skapa MIME-konfigurationsmapp för användare %s: %s"
 
-#: ../gio/gdesktopappinfo.c:1565
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Kan inte skapa skrivbordsfil för användare %s"
 
-#: ../gio/gdesktopappinfo.c:1679
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Anpassad definition för %s"
@@ -2174,47 +2182,47 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Felformaterat antal token (%d) i GEmblem-kodning"
 
-#: ../gio/gemblemedicon.c:292
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Kan inte hantera version %d av GEmblemedIcon-kodning"
 
-#: ../gio/gemblemedicon.c:302
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Felformaterat antal token (%d) i GEmblemedIcon-kodning"
 
-#: ../gio/gemblemedicon.c:325
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Förväntade en GEmblem för GEmblemedIcon"
 
-#: ../gio/gfile.c:870
-#: ../gio/gfile.c:1100
-#: ../gio/gfile.c:1235
-#: ../gio/gfile.c:1471
-#: ../gio/gfile.c:1525
-#: ../gio/gfile.c:1582
-#: ../gio/gfile.c:1665
-#: ../gio/gfile.c:1720
-#: ../gio/gfile.c:1780
-#: ../gio/gfile.c:1834
-#: ../gio/gfile.c:3304
-#: ../gio/gfile.c:3358
-#: ../gio/gfile.c:3490
-#: ../gio/gfile.c:3530
-#: ../gio/gfile.c:3857
-#: ../gio/gfile.c:4259
-#: ../gio/gfile.c:4345
-#: ../gio/gfile.c:4434
-#: ../gio/gfile.c:4532
-#: ../gio/gfile.c:4619
-#: ../gio/gfile.c:4712
-#: ../gio/gfile.c:5042
-#: ../gio/gfile.c:5322
-#: ../gio/gfile.c:5391
-#: ../gio/gfile.c:6983
-#: ../gio/gfile.c:7073
-#: ../gio/gfile.c:7159
+#: ../gio/gfile.c:872
+#: ../gio/gfile.c:1103
+#: ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475
+#: ../gio/gfile.c:1529
+#: ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669
+#: ../gio/gfile.c:1724
+#: ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838
+#: ../gio/gfile.c:3308
+#: ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494
+#: ../gio/gfile.c:3535
+#: ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264
+#: ../gio/gfile.c:4350
+#: ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537
+#: ../gio/gfile.c:4624
+#: ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039
+#: ../gio/gfile.c:5306
+#: ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945
+#: ../gio/gfile.c:7035
+#: ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Åtgärden stöds inte"
@@ -2227,63 +2235,63 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1356
+#: ../gio/gfile.c:1359
 #: ../gio/glocalfile.c:1059
 #: ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "Infattande montering finns inte"
 
-#: ../gio/gfile.c:2408
+#: ../gio/gfile.c:2412
 #: ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "Kan inte kopiera över katalog"
 
-#: ../gio/gfile.c:2469
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Kan inte kopiera katalog över katalog"
 
-#: ../gio/gfile.c:2477
+#: ../gio/gfile.c:2481
 #: ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "Målfilen finns"
 
-#: ../gio/gfile.c:2495
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Kan inte kopiera katalogen rekursivt"
 
-#: ../gio/gfile.c:2755
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Splice stöds inte"
 
-#: ../gio/gfile.c:2759
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fel vid splice av fil: %s"
 
-#: ../gio/gfile.c:2906
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Kan inte kopiera specialfil"
 
-#: ../gio/gfile.c:3480
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "Ogiltigt värde för symbolisk länk angivet"
 
-#: ../gio/gfile.c:3573
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Papperskorgen stöds inte"
 
-#: ../gio/gfile.c:3622
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Filnamn får inte innehålla \"%c\""
 
-#: ../gio/gfile.c:6040
-#: ../gio/gvolume.c:330
+#: ../gio/gfile.c:6004
+#: ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "volymen har inte implementerat montering"
 
-#: ../gio/gfile.c:6151
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "Inget program är registrerat för hantering av denna fil"
 
@@ -2313,59 +2321,59 @@
 msgstr "Felformaterad inmatningsdata för GFileIcon"
 
 #: ../gio/gfileinputstream.c:154
-#: ../gio/gfileinputstream.c:421
+#: ../gio/gfileinputstream.c:420
 #: ../gio/gfileiostream.c:170
 #: ../gio/gfileoutputstream.c:169
-#: ../gio/gfileoutputstream.c:524
+#: ../gio/gfileoutputstream.c:523
 msgid "Stream doesn't support query_info"
 msgstr "Strömmen saknar stöd för query_info"
 
-#: ../gio/gfileinputstream.c:336
-#: ../gio/gfileiostream.c:388
-#: ../gio/gfileoutputstream.c:382
+#: ../gio/gfileinputstream.c:335
+#: ../gio/gfileiostream.c:387
+#: ../gio/gfileoutputstream.c:381
 msgid "Seek not supported on stream"
 msgstr "Sökning stöds inte på strömmen"
 
-#: ../gio/gfileinputstream.c:380
+#: ../gio/gfileinputstream.c:379
 msgid "Truncate not allowed on input stream"
 msgstr "Kapning tillåts inte på inmatningsströmmen"
 
-#: ../gio/gfileiostream.c:464
-#: ../gio/gfileoutputstream.c:458
+#: ../gio/gfileiostream.c:463
+#: ../gio/gfileoutputstream.c:457
 msgid "Truncate not supported on stream"
 msgstr "Kapning stöds inte på strömmen"
 
-#: ../gio/gicon.c:285
+#: ../gio/gicon.c:287
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Fel antal token (%d)"
 
-#: ../gio/gicon.c:305
+#: ../gio/gicon.c:307
 #, c-format
 msgid "No type for class name %s"
 msgstr "Ingen typ för klassnamnet %s"
 
-#: ../gio/gicon.c:315
+#: ../gio/gicon.c:317
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Typen %s implementerar inte GIcon-gränssnittet"
 
-#: ../gio/gicon.c:326
+#: ../gio/gicon.c:328
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Typen %s är inte klassad"
 
-#: ../gio/gicon.c:340
+#: ../gio/gicon.c:342
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Felformaterat versionsnummer: %s"
 
-#: ../gio/gicon.c:354
+#: ../gio/gicon.c:356
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Typen %s implementerar inte from_tokens() på GIcon-gränssnittet"
 
-#: ../gio/gicon.c:430
+#: ../gio/gicon.c:432
 msgid "Can't handle the supplied version the icon encoding"
 msgstr "Kan inte hantera angiven version för ikonkodningen"
 
@@ -2379,9 +2387,9 @@
 #. 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:901
+#: ../gio/ginputstream.c:898
 #: ../gio/giostream.c:316
-#: ../gio/goutputstream.c:1209
+#: ../gio/goutputstream.c:1207
 msgid "Stream has outstanding operation"
 msgstr "Strömmen har kvarstående åtgärd"
 
@@ -2395,6 +2403,257 @@
 msgid "Unsupported socket address"
 msgstr "Uttagsadressen stöds inte"
 
+#: ../gio/glib-compile-schemas.c:713
+msgid "empty names are not permitted"
+msgstr "tomma namn tillåts inte"
+
+#: ../gio/glib-compile-schemas.c:723
+#, c-format
+msgid "invalid name '%s': names must begin with a lowercase letter"
+msgstr "ogiltigt namn \"%s\": namn måste börja med en liten bokstav"
+
+#: ../gio/glib-compile-schemas.c:735
+#, c-format
+msgid "invalid name '%s': invalid character '%c'; only lowercase letters, numbers and dash ('-') are permitted."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:744
+#, c-format
+msgid "invalid name '%s': two successive dashes ('--') are not permitted."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:753
+#, c-format
+msgid "invalid name '%s': the last character may not be a dash ('-')."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:761
+#, c-format
+msgid "invalid name '%s': maximum length is 32"
+msgstr "ogiltigt namn \"%s\": maximal längd är 32"
+
+#: ../gio/glib-compile-schemas.c:830
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr "<child name='%s'> redan angiven"
+
+#: ../gio/glib-compile-schemas.c:856
+msgid "can not add keys to a 'list-of' schema"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:867
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr "<key name='%s'> redan angiven"
+
+#: ../gio/glib-compile-schemas.c:885
+#, c-format
+msgid "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value"
+msgstr "<key name='%s'> skuggar <key name='%s'> i <schema id='%s'>; använd <override> för att ändra värdet"
+
+#: ../gio/glib-compile-schemas.c:896
+#, c-format
+msgid "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:915
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr "<%s id='%s'> inte (ännu) angiven."
+
+#: ../gio/glib-compile-schemas.c:930
+#, c-format
+msgid "invalid GVariant type string '%s'"
+msgstr "ogiltig GVariant-typsträng \"%s\""
+
+#: ../gio/glib-compile-schemas.c:960
+msgid "<override> given but schema isn't extending anything"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:973
+#, c-format
+msgid "no <key name='%s'> to override"
+msgstr "ingen <key name='%s'> att åsidosätta"
+
+#: ../gio/glib-compile-schemas.c:981
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr "<override name='%s'> redan angiven"
+
+#: ../gio/glib-compile-schemas.c:1052
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr "<schema id='%s'> redan angiven"
+
+#: ../gio/glib-compile-schemas.c:1064
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1080
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1088
+#, c-format
+msgid "Can not be a list of a schema with a path"
+msgstr "Kan inte vara en lista för ett schema med en sökväg"
+
+#: ../gio/glib-compile-schemas.c:1098
+#, c-format
+msgid "Can not extend a schema with a path"
+msgstr "Kan inte utöka ett schema med en sökväg"
+
+#: ../gio/glib-compile-schemas.c:1108
+#, c-format
+msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1118
+#, c-format
+msgid "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s'"
+msgstr "<schema id='%s' list-of='%s'> utökar <schema id='%s' list-of='%s'> men \"%s\" utökar inte \"%s\""
+
+#: ../gio/glib-compile-schemas.c:1135
+#, c-format
+msgid "a path, if given, must begin and end with a slash"
+msgstr "en sökväg, om angiven, måste börja och sluta med ett snedstreck"
+
+#: ../gio/glib-compile-schemas.c:1142
+#, c-format
+msgid "the path of a list must end with ':/'"
+msgstr "sökvägen för en lista måste sluta med \":/\""
+
+#: ../gio/glib-compile-schemas.c:1168
+#, c-format
+msgid "<%s id='%s'> already specified"
+msgstr "<%s id='%s'> redan angiven"
+
+#: ../gio/glib-compile-schemas.c:1387
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr "Elementet <%s> tillåts inte inuti <%s>"
+
+#: ../gio/glib-compile-schemas.c:1391
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr "Elementet <%s> tillåts inte på toppnivå"
+
+#: ../gio/glib-compile-schemas.c:1485
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr "text får inte vara inuti <%s>"
+
+#. Translators: Do not translate "--strict".
+#: ../gio/glib-compile-schemas.c:1654
+#: ../gio/glib-compile-schemas.c:1725
+#: ../gio/glib-compile-schemas.c:1801
+#, c-format
+msgid "--strict was specified; exiting.\n"
+msgstr "--strict angavs; avslutar.\n"
+
+#: ../gio/glib-compile-schemas.c:1662
+#, c-format
+msgid "This entire file has been ignored.\n"
+msgstr "Hela denna filen har ignorerats.\n"
+
+#: ../gio/glib-compile-schemas.c:1721
+#, c-format
+msgid "Ignoring this file.\n"
+msgstr "Ignorerar denna fil.\n"
+
+#: ../gio/glib-compile-schemas.c:1761
+#, c-format
+msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1767
+#: ../gio/glib-compile-schemas.c:1825
+#: ../gio/glib-compile-schemas.c:1853
+#, c-format
+msgid "; ignoring override for this key.\n"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1771
+#: ../gio/glib-compile-schemas.c:1829
+#: ../gio/glib-compile-schemas.c:1857
+#, c-format
+msgid " and --strict was specified; exiting.\n"
+msgstr " och --strict angavs; avslutar.\n"
+
+#: ../gio/glib-compile-schemas.c:1787
+#, c-format
+msgid "error parsing key `%s' in schema `%s' as specified in override file `%s': %s.  "
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1797
+#, c-format
+msgid "Ignoring override for this key.\n"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1815
+#, c-format
+msgid "override for key `%s' in schema `%s' in override file `%s' is out of the range given in the schema"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1843
+#, c-format
+msgid "override for key `%s' in schema `%s' in override file `%s' is not in the list of valid choices"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1897
+msgid "where to store the gschemas.compiled file"
+msgstr "var filen gschemas.compiled ska lagras"
+
+#: ../gio/glib-compile-schemas.c:1897
+#: ../gio/glib-compile-schemas.c:1910
+msgid "DIRECTORY"
+msgstr "KATALOG"
+
+#: ../gio/glib-compile-schemas.c:1898
+msgid "Abort on any errors in schemas"
+msgstr "Avbryt vid alla möjliga fel i scheman"
+
+#: ../gio/glib-compile-schemas.c:1899
+msgid "Do not write the gschema.compiled file"
+msgstr "Skriv inte filen gschema.compiled"
+
+#: ../gio/glib-compile-schemas.c:1900
+msgid "This option will be removed soon."
+msgstr "Denna flagga kommer snart att försvinna."
+
+#: ../gio/glib-compile-schemas.c:1901
+msgid "Do not enforce key name restrictions"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1913
+msgid ""
+"Compile all GSettings schema files into a schema cache.\n"
+"Schema files are required to have the extension .gschema.xml,\n"
+"and the cache file is called gschemas.compiled."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1929
+#, c-format
+msgid "You should give exactly one directory name\n"
+msgstr "Du bör ange exakt ett katalognamn\n"
+
+#: ../gio/glib-compile-schemas.c:1968
+#, c-format
+msgid "No schema files found: "
+msgstr "Inga schemafiler hittades: "
+
+#: ../gio/glib-compile-schemas.c:1971
+#, c-format
+msgid "doing nothing.\n"
+msgstr "gör ingenting.\n"
+
+#: ../gio/glib-compile-schemas.c:1974
+#, c-format
+msgid "removed existing output file.\n"
+msgstr ""
+
 #: ../gio/glocaldirectorymonitor.c:287
 msgid "Unable to find default local directory monitor type"
 msgstr "Kunde inte hitta standardtyp för lokal katalogövervakare"
@@ -2790,260 +3049,357 @@
 msgid "Hostname '%s' contains '[' but not ']'"
 msgstr "Värdnamnet \"%s\" innehåller \"[\" men inte \"]\""
 
-#: ../gio/goutputstream.c:206
-#: ../gio/goutputstream.c:407
+#: ../gio/goutputstream.c:207
+#: ../gio/goutputstream.c:408
 msgid "Output stream doesn't implement write"
 msgstr "Utmatningsström har inte implementerat skrivning"
 
-#: ../gio/goutputstream.c:368
-#: ../gio/goutputstream.c:848
+#: ../gio/goutputstream.c:369
+#: ../gio/goutputstream.c:849
 msgid "Source stream is already closed"
 msgstr "Källströmmen är redan stängd"
 
-#: ../gio/gresolver.c:735
+#: ../gio/gresolver.c:737
 #, c-format
 msgid "Error resolving '%s': %s"
 msgstr "Fel vid uppslag av \"%s\": %s"
 
-#: ../gio/gresolver.c:785
+#: ../gio/gresolver.c:787
 #, c-format
 msgid "Error reverse-resolving '%s': %s"
 msgstr "Fel vid omvänt uppslag av \"%s\": %s"
 
-#: ../gio/gresolver.c:820
-#: ../gio/gresolver.c:898
+#: ../gio/gresolver.c:822
+#: ../gio/gresolver.c:900
 #, c-format
 msgid "No service record for '%s'"
 msgstr "Ingen tjänstepost för \"%s\""
 
-#: ../gio/gresolver.c:825
-#: ../gio/gresolver.c:903
+#: ../gio/gresolver.c:827
+#: ../gio/gresolver.c:905
 #, c-format
 msgid "Temporarily unable to resolve '%s'"
 msgstr "Kan för tillfället inte slå upp \"%s\""
 
-#: ../gio/gresolver.c:830
-#: ../gio/gresolver.c:908
+#: ../gio/gresolver.c:832
+#: ../gio/gresolver.c:910
 #, c-format
 msgid "Error resolving '%s'"
 msgstr "Fel vid uppslag av \"%s\""
 
-#: ../gio/gsettings-tool.c:79
+#: ../gio/gsettings-tool.c:60
+#, c-format
+msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:65
+#: ../gio/gsettings-tool.c:82
+#, c-format
+msgid "No such schema '%s'\n"
+msgstr "Inget sådant schema \"%s\"\n"
+
+#: ../gio/gsettings-tool.c:77
+#, c-format
+msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:92
+#, c-format
+msgid "Empty path given.\n"
+msgstr "Tom sökväg angavs.\n"
+
+#: ../gio/gsettings-tool.c:98
+#, fuzzy, c-format
+msgid "Path must begin with a slash (/)\n"
+msgstr "en sökväg, om angiven, måste börja och sluta med ett snedstreck"
+
+#: ../gio/gsettings-tool.c:104
+#, fuzzy, c-format
+msgid "Path must end with a slash (/)\n"
+msgstr "en sökväg, om angiven, måste börja och sluta med ett snedstreck"
+
+#: ../gio/gsettings-tool.c:110
+#, c-format
+msgid "Path must not contain two adjacent slashes (//)\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:131
+#, c-format
+msgid "No such key '%s'\n"
+msgstr "Ingen sådan nyckel \"%s\"\n"
+
+#: ../gio/gsettings-tool.c:429
+#, c-format
+msgid "The provided value is outside of the valid range\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:458
+msgid "List the installed (non-relocatable) schemas"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:464
+msgid "List the installed relocatable schemas"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:470
+msgid "Lists the keys in SCHEMA"
+msgstr "Listar nycklarna i SCHEMA"
+
+#: ../gio/gsettings-tool.c:471
+#: ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
+msgid "SCHEMA[:PATH]"
+msgstr "SCHEMA[:SÖKVÄG]"
+
+#: ../gio/gsettings-tool.c:476
+msgid "Lists the children of SCHEMA"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:482
+msgid "List keys and values, recursively"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:488
+msgid "Gets the value of KEY"
+msgstr "Hämtar värdet för NYCKEL"
+
+#: ../gio/gsettings-tool.c:489
+#: ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507
+#: ../gio/gsettings-tool.c:513
+msgid "SCHEMA[:PATH] KEY"
+msgstr "SCHEMA[:SÖKVÄG] NYCKEL"
+
+#: ../gio/gsettings-tool.c:494
+msgid "Queries the range of valid values for KEY"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:500
+msgid "Sets the value of KEY to VALUE"
+msgstr "Ställer in värdet för NYCKEL till VÄRDE"
+
+#: ../gio/gsettings-tool.c:501
+msgid "SCHEMA[:PATH] KEY VALUE"
+msgstr "SCHEMA[:SÖKVÄG] NYCKELVÄRDE"
+
+#: ../gio/gsettings-tool.c:506
+msgid "Resets KEY to its default value"
+msgstr "Återställer NYCKEL till dess standardvärde"
+
+#: ../gio/gsettings-tool.c:512
+msgid "Checks if KEY is writable"
+msgstr "Kontrollerar om NYCKEL är skrivbar"
+
+#: ../gio/gsettings-tool.c:518
+msgid ""
+"Monitors KEY for changes.\n"
+"If no KEY is specified, monitor all keys in SCHEMA.\n"
+"Use ^C to stop monitoring.\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:521
+msgid "SCHEMA[:PATH] [KEY]"
+msgstr "SCHEMA[:SÖKVÄG] [NYCKEL]"
+
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
-"Commands:\n"
-"  help        Show this information\n"
-"  get         Get the value of a key\n"
-"  set         Set the value of a key\n"
-"  reset       Reset the value of a key\n"
-"  monitor     Monitor a key for changes\n"
-"  writable    Check if a key is writable\n"
+"Unknown command %s\n"
 "\n"
-"Use '%s COMMAND --help' to get help for individual commands.\n"
+msgstr ""
+"Okänt kommando %s\n"
+"\n"
+
+#: ../gio/gsettings-tool.c:533
+msgid ""
+"Usage:\n"
+"  gsettings COMMAND [ARGS...]\n"
+"\n"
+"Commands:\n"
+"  help                      Show this information\n"
+"  list-schemas              List installed schemas\n"
+"  list-relocatable-schemas  List relocatable schemas\n"
+"  list-keys                 List keys in a schema\n"
+"  list-children             List children of a schema\n"
+"  list-recursively          List keys and values, recursively\n"
+"  range                     Queries the range of a key\n"
+"  get                       Get the value of a key\n"
+"  set                       Set the value of a key\n"
+"  reset                     Reset the value of a key\n"
+"  writable                  Check if a key is writable\n"
+"  monitor                   Watch for changes\n"
+"\n"
+"Use 'gsettings help COMMAND' to get detailed help.\n"
+"\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:220
-#: ../gio/gsettings-tool.c:320
-#: ../gio/gsettings-tool.c:436
-#: ../gio/gsettings-tool.c:531
-#: ../gio/gsettings-tool.c:644
-msgid "Specify the path for the schema"
-msgstr "Ange sökvägen för schemat"
+#: ../gio/gsettings-tool.c:554
+#, c-format
+msgid ""
+"Usage:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
+msgstr ""
+"Användning:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
 
-#: ../gio/gsettings-tool.c:220
-#: ../gio/gsettings-tool.c:320
-#: ../gio/gsettings-tool.c:436
-#: ../gio/gsettings-tool.c:531
-#: ../gio/gsettings-tool.c:644
-msgid "PATH"
-msgstr "SÖKVÄG"
+#: ../gio/gsettings-tool.c:559
+msgid "Arguments:\n"
+msgstr "Argument:\n"
 
-#: ../gio/gsettings-tool.c:228
-#: ../gio/gsettings-tool.c:539
+#: ../gio/gsettings-tool.c:563
+msgid ""
+"  SCHEMA    The name of the schema\n"
+"  PATH      The path, for relocatable schemas\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:568
+msgid "  KEY       The (optional) key within the schema\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:572
+msgid "  KEY       The key within the schema\n"
+msgstr ""
+
+#: ../gio/gsettings-tool.c:576
+msgid "  VALUE     The value to set\n"
+msgstr "  VÄRDE     Värdet att ställa in\n"
+
 #: ../gio/gsettings-tool.c:652
-msgid "SCHEMA KEY"
-msgstr "SCHEMANYCKEL"
-
-#: ../gio/gsettings-tool.c:230
-msgid "Get the value of KEY"
-msgstr "Hämta värdet för NYCKEL"
-
-#: ../gio/gsettings-tool.c:232
-#: ../gio/gsettings-tool.c:448
-#: ../gio/gsettings-tool.c:543
-#: ../gio/gsettings-tool.c:659
-msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
-msgstr ""
-
-#: ../gio/gsettings-tool.c:328
-#: ../gio/gsettings-tool.c:444
-msgid "SCHEMA KEY VALUE"
-msgstr ""
-
-#: ../gio/gsettings-tool.c:330
-msgid "Set the value of KEY"
-msgstr "Ställ in värdet för NYCKEL"
-
-#: ../gio/gsettings-tool.c:332
-msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
-"  VALUE       The value to set key to, as a serialized GVariant\n"
-msgstr ""
-
-#: ../gio/gsettings-tool.c:405
 #, c-format
-msgid "Key %s is not writable\n"
-msgstr "Nyckeln %s är inte skrivbar\n"
-
-#: ../gio/gsettings-tool.c:446
-msgid "Sets KEY to its default value"
-msgstr "Ställer in NYCKEL till dess standardvärde"
-
-#: ../gio/gsettings-tool.c:541
-msgid "Find out whether KEY is writable"
-msgstr "Ta reda på huruvida NYCKEL är skrivbar"
-
-#: ../gio/gsettings-tool.c:655
-msgid ""
-"Monitor KEY for changes and print the changed values.\n"
-"Monitoring will continue until the process is terminated."
+msgid "Empty schema name given"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:831
-#, c-format
-msgid "Unknown command '%s'\n"
-msgstr "Okänt kommando \"%s\"\n"
-
-#: ../gio/gsocket.c:276
+#: ../gio/gsocket.c:277
 msgid "Invalid socket, not initialized"
 msgstr "Ogiltigt uttag, inte initierat"
 
-#: ../gio/gsocket.c:283
+#: ../gio/gsocket.c:284
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ogiltigt uttag, initiering misslyckades på grund av: %s"
 
-#: ../gio/gsocket.c:291
+#: ../gio/gsocket.c:292
 msgid "Socket is already closed"
 msgstr "Uttaget är redan stängt"
 
-#: ../gio/gsocket.c:299
-#: ../gio/gsocket.c:2716
-#: ../gio/gsocket.c:2760
+#: ../gio/gsocket.c:300
+#: ../gio/gsocket.c:2765
+#: ../gio/gsocket.c:2809
 msgid "Socket I/O timed out"
 msgstr ""
 
-#: ../gio/gsocket.c:421
+#: ../gio/gsocket.c:443
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "skapar GSocket från fd: %s"
 
-#: ../gio/gsocket.c:455
-#: ../gio/gsocket.c:471
-#: ../gio/gsocket.c:2113
+#: ../gio/gsocket.c:477
+#: ../gio/gsocket.c:493
+#: ../gio/gsocket.c:2135
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kunde inte skapa uttag: %s"
 
-#: ../gio/gsocket.c:455
+#: ../gio/gsocket.c:477
 msgid "Unknown protocol was specified"
 msgstr "Okänt protokoll angavs"
 
-#: ../gio/gsocket.c:1224
+#: ../gio/gsocket.c:1246
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunde inte få lokal adress: %s"
 
-#: ../gio/gsocket.c:1267
+#: ../gio/gsocket.c:1289
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "Kunde inte få fjärradress: %s"
 
-#: ../gio/gsocket.c:1328
+#: ../gio/gsocket.c:1350
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunde inte lyssna: %s"
 
-#: ../gio/gsocket.c:1402
+#: ../gio/gsocket.c:1424
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Fel vid bindning till adress: %s"
 
-#: ../gio/gsocket.c:1522
+#: ../gio/gsocket.c:1544
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fel vid godkännande av anslutning: %s"
 
-#: ../gio/gsocket.c:1639
+#: ../gio/gsocket.c:1661
 msgid "Error connecting: "
 msgstr "Fel vid anslutning: "
 
-#: ../gio/gsocket.c:1644
+#: ../gio/gsocket.c:1666
 msgid "Connection in progress"
 msgstr "Anslutningsförsök pågår"
 
-#: ../gio/gsocket.c:1651
+#: ../gio/gsocket.c:1673
 #, c-format
 msgid "Error connecting: %s"
 msgstr "Fel vid anslutning: %s"
 
-#: ../gio/gsocket.c:1694
-#: ../gio/gsocket.c:3479
+#: ../gio/gsocket.c:1716
+#: ../gio/gsocket.c:3528
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr "Kunde inte få tag på väntande fel: %s"
 
-#: ../gio/gsocket.c:1826
+#: ../gio/gsocket.c:1848
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fel vid mottagning av data: %s"
 
-#: ../gio/gsocket.c:2000
+#: ../gio/gsocket.c:2022
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fel vid sändning av data: %s"
 
-#: ../gio/gsocket.c:2192
+#: ../gio/gsocket.c:2214
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fel vid stängning av uttag: %s"
 
-#: ../gio/gsocket.c:2709
+#: ../gio/gsocket.c:2758
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Väntar på uttagstillstånd: %s"
 
-#: ../gio/gsocket.c:2999
+#: ../gio/gsocket.c:3048
 msgid "GSocketControlMessage not supported on windows"
 msgstr "GSocketControlMessage stöds inte på Windows"
 
-#: ../gio/gsocket.c:3258
-#: ../gio/gsocket.c:3399
+#: ../gio/gsocket.c:3307
+#: ../gio/gsocket.c:3448
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fel vid mottagning av meddelande: %s"
 
-#: ../gio/gsocket.c:3494
+#: ../gio/gsocket.c:3543
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials har inte implementerats för detta operativsystem"
 
-#: ../gio/gsocketclient.c:674
-#: ../gio/gsocketclient.c:1153
+#: ../gio/gsocketclient.c:798
+#: ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Okänt fel inträffade vid anslutning"
 
-#: ../gio/gsocketclient.c:711
-#: ../gio/gsocketclient.c:1038
+#: ../gio/gsocketclient.c:836
+#: ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr "Försök att skicka via proxy över en icke-TCP-anslutning stöds inte."
 
-#: ../gio/gsocketclient.c:749
-#: ../gio/gsocketclient.c:1061
+#: ../gio/gsocketclient.c:858
+#: ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "Proxyprotokollet \"%s\" stöds inte."
@@ -3140,7 +3496,7 @@
 msgstr "SOCKSv5-proxyservern saknar stöd för angiven adresstyp."
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
 msgstr "Okänt fel i SOCKSv5-proxyserver."
 
 #: ../gio/gthemedicon.c:498
@@ -3148,6 +3504,18 @@
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Kan inte hantera version %d av GThemedIcon-kodning"
 
+#: ../gio/gtlscertificate.c:228
+msgid "No PEM-encoded certificate found"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:237
+msgid "Could not parse PEM-encoded certificate"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:258
+msgid "Could not parse PEM-encoded private key"
+msgstr ""
+
 #: ../gio/gunixconnection.c:164
 #: ../gio/gunixconnection.c:505
 #, c-format
@@ -3197,18 +3565,17 @@
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fel vid inaktivning av SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:353
-#: ../gio/gunixinputstream.c:373
-#: ../gio/gunixinputstream.c:451
-#: ../gio/gunixoutputstream.c:438
+#: ../gio/gunixinputstream.c:368
+#: ../gio/gunixinputstream.c:388
+#: ../gio/gunixinputstream.c:466
 #, c-format
 msgid "Error reading from unix: %s"
 msgstr "Fel vid läsning från unix: %s"
 
-#: ../gio/gunixinputstream.c:406
-#: ../gio/gunixinputstream.c:589
-#: ../gio/gunixoutputstream.c:393
-#: ../gio/gunixoutputstream.c:545
+#: ../gio/gunixinputstream.c:421
+#: ../gio/gunixinputstream.c:601
+#: ../gio/gunixoutputstream.c:407
+#: ../gio/gunixoutputstream.c:556
 #, c-format
 msgid "Error closing unix: %s"
 msgstr "Fel vid stängning av unix: %s"
@@ -3218,8 +3585,9 @@
 msgid "Filesystem root"
 msgstr "Filsystemsrot"
 
-#: ../gio/gunixoutputstream.c:339
-#: ../gio/gunixoutputstream.c:360
+#: ../gio/gunixoutputstream.c:353
+#: ../gio/gunixoutputstream.c:374
+#: ../gio/gunixoutputstream.c:452
 #, c-format
 msgid "Error writing to unix: %s"
 msgstr "Fel vid skrivning till unix: %s"
@@ -3228,14 +3596,14 @@
 msgid "Abstract unix domain socket addresses not supported on this system"
 msgstr "Abstrakta Unix-domänuttagsadresser stöds inte på detta system"
 
-#: ../gio/gvolume.c:406
+#: ../gio/gvolume.c:408
 msgid "volume doesn't implement eject"
 msgstr "volymen har inte implementerat eject"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:485
+#: ../gio/gvolume.c:487
 msgid "volume doesn't implement eject or eject_with_operation"
 msgstr "volume har inte implementerat eject eller eject_with_operation"
 
@@ -3296,215 +3664,12 @@
 msgid "Invalid compressed data"
 msgstr "Ogiltigt komprimerat data"
 
-#: ../gio/glib-compile-schemas.c:702
-msgid "empty names are not permitted"
-msgstr "tomma namn tillåts inte"
-
-#: ../gio/glib-compile-schemas.c:712
-#, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "ogiltigt namn \"%s\": namn måste börja med en liten bokstav"
-
-#: ../gio/glib-compile-schemas.c:724
-#, c-format
-msgid "invalid name '%s': invalid character '%c'; only lowercase letters, numbers and dash ('-') are permitted."
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:733
-#, c-format
-msgid "invalid name '%s': two successive dashes ('--') are not permitted."
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:742
-#, c-format
-msgid "invalid name '%s': the last character may not be a dash ('-')."
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:750
-#, c-format
-msgid "invalid name '%s': maximum length is 32"
-msgstr "ogiltigt namn \"%s\": maximal längd är 32"
-
-#: ../gio/glib-compile-schemas.c:819
-#, c-format
-msgid "<child name='%s'> already specified"
-msgstr "<child name='%s'> redan angiven"
-
-#: ../gio/glib-compile-schemas.c:845
-msgid "can not add keys to a 'list-of' schema"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:856
-#, c-format
-msgid "<key name='%s'> already specified"
-msgstr "<key name='%s'> redan angiven"
-
-#: ../gio/glib-compile-schemas.c:874
-#, c-format
-msgid "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:885
-#, c-format
-msgid "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key>"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:904
-#, c-format
-msgid "<%s id='%s'> not (yet) defined."
-msgstr "<%s id='%s'> inte (ännu) angiven."
-
-#: ../gio/glib-compile-schemas.c:919
-#, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "ogiltig GVariant-typsträng \"%s\""
-
-#: ../gio/glib-compile-schemas.c:949
-msgid "<override> given but schema isn't extending anything"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:962
-#, c-format
-msgid "no <key name='%s'> to override"
-msgstr "ingen <key name='%s'> att åsidosätta"
-
-#: ../gio/glib-compile-schemas.c:970
-#, c-format
-msgid "<override name='%s'> already specified"
-msgstr "<override name='%s'> redan angiven"
-
-#: ../gio/glib-compile-schemas.c:1036
-#, c-format
-msgid "<schema id='%s'> already specified"
-msgstr "<schema id='%s'> redan angiven"
-
-#: ../gio/glib-compile-schemas.c:1048
-#, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1064
-#, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1072
-#, c-format
-msgid "Can not be a list of a schema with a path"
-msgstr "Kan inte vara en lista för ett schema med en sökväg"
-
-#: ../gio/glib-compile-schemas.c:1082
-#, c-format
-msgid "Can not extend a schema with a path"
-msgstr "Kan inte utöka ett schema med en sökväg"
-
-#: ../gio/glib-compile-schemas.c:1092
-#, c-format
-msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1102
-#, c-format
-msgid "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s'"
-msgstr "<schema id='%s' list-of='%s'> utökar <schema id='%s' list-of='%s'> men \"%s\" utökar inte \"%s\""
-
-#: ../gio/glib-compile-schemas.c:1119
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr "en sökväg, om angiven, måste börja och sluta med ett snedstreck"
-
-#: ../gio/glib-compile-schemas.c:1126
-#, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "sökvägen för en lista måste sluta med \":/\""
-
-#: ../gio/glib-compile-schemas.c:1148
-#, c-format
-msgid "<%s id='%s'> already specified"
-msgstr "<%s id='%s'> redan angiven"
-
-#: ../gio/glib-compile-schemas.c:1362
-#, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr "Elementet <%s> tillåts inte inuti <%s>"
-
-#: ../gio/glib-compile-schemas.c:1366
-#, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr "Elementet <%s> tillåts inte på toppnivå"
-
-#: ../gio/glib-compile-schemas.c:1460
-#, c-format
-msgid "text may not appear inside <%s>"
-msgstr "text får inte vara inuti <%s>"
-
-#: ../gio/glib-compile-schemas.c:1674
-#, c-format
-msgid "No such schema `%s' specified in override file `%s'"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1698
-#, c-format
-msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1731
-#, c-format
-msgid "override for key `%s' in schema `%s' in override file `%s' is out of the range given in the schema"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1752
-#, c-format
-msgid "override for key `%s' in schema `%s' in override file `%s' is not in the list of valid choices"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1797
-msgid "where to store the gschemas.compiled file"
-msgstr "var filen gschemas.compiled ska lagras"
-
-#: ../gio/glib-compile-schemas.c:1797
-#: ../gio/glib-compile-schemas.c:1809
-msgid "DIRECTORY"
-msgstr "KATALOG"
-
-#: ../gio/glib-compile-schemas.c:1798
-msgid "Do not write the gschema.compiled file"
-msgstr "Skriv inte filen gschema.compiled"
-
-#: ../gio/glib-compile-schemas.c:1799
-msgid "This option will be removed soon."
-msgstr "Denna flagga kommer snart att försvinna."
-
-#: ../gio/glib-compile-schemas.c:1800
-msgid "Do not enforce key name restrictions"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1812
-msgid ""
-"Compile all GSettings schema files into a schema cache.\n"
-"Schema files are required to have the extension .gschema.xml,\n"
-"and the cache file is called gschemas.compiled."
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1828
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr ""
-
-#: ../gio/glib-compile-schemas.c:1867
-#, c-format
-msgid "No schema files found: "
-msgstr "Inga schemafiler hittades: "
-
-#: ../gio/glib-compile-schemas.c:1870
-#, c-format
-msgid "doing nothing.\n"
-msgstr "gör ingenting.\n"
-
-#: ../gio/glib-compile-schemas.c:1873
-#, c-format
-msgid "removed existing output file.\n"
-msgstr ""
+#~ msgid "Specify the path for the schema"
+#~ msgstr "Ange sökvägen för schemat"
+#~ msgid "PATH"
+#~ msgstr "SÖKVÄG"
+#~ msgid "Key %s is not writable\n"
+#~ msgstr "Nyckeln %s är inte skrivbar\n"
 
 #, fuzzy
 #~ msgid "Do not give error for empty directory"
diff --git a/po/ug.po b/po/ug.po
index ba697d4..a95dea4 100644
--- a/po/ug.po
+++ b/po/ug.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=general\n"
-"POT-Creation-Date: 2010-11-16 13:41+0000\n"
+"POT-Creation-Date: 2010-12-21 12:55+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Gheyret Kenji<gheyret@yahoo.com>\n"
 "Language-Team: Uyghur Computer Science Association <UKIJ@yahoogroups.com>\n"
@@ -110,7 +110,7 @@
 #: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350
 #, c-format
 msgid "Error during conversion: %s"
-msgstr ""
+msgstr "پاراڭلىشىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../glib/gconvert.c:808 ../glib/gutf8.c:988 ../glib/gutf8.c:1198
 #: ../glib/gutf8.c:1339 ../glib/gutf8.c:1443
@@ -154,7 +154,7 @@
 
 #: ../glib/gconvert.c:2041
 msgid "Invalid hostname"
-msgstr ""
+msgstr "باش ماشىنا ئاتى ئىناۋەتسىز"
 
 #. Translators: 'before midday' indicator
 #: ../glib/gdatetime.c:149
@@ -385,135 +385,135 @@
 #: ../glib/gdir.c:115 ../glib/gdir.c:138
 #, c-format
 msgid "Error opening directory '%s': %s"
-msgstr ""
+msgstr "مۇندەرىجە '%s' نى ئېچىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
-msgstr ""
+msgstr "%lu بايت تەقسىملىيەلمىدى(ھۆججەت «%s» نى ئوقۇش ئۈچۈن)"
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "ھۆججەت '%s' ئوقۇشتا خاتالىق كۆرۈلدى:  %s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
-msgstr ""
+msgstr "ھۆججەت «%s» بەك چوڭ"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
-msgstr ""
+msgstr "ھۆججەت '%s' دىن ئوقۇش مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "ھۆججەت «%s» نى ئاچالمىدى: %s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نىڭ خاسلىقلىرىغا ئېرىشىش مەغلۇپ بولدى:fstat() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى ئېچىش مەغلۇپ بولدى: fdopen() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr ""
+msgstr "ئاتىنى '%s' دىن '%s' غا ئۆزگەرتىش مەغلۇپ بولدى: g_rename()  مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
-msgstr ""
+msgstr "ھۆججەت '%s' قۇرۇش مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr ""
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى يېزىش مەغلۇپ بولدى: fwrite() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى يېزىش مەغلۇپ بولدى: fflush() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى يېزىش مەغلۇپ بولدى: fsync() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى يېپىش مەغلۇپ بولدى: fclose() مەغلۇپ بولدى: %s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr ""
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr ""
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr ""
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
-msgstr[0] "بايت %u"
+msgstr[0] "%u بايت"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr ""
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr ""
 
@@ -542,7 +542,7 @@
 #: ../glib/gmappedfile.c:150
 #, c-format
 msgid "Failed to open file '%s': open() failed: %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى ئېچىش مەغلۇپ بولدى: open() مەغلۇپ بولدى: %s"
 
 #: ../glib/gmappedfile.c:229
 #, c-format
@@ -552,7 +552,7 @@
 #: ../glib/gmarkup.c:307 ../glib/gmarkup.c:347
 #, c-format
 msgid "Error on line %d char %d: "
-msgstr ""
+msgstr "قۇر %d ھەرپ %d دىكى خاتالىق: "
 
 #: ../glib/gmarkup.c:367 ../glib/gmarkup.c:445
 #, c-format
@@ -572,7 +572,7 @@
 #: ../glib/gmarkup.c:498
 #, c-format
 msgid "Error on line %d: %s"
-msgstr ""
+msgstr "قۇر %d دىكى خاتالىق:%s"
 
 #: ../glib/gmarkup.c:582
 #, c-format
@@ -611,7 +611,7 @@
 
 #: ../glib/gmarkup.c:1018
 msgid "Document must begin with an element (e.g. <book>)"
-msgstr ""
+msgstr "پۈتۈك چوقۇم بىر ئېلېمېنت بىلەن باشلىنىشى كېرەك(مەسىلەن <book> دېگەندەك)"
 
 #: ../glib/gmarkup.c:1058
 #, c-format
@@ -665,16 +665,16 @@
 #: ../glib/gmarkup.c:1476
 #, c-format
 msgid "Element '%s' was closed, no element is currently open"
-msgstr ""
+msgstr "ئېلېمېنت '%s' يېپىلدى، بىراق ھازىر ھېچقانداق ئېلېمېنت ئېچىلمىغان"
 
 #: ../glib/gmarkup.c:1485
 #, c-format
 msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr ""
+msgstr "ئېلېمېنت '%s' يېپىلدى، بىراق ھازىر ئېلېمېنت '%s' ئېچىلغان ئىدى"
 
 #: ../glib/gmarkup.c:1652
 msgid "Document was empty or contained only whitespace"
-msgstr ""
+msgstr "پۈتۈك قۇرۇق ياكى ئۇنىڭدا بوشلۇق بەلگىلىرىلا بار"
 
 #: ../glib/gmarkup.c:1666
 msgid "Document ended unexpectedly just after an open angle bracket '<'"
@@ -850,7 +850,7 @@
 
 #: ../glib/gregex.c:324
 msgid "regular expression too large"
-msgstr ""
+msgstr "مۇنتىزىم ئىپادە بەك چوڭ"
 
 #: ../glib/gregex.c:327
 msgid "failed to get memory"
@@ -1060,7 +1060,7 @@
 #: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1352
 #, c-format
 msgid "Failed to change to directory '%s' (%s)"
-msgstr ""
+msgstr "مۇندەرىجە '%s' (%s) نى ئۆزگەرتىش مەغلۇپ بولدى"
 
 #: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494
 #, c-format
@@ -1070,7 +1070,7 @@
 #: ../glib/gspawn-win32.c:444
 #, c-format
 msgid "Invalid program name: %s"
-msgstr ""
+msgstr "پروگرامما ئاتى ئىناۋەتسىز: %s"
 
 #: ../glib/gspawn-win32.c:454 ../glib/gspawn-win32.c:722
 #: ../glib/gspawn-win32.c:1278
@@ -1082,7 +1082,7 @@
 #: ../glib/gspawn-win32.c:1311
 #, c-format
 msgid "Invalid string in environment: %s"
-msgstr ""
+msgstr "مۇھىتتىكى تېكىست ئىناۋەتسىز: %s"
 
 #: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259
 #, c-format
@@ -1108,12 +1108,12 @@
 #: ../glib/gspawn.c:335
 #, c-format
 msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
+msgstr "جەريان (%s) دىن سانلىق مەلۇمات ئوقۇۋاتقاندا select() دا تاسادىپىي خاتالىق كۆرۈلدى"
 
 #: ../glib/gspawn.c:420
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
-msgstr ""
+msgstr "waitpid() دا تاسادىپىي خاتالىق كۆرۈلدى (%s)"
 
 #: ../glib/gspawn.c:1212
 #, c-format
@@ -1168,7 +1168,7 @@
 
 #: ../glib/goption.c:866
 msgid "Help Options:"
-msgstr ""
+msgstr "ياردەم تاللانمىسى:"
 
 #: ../glib/goption.c:867
 msgid "Show help options"
@@ -1205,7 +1205,7 @@
 #: ../glib/goption.c:1303 ../glib/goption.c:1382
 #, c-format
 msgid "Error parsing option %s"
-msgstr ""
+msgstr "تاللانما %s نى تەھلىل قىلىۋاتقاندا خاتالىق كۆرۈلدى"
 
 #: ../glib/goption.c:1413 ../glib/goption.c:1527
 #, c-format
@@ -1238,7 +1238,7 @@
 #: ../glib/gkeyfile.c:824
 #, c-format
 msgid "Invalid group name: %s"
-msgstr ""
+msgstr "ئىناۋەتسىز گۇرۇپپا ئاتى: %s"
 
 #: ../glib/gkeyfile.c:846
 msgid "Key file does not start with a group"
@@ -1247,7 +1247,7 @@
 #: ../glib/gkeyfile.c:872
 #, c-format
 msgid "Invalid key name: %s"
-msgstr ""
+msgstr "ئاچقۇچ ئاتى ئىناۋەتسىز: %s"
 
 #: ../glib/gkeyfile.c:899
 #, c-format
@@ -1311,7 +1311,7 @@
 #: ../glib/gkeyfile.c:3814
 #, c-format
 msgid "Integer value '%s' out of range"
-msgstr ""
+msgstr "پۈتۈن سان قىممىتى '%s' چەكتىن ئېشىپ كەتتى"
 
 #: ../glib/gkeyfile.c:3847
 #, c-format
@@ -1336,16 +1336,16 @@
 msgid "Stream is already closed"
 msgstr ""
 
-#: ../gio/gcancellable.c:432 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "مەشغۇلات بىكار قىلىندى"
 
 #: ../gio/gcharsetconverter.c:263
 msgid "Invalid object, not initialized"
-msgstr ""
+msgstr "ئىناۋەتسىز نەڭ. دەسلەپلەشتۈرۈلمىگەن"
 
 #: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312
 msgid "Incomplete multibyte sequence in input"
@@ -1353,9 +1353,9 @@
 
 #: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327
 msgid "Not enough space in destination"
-msgstr ""
+msgstr "نىشاندا يېتەرلىك بوشلۇق يوق"
 
-#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:831
+#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:832
 msgid "Cancellable initialization not supported"
 msgstr "فورماتلاشنى ئىناۋەتسىز قىلىشقا بولمايدۇ"
 
@@ -1375,7 +1375,7 @@
 
 #: ../gio/gcredentials.c:246 ../gio/gcredentials.c:441
 msgid "GCredentials is not implemented on this OS"
-msgstr ""
+msgstr "GCredentials نى بۇ OS دا ئىشلەتكىلى بولمايدۇ"
 
 #: ../gio/gcredentials.c:396
 msgid "There is no GCredentials support for your platform"
@@ -1455,7 +1455,7 @@
 
 #: ../gio/gdbusaddress.c:632
 msgid "Error auto-launching: "
-msgstr ""
+msgstr "ئاپتوماتىك ئىجرا قىلىشتا خاتالىق كۆرۈلدى: "
 
 #: ../gio/gdbusaddress.c:640
 #, c-format
@@ -1510,14 +1510,14 @@
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "- unknown value `%s'"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1560,7 +1560,7 @@
 #: ../gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error creating directory `%s': %s"
-msgstr ""
+msgstr "مۇندەرىجە `%s' نى قۇرۇۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gdbusauthmechanismsha1.c:382
 #, c-format
@@ -1597,7 +1597,7 @@
 #: ../gio/gdbusauthmechanismsha1.c:566
 #, c-format
 msgid "Error creating lock file `%s': %s"
-msgstr ""
+msgstr "قۇلۇپ ھۆججىتى `%s' نى قۇرۇۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gdbusauthmechanismsha1.c:596
 #, c-format
@@ -1620,85 +1620,85 @@
 msgstr ""
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:2299
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
 msgid ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
-msgstr ""
+msgstr "`%s' بۇنداق خاسلىق يوق"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
-msgstr ""
+msgstr "`%s' بۇنداق ئارايۈز يوق"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
-msgstr ""
+msgstr "بۇنداق ئارايۈز يوق"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr ""
@@ -1856,13 +1856,13 @@
 msgid "Type of return value is incorrect, got `%s', expected `%s'"
 msgstr ""
 
-#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:2992
-#: ../gio/gsocket.c:3073
+#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3104
 #, c-format
 msgid "Error sending message: %s"
-msgstr ""
+msgstr "ئۇچۇر يوللاۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr ""
 
@@ -2006,12 +2006,12 @@
 #: ../gio/gdbus-tool.c:646 ../gio/gdbus-tool.c:1264 ../gio/gdbus-tool.c:1524
 #, c-format
 msgid "Error: Destination is not specified\n"
-msgstr ""
+msgstr "خاتالىق: نىشان بەلگىلەنمىگەن\n"
 
 #: ../gio/gdbus-tool.c:667 ../gio/gdbus-tool.c:1283
 #, c-format
 msgid "Error: Object path is not specified\n"
-msgstr ""
+msgstr "خاتالىق: نەڭ يولى بەلگىلەنمىگەن\n"
 
 #: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1303 ../gio/gdbus-tool.c:1564
 #, c-format
@@ -2021,7 +2021,7 @@
 #: ../gio/gdbus-tool.c:702
 #, c-format
 msgid "Error: Method name is not specified\n"
-msgstr ""
+msgstr "خاتالىق: Method ئاتى بەلگىلەنمىگەن\n"
 
 #: ../gio/gdbus-tool.c:713
 #, c-format
@@ -2036,7 +2036,7 @@
 #: ../gio/gdbus-tool.c:786
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
-msgstr ""
+msgstr "پارامېتىر %d تەھلىل قىلىۋاتقاندا خاتالىق كۆرۈلدى: %s\n"
 
 #: ../gio/gdbus-tool.c:1162
 msgid "Destination name to introspect"
@@ -2060,40 +2060,40 @@
 
 #: ../gio/gdbus-tool.c:1424
 msgid "Object path to monitor"
-msgstr ""
+msgstr "كۆزىتىدىغان نەڭنىڭ يولى"
 
 #: ../gio/gdbus-tool.c:1457
 msgid "Monitor a remote object."
-msgstr ""
+msgstr "يىراقتىكى نەڭنى كۆزىتىدۇ."
 
-#: ../gio/gdesktopappinfo.c:469 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "ئاتسىز"
 
-#: ../gio/gdesktopappinfo.c:753
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:946
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1155
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1159
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1567
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1681
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr ""
@@ -2131,29 +2131,29 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr ""
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr ""
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr ""
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr ""
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "مەشغۇلاتنى قوللىمايدۇ"
@@ -2166,58 +2166,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr ""
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr ""
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "مۇندەرىجىنى مۇندەرىجىگە كۆچۈرەلمىدى"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "نىشان ھۆججەت مەۋجۇت"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "مۇندەرىجىنى قايتىلانما كۆچۈرەلمەيدۇ"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr ""
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr ""
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr ""
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr ""
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr ""
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
-msgstr ""
+msgstr "ھۆججەت ئاتىدا '%c' بولسا بولمايدۇ"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr ""
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr ""
 
@@ -2285,7 +2285,7 @@
 #: ../gio/gicon.c:342
 #, c-format
 msgid "Malformed version number: %s"
-msgstr ""
+msgstr "قۇرۇلمىسى خاتا نەشر نومۇرى: %s"
 
 #: ../gio/gicon.c:356
 #, c-format
@@ -2314,7 +2314,7 @@
 #: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198
 #: ../gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
-msgstr ""
+msgstr "socket ئادرېسى ئۈچۈن يېتەرلىك بوشلۇق يوق"
 
 #: ../gio/ginetsocketaddress.c:211
 msgid "Unsupported socket address"
@@ -2456,128 +2456,128 @@
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> ئاللىقاچان بەلگىلەنگەن"
 
-#: ../gio/glib-compile-schemas.c:1385
+#: ../gio/glib-compile-schemas.c:1387
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
-msgstr ""
+msgstr "ئېلېمېنت <%s> نى <%s> نىڭ ئىچىدە ئىشلەتكىلى بولمايدۇ"
 
-#: ../gio/glib-compile-schemas.c:1389
+#: ../gio/glib-compile-schemas.c:1391
 #, c-format
 msgid "Element <%s> not allowed at toplevel"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1483
+#: ../gio/glib-compile-schemas.c:1485
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr ""
 
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1652 ../gio/glib-compile-schemas.c:1723
-#: ../gio/glib-compile-schemas.c:1799
+#: ../gio/glib-compile-schemas.c:1654 ../gio/glib-compile-schemas.c:1725
+#: ../gio/glib-compile-schemas.c:1801
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1660
+#: ../gio/glib-compile-schemas.c:1662
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1719
+#: ../gio/glib-compile-schemas.c:1721
 #, c-format
 msgid "Ignoring this file.\n"
-msgstr ""
+msgstr "بۇ ھۆججەتكە پەرۋا قىلمايدۇ.\n"
 
-#: ../gio/glib-compile-schemas.c:1759
+#: ../gio/glib-compile-schemas.c:1761
 #, c-format
 msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1765 ../gio/glib-compile-schemas.c:1823
-#: ../gio/glib-compile-schemas.c:1851
+#: ../gio/glib-compile-schemas.c:1767 ../gio/glib-compile-schemas.c:1825
+#: ../gio/glib-compile-schemas.c:1853
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1769 ../gio/glib-compile-schemas.c:1827
-#: ../gio/glib-compile-schemas.c:1855
+#: ../gio/glib-compile-schemas.c:1771 ../gio/glib-compile-schemas.c:1829
+#: ../gio/glib-compile-schemas.c:1857
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1785
+#: ../gio/glib-compile-schemas.c:1787
 #, c-format
 msgid ""
 "error parsing key `%s' in schema `%s' as specified in override file `%s': %"
 "s.  "
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1795
+#: ../gio/glib-compile-schemas.c:1797
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1813
+#: ../gio/glib-compile-schemas.c:1815
 #, c-format
 msgid ""
 "override for key `%s' in schema `%s' in override file `%s' is out of the "
 "range given in the schema"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1841
+#: ../gio/glib-compile-schemas.c:1843
 #, c-format
 msgid ""
 "override for key `%s' in schema `%s' in override file `%s' is not in the "
 "list of valid choices"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1895
+#: ../gio/glib-compile-schemas.c:1897
 msgid "where to store the gschemas.compiled file"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1895 ../gio/glib-compile-schemas.c:1908
+#: ../gio/glib-compile-schemas.c:1897 ../gio/glib-compile-schemas.c:1910
 msgid "DIRECTORY"
 msgstr "DIRECTORY"
 
-#: ../gio/glib-compile-schemas.c:1896
+#: ../gio/glib-compile-schemas.c:1898
 msgid "Abort on any errors in schemas"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1897
+#: ../gio/glib-compile-schemas.c:1899
 msgid "Do not write the gschema.compiled file"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1898
+#: ../gio/glib-compile-schemas.c:1900
 msgid "This option will be removed soon."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1899
+#: ../gio/glib-compile-schemas.c:1901
 msgid "Do not enforce key name restrictions"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1911
+#: ../gio/glib-compile-schemas.c:1913
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
 "and the cache file is called gschemas.compiled."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1927
+#: ../gio/glib-compile-schemas.c:1929
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1966
+#: ../gio/glib-compile-schemas.c:1968
 #, c-format
 msgid "No schema files found: "
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1969
+#: ../gio/glib-compile-schemas.c:1971
 #, c-format
 msgid "doing nothing.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1972
+#: ../gio/glib-compile-schemas.c:1974
 #, c-format
 msgid "removed existing output file.\n"
 msgstr ""
@@ -2594,7 +2594,7 @@
 #: ../gio/glocalfile.c:967
 #, c-format
 msgid "Error getting filesystem info: %s"
-msgstr ""
+msgstr "ھۆججەت سىستېمىسى ئۇچۇرلىرىنى ئېلىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfile.c:1105
 msgid "Can't rename root directory"
@@ -2603,7 +2603,7 @@
 #: ../gio/glocalfile.c:1125 ../gio/glocalfile.c:1151
 #, c-format
 msgid "Error renaming file: %s"
-msgstr ""
+msgstr "ھۆججەت ئاتىنى ئۆزگەرتىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfile.c:1134
 msgid "Can't rename file, filename already exist"
@@ -2628,7 +2628,7 @@
 #: ../gio/glocalfile.c:1443
 #, c-format
 msgid "Error removing file: %s"
-msgstr ""
+msgstr "ھۆججەتنى ئۆچۈرۈۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfile.c:1810
 #, c-format
@@ -2748,12 +2748,12 @@
 #: ../gio/glocalfileinfo.c:1921
 #, c-format
 msgid "Error setting permissions: %s"
-msgstr ""
+msgstr "ھوقۇقلىرىنى بېكىتىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileinfo.c:1972
 #, c-format
 msgid "Error setting owner: %s"
-msgstr ""
+msgstr "ئىگىسىنى  بېكىتىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileinfo.c:1995
 msgid "symlink must be non-NULL"
@@ -2763,11 +2763,11 @@
 #: ../gio/glocalfileinfo.c:2035
 #, c-format
 msgid "Error setting symlink: %s"
-msgstr ""
+msgstr "symlink نى  بېكىتىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileinfo.c:2014
 msgid "Error setting symlink: file is not a symlink"
-msgstr ""
+msgstr "symlink نى  بېكىتىۋاتقاندا خاتالىق كۆرۈلدى: ھۆججەت symlink ئەمەس"
 
 #: ../gio/glocalfileinfo.c:2140
 #, c-format
@@ -2795,7 +2795,7 @@
 #: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722
 #, c-format
 msgid "Error reading from file: %s"
-msgstr ""
+msgstr "ھۆججەتتىن ئوقۇۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228
 #: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470
@@ -2808,7 +2808,7 @@
 #: ../gio/glocalfileoutputstream.c:351
 #, c-format
 msgid "Error closing file: %s"
-msgstr ""
+msgstr "ھۆججەتنى يېپىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfilemonitor.c:212
 msgid "Unable to find default local file monitor type"
@@ -2818,12 +2818,12 @@
 #: ../gio/glocalfileoutputstream.c:743
 #, c-format
 msgid "Error writing to file: %s"
-msgstr ""
+msgstr "ھۆججەتكە يېزىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileoutputstream.c:283
 #, c-format
 msgid "Error removing old backup link: %s"
-msgstr ""
+msgstr "كونا زاپاسنىڭ ئۇلانمىسىنى ئۆچۈرۈۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310
 #, c-format
@@ -2833,7 +2833,7 @@
 #: ../gio/glocalfileoutputstream.c:328
 #, c-format
 msgid "Error renaming temporary file: %s"
-msgstr ""
+msgstr "ۋاقىتلىق ھۆججەت ئاتىنى ئۆزگەرتىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1077
 #, c-format
@@ -2845,7 +2845,7 @@
 #: ../gio/glocalfileoutputstream.c:1058 ../gio/glocalfileoutputstream.c:1157
 #, c-format
 msgid "Error opening file '%s': %s"
-msgstr ""
+msgstr "ھۆججەت '%s' نى ئېچىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/glocalfileoutputstream.c:846
 msgid "Target file is a directory"
@@ -2862,7 +2862,7 @@
 #: ../gio/glocalfileoutputstream.c:1042
 #, c-format
 msgid "Error removing old file: %s"
-msgstr ""
+msgstr "كونا ھۆججەتنى ئۆچۈرۈۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746
 msgid "Invalid GSeekType supplied"
@@ -2878,7 +2878,7 @@
 
 #: ../gio/gmemoryoutputstream.c:496
 msgid "Memory output stream not resizable"
-msgstr ""
+msgstr "ئەسلەك چىقىرىش ئېقىمىنىڭ چوڭلۇقىنى ئۆزگەرتكىلى بولمايدۇ"
 
 #: ../gio/gmemoryoutputstream.c:512
 msgid "Failed to resize memory output stream"
@@ -2954,7 +2954,7 @@
 
 #: ../gio/goutputstream.c:207 ../gio/goutputstream.c:408
 msgid "Output stream doesn't implement write"
-msgstr ""
+msgstr "چىقىرىش ئېقىمىدا يېزىشنى ئىشلەتكىلى بولمايدۇ"
 
 #: ../gio/goutputstream.c:369 ../gio/goutputstream.c:849
 msgid "Source stream is already closed"
@@ -3003,7 +3003,7 @@
 #: ../gio/gsettings-tool.c:92
 #, c-format
 msgid "Empty path given.\n"
-msgstr ""
+msgstr "بېرىلگەن يول قۇرۇق.\n"
 
 #: ../gio/gsettings-tool.c:98
 #, c-format
@@ -3025,84 +3025,84 @@
 msgid "No such key '%s'\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:504
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3125,7 +3125,7 @@
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3135,149 +3135,149 @@
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "ئەركىن ئۆزگەرگۈچى:\n"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
 msgstr ""
 
-#: ../gio/gsocket.c:276
+#: ../gio/gsocket.c:277
 msgid "Invalid socket, not initialized"
-msgstr ""
+msgstr "socket ئىناۋەتسىز، دەسلەپلەشتۈرۈلمىگەن"
 
-#: ../gio/gsocket.c:283
+#: ../gio/gsocket.c:284
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:291
+#: ../gio/gsocket.c:292
 msgid "Socket is already closed"
 msgstr ""
 
-#: ../gio/gsocket.c:299 ../gio/gsocket.c:2734 ../gio/gsocket.c:2778
+#: ../gio/gsocket.c:300 ../gio/gsocket.c:2765 ../gio/gsocket.c:2809
 msgid "Socket I/O timed out"
 msgstr ""
 
-#: ../gio/gsocket.c:442
+#: ../gio/gsocket.c:443
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:476 ../gio/gsocket.c:492 ../gio/gsocket.c:2134
+#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2135
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:476
+#: ../gio/gsocket.c:477
 msgid "Unknown protocol was specified"
 msgstr ""
 
-#: ../gio/gsocket.c:1245
+#: ../gio/gsocket.c:1246
 #, c-format
 msgid "could not get local address: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1288
+#: ../gio/gsocket.c:1289
 #, c-format
 msgid "could not get remote address: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1349
+#: ../gio/gsocket.c:1350
 #, c-format
 msgid "could not listen: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1423
+#: ../gio/gsocket.c:1424
 #, c-format
 msgid "Error binding to address: %s"
-msgstr ""
+msgstr "ئادرېسقا باغلاۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:1543
+#: ../gio/gsocket.c:1544
 #, c-format
 msgid "Error accepting connection: %s"
-msgstr ""
+msgstr "باغلىنىشنى قوبۇل قىلىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:1660
+#: ../gio/gsocket.c:1661
 msgid "Error connecting: "
-msgstr ""
+msgstr "باغلىنىۋاتقاندا خاتالىق كۆرۈلدى: "
 
-#: ../gio/gsocket.c:1665
+#: ../gio/gsocket.c:1666
 msgid "Connection in progress"
 msgstr ""
 
-#: ../gio/gsocket.c:1672
+#: ../gio/gsocket.c:1673
 #, c-format
 msgid "Error connecting: %s"
 msgstr "باغلىنىشتا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:1715 ../gio/gsocket.c:3497
+#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3528
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1847
+#: ../gio/gsocket.c:1848
 #, c-format
 msgid "Error receiving data: %s"
-msgstr ""
+msgstr "سانلىق-مەلۇمات قوبۇل قىلىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:2021
+#: ../gio/gsocket.c:2022
 #, c-format
 msgid "Error sending data: %s"
-msgstr ""
+msgstr "سانلىق-مەلۇمات يوللاۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:2213
+#: ../gio/gsocket.c:2214
 #, c-format
 msgid "Error closing socket: %s"
-msgstr ""
+msgstr "سوكەتنى يېپىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:2727
+#: ../gio/gsocket.c:2758
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:3017
+#: ../gio/gsocket.c:3048
 msgid "GSocketControlMessage not supported on windows"
 msgstr ""
 
-#: ../gio/gsocket.c:3276 ../gio/gsocket.c:3417
+#: ../gio/gsocket.c:3307 ../gio/gsocket.c:3448
 #, c-format
 msgid "Error receiving message: %s"
-msgstr ""
+msgstr "ئۇچۇر قوبۇل قىلىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gsocket.c:3512
+#: ../gio/gsocket.c:3543
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
-#: ../gio/gsocketclient.c:674 ../gio/gsocketclient.c:1152
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr ""
 
-#: ../gio/gsocketclient.c:711 ../gio/gsocketclient.c:1037
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr ""
 
-#: ../gio/gsocketclient.c:749 ../gio/gsocketclient.c:1060
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr ""
@@ -3324,7 +3324,8 @@
 
 #: ../gio/gsocks5proxy.c:179
 msgid ""
-"The SOCKSv5 require an authentication method that is not supported by GLib."
+"The SOCKSv5 proxy requires an authentication method that is not supported by "
+"GLib."
 msgstr ""
 
 #: ../gio/gsocks5proxy.c:208
@@ -3339,7 +3340,7 @@
 #: ../gio/gsocks5proxy.c:289
 #, c-format
 msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)"
-msgstr ""
+msgstr "باش ئاپپارات ئاتى '%s' بەك ئۇزۇن، SOCKSv5 كېلىشىمىدە ئىشلەتكىلى بولمايدۇ(ئەڭ چوڭ بولغاندا %i بولىدۇ)"
 
 #: ../gio/gsocks5proxy.c:352
 msgid "The SOCKSv5 proxy server uses unkown address type."
@@ -3347,7 +3348,7 @@
 
 #: ../gio/gsocks5proxy.c:359
 msgid "Internal SOCKSv5 proxy server error."
-msgstr ""
+msgstr "ئىچكى SOCKSv5 ۋاكالەتچى مۇلازىمېتىر خاتا."
 
 #: ../gio/gsocks5proxy.c:365
 msgid "SOCKSv5 connection not allowed by ruleset."
@@ -3355,11 +3356,11 @@
 
 #: ../gio/gsocks5proxy.c:372
 msgid "Host unreachable through SOCKSv5 server."
-msgstr ""
+msgstr "SOCKSv5 مۇلازىمېتىرىدىن باش ئاپپاراتنى كۆرگىلى بولمايدۇ"
 
 #: ../gio/gsocks5proxy.c:378
 msgid "Network unreachable through SOCKSv5 proxy."
-msgstr ""
+msgstr "SOCKSv5 ۋاكالەتچى مۇلازىمېتىرىدىن تور كۆرۈنمىدى."
 
 #: ../gio/gsocks5proxy.c:384
 msgid "Connection refused through SOCKSv5 proxy."
@@ -3374,7 +3375,7 @@
 msgstr ""
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
 msgstr ""
 
 #: ../gio/gthemedicon.c:498
@@ -3382,6 +3383,18 @@
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr ""
 
+#: ../gio/gtlscertificate.c:228
+msgid "No PEM-encoded certificate found"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:237
+msgid "Could not parse PEM-encoded certificate"
+msgstr ""
+
+#: ../gio/gtlscertificate.c:258
+msgid "Could not parse PEM-encoded private key"
+msgstr ""
+
 #: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:505
 #, c-format
 msgid "Expecting 1 control message, got %d"
@@ -3398,7 +3411,7 @@
 
 #: ../gio/gunixconnection.c:211
 msgid "Received invalid fd"
-msgstr ""
+msgstr "ئىناۋەتسىز fd تاپشۇرۇۋالدى"
 
 #: ../gio/gunixconnection.c:359
 msgid "Error sending credentials: "
@@ -3419,7 +3432,7 @@
 #: ../gio/gunixconnection.c:465
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "SO_PASSCRED نى قوزغىتىۋاتقاندا(ئىناۋەتلىك قىلىۋاتقاندا)خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gunixconnection.c:495
 msgid ""
@@ -3429,29 +3442,29 @@
 #: ../gio/gunixconnection.c:538
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "SO_PASSCRED نى چەكلەۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gunixinputstream.c:353 ../gio/gunixinputstream.c:373
-#: ../gio/gunixinputstream.c:451
+#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388
+#: ../gio/gunixinputstream.c:466
 #, c-format
 msgid "Error reading from unix: %s"
-msgstr ""
+msgstr "unix دىن ئوقۇۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
-#: ../gio/gunixinputstream.c:406 ../gio/gunixinputstream.c:586
-#: ../gio/gunixoutputstream.c:393 ../gio/gunixoutputstream.c:542
+#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601
+#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556
 #, c-format
 msgid "Error closing unix: %s"
-msgstr ""
+msgstr "unix نى يېپىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gunixmounts.c:1846 ../gio/gunixmounts.c:1883
 msgid "Filesystem root"
-msgstr ""
+msgstr "ھۆججەت سىستېمىسى غولى"
 
-#: ../gio/gunixoutputstream.c:339 ../gio/gunixoutputstream.c:360
-#: ../gio/gunixoutputstream.c:438
+#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374
+#: ../gio/gunixoutputstream.c:452
 #, c-format
 msgid "Error writing to unix: %s"
-msgstr ""
+msgstr "unix قا يېزىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gunixsocketaddress.c:244
 msgid "Abstract unix domain socket addresses not supported on this system"
@@ -3475,7 +3488,7 @@
 #: ../gio/gwin32appinfo.c:299
 #, c-format
 msgid "Error launching application: %s"
-msgstr ""
+msgstr "پروگراممىنى ئىجرا قىلىۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gwin32appinfo.c:335
 msgid "URIs not supported"
@@ -3492,7 +3505,7 @@
 #: ../gio/gwin32inputstream.c:318
 #, c-format
 msgid "Error reading from handle: %s"
-msgstr ""
+msgstr "handle دىن ئوقۇۋاتقاندا خاتالىق كۆرۈلدى: %s"
 
 #: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348
 #, c-format
@@ -3506,7 +3519,7 @@
 
 #: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349
 msgid "Not enough memory"
-msgstr "يېتەرلىك ئەسلەك يوق"
+msgstr "يېتەرلىك  ئەسلەك يوق"
 
 #: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356
 #, c-format
diff --git a/po/vi.po b/po/vi.po
index 7f1bdc8..74c1445 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -2,14 +2,15 @@
 # Copyright © 2010 GNOME i18n Project for Vietnamese.
 # T.M.Thanh <tmthanh@yahoo.com>, 2002.
 # Clytie Siddall <clytie@riverland.net.au>, 2005-2010.
-# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2009.
+# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2009-2010.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib 2.19.6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-07 21:37-0400\n"
-"PO-Revision-Date: 2010-03-22 21:32+0930\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"product=glib&component=general\n"
+"POT-Creation-Date: 2010-12-20 10:27+0000\n"
+"PO-Revision-Date: 2010-12-21 19:51+0700\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
 "MIME-Version: 1.0\n"
@@ -18,394 +19,621 @@
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: LocFactoryEditor 1.8\n"
 
-#: glib/gbookmarkfile.c:737
+#: ../glib/gbookmarkfile.c:780
 #, c-format
 msgid "Unexpected attribute '%s' for element '%s'"
 msgstr "Thuộc tính bất thường '%s' cho yếu tố '%s'"
 
-#: glib/gbookmarkfile.c:748 glib/gbookmarkfile.c:819 glib/gbookmarkfile.c:829
-#: glib/gbookmarkfile.c:936
+#: ../glib/gbookmarkfile.c:791 ../glib/gbookmarkfile.c:862
+#: ../glib/gbookmarkfile.c:872 ../glib/gbookmarkfile.c:979
 #, c-format
 msgid "Attribute '%s' of element '%s' not found"
 msgstr "Không tìm thấy thuộc tính '%s' của yếu tố '%s'"
 
-#: glib/gbookmarkfile.c:1106 glib/gbookmarkfile.c:1171
-#: glib/gbookmarkfile.c:1235 glib/gbookmarkfile.c:1245
+#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1214
+#: ../glib/gbookmarkfile.c:1278 ../glib/gbookmarkfile.c:1288
 #, c-format
 msgid "Unexpected tag '%s', tag '%s' expected"
 msgstr "Thẻ bất thường '%s', mong đợi thẻ '%s'"
 
-#: glib/gbookmarkfile.c:1131 glib/gbookmarkfile.c:1145
-#: glib/gbookmarkfile.c:1213 glib/gbookmarkfile.c:1265
+#: ../glib/gbookmarkfile.c:1174 ../glib/gbookmarkfile.c:1188
+#: ../glib/gbookmarkfile.c:1256 ../glib/gbookmarkfile.c:1308
 #, c-format
 msgid "Unexpected tag '%s' inside '%s'"
 msgstr "Thẻ bất thường '%s' bên trong '%s'"
 
-#: glib/gbookmarkfile.c:1793
+#: ../glib/gbookmarkfile.c:1834
 msgid "No valid bookmark file found in data dirs"
 msgstr "Không tìm thấy tập tin liên kết lưu hợp lệ trong các thư mục dữ liệu"
 
-#: glib/gbookmarkfile.c:1994
+#: ../glib/gbookmarkfile.c:2035
 #, c-format
 msgid "A bookmark for URI '%s' already exists"
 msgstr "Một liên kết lưu URI '%s' đã có"
 
-#: glib/gbookmarkfile.c:2040 glib/gbookmarkfile.c:2198
-#: glib/gbookmarkfile.c:2283 glib/gbookmarkfile.c:2363
-#: glib/gbookmarkfile.c:2448 glib/gbookmarkfile.c:2531
-#: glib/gbookmarkfile.c:2609 glib/gbookmarkfile.c:2688
-#: glib/gbookmarkfile.c:2730 glib/gbookmarkfile.c:2827
-#: glib/gbookmarkfile.c:2953 glib/gbookmarkfile.c:3143
-#: glib/gbookmarkfile.c:3219 glib/gbookmarkfile.c:3384
-#: glib/gbookmarkfile.c:3473 glib/gbookmarkfile.c:3563
-#: glib/gbookmarkfile.c:3691
+#: ../glib/gbookmarkfile.c:2081 ../glib/gbookmarkfile.c:2239
+#: ../glib/gbookmarkfile.c:2324 ../glib/gbookmarkfile.c:2404
+#: ../glib/gbookmarkfile.c:2489 ../glib/gbookmarkfile.c:2572
+#: ../glib/gbookmarkfile.c:2650 ../glib/gbookmarkfile.c:2729
+#: ../glib/gbookmarkfile.c:2771 ../glib/gbookmarkfile.c:2868
+#: ../glib/gbookmarkfile.c:2994 ../glib/gbookmarkfile.c:3184
+#: ../glib/gbookmarkfile.c:3260 ../glib/gbookmarkfile.c:3425
+#: ../glib/gbookmarkfile.c:3514 ../glib/gbookmarkfile.c:3604
+#: ../glib/gbookmarkfile.c:3732
 #, c-format
 msgid "No bookmark found for URI '%s'"
 msgstr "Không tìm thấy liên kết lưu URI '%s'"
 
-#: glib/gbookmarkfile.c:2372
+#: ../glib/gbookmarkfile.c:2413
 #, c-format
 msgid "No MIME type defined in the bookmark for URI '%s'"
 msgstr "Chưa xác định kiểu MIME trong liên kết lưu URI '%s'"
 
-#: glib/gbookmarkfile.c:2457
+#: ../glib/gbookmarkfile.c:2498
 #, c-format
 msgid "No private flag has been defined in bookmark for URI '%s'"
 msgstr "Chưa xác định cờ riêng trong liên kết lưu URI '%s'"
 
-#: glib/gbookmarkfile.c:2836
+#: ../glib/gbookmarkfile.c:2877
 #, c-format
 msgid "No groups set in bookmark for URI '%s'"
 msgstr "Chưa đặt nhóm trong liên kết lưu URI '%s'"
 
-#: glib/gbookmarkfile.c:3237 glib/gbookmarkfile.c:3394
+#: ../glib/gbookmarkfile.c:3278 ../glib/gbookmarkfile.c:3435
 #, c-format
 msgid "No application with name '%s' registered a bookmark for '%s'"
 msgstr "Không có ứng dụng tên '%s' đã đăng ký một liên kết lưu '%s'"
 
-#: glib/gbookmarkfile.c:3417
+#: ../glib/gbookmarkfile.c:3458
 #, c-format
 msgid "Failed to expand exec line '%s' with URI '%s'"
 msgstr "Lỗi mở rộng dòng thực hiện '%s' bằng URI '%s'"
 
-#: glib/gconvert.c:437 glib/gconvert.c:515 glib/giochannel.c:1404
-#: gio/gcharsetconverter.c:459
+#: ../glib/gconvert.c:567 ../glib/gconvert.c:645 ../glib/giochannel.c:1403
+#: ../gio/gcharsetconverter.c:458
 #, c-format
 msgid "Conversion from character set '%s' to '%s' is not supported"
-msgstr "Không hỗ trợ khả năng chuyển đổi từ bộ ký tự '%s' sang '%s'"
+msgstr "Không hỗ trợ  việc chuyển từ đặt ký tự '%s' thành '%s'"
 
-#: glib/gconvert.c:441 glib/gconvert.c:519 gio/gcharsetconverter.c:463
+#: ../glib/gconvert.c:571 ../glib/gconvert.c:649
+#: ../gio/gcharsetconverter.c:462
 #, c-format
 msgid "Could not open converter from '%s' to '%s'"
-msgstr "Không thể mở bộ chuyển đổi từ '%s' sang '%s'"
+msgstr "Không thể mở trình chuyển đổi từ '%s' sang '%s'"
 
-#: glib/gconvert.c:638 glib/gconvert.c:1031 glib/giochannel.c:1576
-#: glib/giochannel.c:1618 glib/giochannel.c:2462 glib/gutf8.c:989
-#: glib/gutf8.c:1444 gio/gcharsetconverter.c:346
+#: ../glib/gconvert.c:768 ../glib/gconvert.c:1161 ../glib/giochannel.c:1575
+#: ../glib/giochannel.c:1617 ../glib/giochannel.c:2461 ../glib/gutf8.c:992
+#: ../glib/gutf8.c:1447 ../gio/gcharsetconverter.c:345
 msgid "Invalid byte sequence in conversion input"
-msgstr "Gặp dây byte không hợp lệ trong dữ liệu nhập chuyển đổi"
+msgstr "Byte sequence không hợp lệ trong phần nhập chuyển đổi"
 
-#: glib/gconvert.c:646 glib/gconvert.c:956 glib/giochannel.c:1583
-#: glib/giochannel.c:2474 gio/gcharsetconverter.c:351
+#: ../glib/gconvert.c:776 ../glib/gconvert.c:1086 ../glib/giochannel.c:1582
+#: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350
 #, c-format
 msgid "Error during conversion: %s"
-msgstr "Gặp lỗi khi chuyển đổi: %s"
+msgstr "Lỗi khi chuyển đổi: %s"
 
-#: glib/gconvert.c:678 glib/gutf8.c:985 glib/gutf8.c:1195 glib/gutf8.c:1336
-#: glib/gutf8.c:1440
+#: ../glib/gconvert.c:808 ../glib/gutf8.c:988 ../glib/gutf8.c:1198
+#: ../glib/gutf8.c:1339 ../glib/gutf8.c:1443
 msgid "Partial character sequence at end of input"
-msgstr "Dây ký tự riêng phần ở cuối dữ liệu nhập"
+msgstr "Character sequence riêng phần ở cuối đầu vào"
 
-#: glib/gconvert.c:928
+#: ../glib/gconvert.c:1058
 #, c-format
 msgid "Cannot convert fallback '%s' to codeset '%s'"
-msgstr "Không thể chuyển đổi đồ dữ trữ '%s' thành bộ mã '%s'"
+msgstr "Không thể chuyển đổi fallback '%s' thành codeset '%s'"
 
-#: glib/gconvert.c:1751
+#: ../glib/gconvert.c:1881
 #, c-format
 msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
-msgstr ""
-"URI '%s' không phải là một URI tuyệt đối sử dụng lược đồ 'file' (tập tin)"
+msgstr "URI '%s' không phải URI tuyệt đối sử dụng lược đồ tập tin"
 
-#: glib/gconvert.c:1761
+#: ../glib/gconvert.c:1891
 #, c-format
 msgid "The local file URI '%s' may not include a '#'"
-msgstr "Không cho phép URI tập tin cục bộ '%s' chứa dấu thăng '#'"
+msgstr "URI tập tin cục bộ '%s' có thể không bao gồm '#'"
 
-#: glib/gconvert.c:1778
+#: ../glib/gconvert.c:1908
 #, c-format
 msgid "The URI '%s' is invalid"
 msgstr "URI '%s' không hợp lệ"
 
-#: glib/gconvert.c:1790
+#: ../glib/gconvert.c:1920
 #, c-format
 msgid "The hostname of the URI '%s' is invalid"
-msgstr "Tên máy của URI '%s' không hợp lệ"
+msgstr "Tên chủ của URI '%s' không hợp lệ"
 
-#: glib/gconvert.c:1806
+#: ../glib/gconvert.c:1936
 #, c-format
 msgid "The URI '%s' contains invalidly escaped characters"
-msgstr "URI '%s' chứa một số ký tự đã thoát không hợp lệ"
+msgstr "URI '%s' chứa không hợp lệ các ký tự thoát"
 
-#: glib/gconvert.c:1901
+#: ../glib/gconvert.c:2031
 #, c-format
 msgid "The pathname '%s' is not an absolute path"
-msgstr "Tên đường dẫn '%s' không phải là một đường dẫn tuyệt đối"
+msgstr "Tên đường dẫn '%s' không phải một đường dẫn tuyệt đối"
 
-#: glib/gconvert.c:1911
+#: ../glib/gconvert.c:2041
 msgid "Invalid hostname"
-msgstr "Tên máy không hợp lệ"
+msgstr "Tên chủ không hợp lệ"
 
-#: glib/gdir.c:112 glib/gdir.c:135
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:149
+msgctxt "GDateTime"
+msgid "am"
+msgstr "am"
+
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:151
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "AM"
+
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:153
+msgctxt "GDateTime"
+msgid "pm"
+msgstr "pm"
+
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:155
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "PM"
+
+#. Translators: this is the preferred format for expressing the date
+#: ../glib/gdatetime.c:164
+msgctxt "GDateTime"
+msgid "%m/%d/%y"
+msgstr "%d/%m/%y"
+
+#. Translators: this is the preferred format for expressing the time
+#: ../glib/gdatetime.c:167
+msgctxt "GDateTime"
+msgid "%H:%M:%S"
+msgstr "%H:%M:%S"
+
+#: ../glib/gdatetime.c:193
+msgctxt "full month name"
+msgid "January"
+msgstr "Tháng giêng"
+
+#: ../glib/gdatetime.c:195
+msgctxt "full month name"
+msgid "February"
+msgstr "Tháng hai"
+
+#: ../glib/gdatetime.c:197
+msgctxt "full month name"
+msgid "March"
+msgstr "Tháng ba"
+
+#: ../glib/gdatetime.c:199
+msgctxt "full month name"
+msgid "April"
+msgstr "Tháng tư"
+
+#: ../glib/gdatetime.c:201
+msgctxt "full month name"
+msgid "May"
+msgstr "Tháng năm"
+
+#: ../glib/gdatetime.c:203
+msgctxt "full month name"
+msgid "June"
+msgstr "Tháng sáu"
+
+#: ../glib/gdatetime.c:205
+msgctxt "full month name"
+msgid "July"
+msgstr "Tháng bảy"
+
+#: ../glib/gdatetime.c:207
+msgctxt "full month name"
+msgid "August"
+msgstr "Tháng tám"
+
+#: ../glib/gdatetime.c:209
+msgctxt "full month name"
+msgid "September"
+msgstr "Tháng chín"
+
+#: ../glib/gdatetime.c:211
+msgctxt "full month name"
+msgid "October"
+msgstr "Tháng mười"
+
+#: ../glib/gdatetime.c:213
+msgctxt "full month name"
+msgid "November"
+msgstr "Tháng mười một"
+
+#: ../glib/gdatetime.c:215
+msgctxt "full month name"
+msgid "December"
+msgstr "Tháng mười hai"
+
+#: ../glib/gdatetime.c:230
+msgctxt "abbreviated month name"
+msgid "Jan"
+msgstr "Th1"
+
+#: ../glib/gdatetime.c:232
+msgctxt "abbreviated month name"
+msgid "Feb"
+msgstr "Th2"
+
+#: ../glib/gdatetime.c:234
+msgctxt "abbreviated month name"
+msgid "Mar"
+msgstr "Th3"
+
+#: ../glib/gdatetime.c:236
+msgctxt "abbreviated month name"
+msgid "Apr"
+msgstr "Th4"
+
+#: ../glib/gdatetime.c:238
+msgctxt "abbreviated month name"
+msgid "May"
+msgstr "Th5"
+
+#: ../glib/gdatetime.c:240
+msgctxt "abbreviated month name"
+msgid "Jun"
+msgstr "Th6"
+
+#: ../glib/gdatetime.c:242
+msgctxt "abbreviated month name"
+msgid "Jul"
+msgstr "Th7"
+
+#: ../glib/gdatetime.c:244
+msgctxt "abbreviated month name"
+msgid "Aug"
+msgstr "Th8"
+
+#: ../glib/gdatetime.c:246
+msgctxt "abbreviated month name"
+msgid "Sep"
+msgstr "Th9"
+
+#: ../glib/gdatetime.c:248
+msgctxt "abbreviated month name"
+msgid "Oct"
+msgstr "Th10"
+
+#: ../glib/gdatetime.c:250
+msgctxt "abbreviated month name"
+msgid "Nov"
+msgstr "Th11"
+
+#: ../glib/gdatetime.c:252
+msgctxt "abbreviated month name"
+msgid "Dec"
+msgstr "Th12"
+
+#: ../glib/gdatetime.c:267
+msgctxt "full weekday name"
+msgid "Monday"
+msgstr "Thứ hai"
+
+#: ../glib/gdatetime.c:269
+msgctxt "full weekday name"
+msgid "Tuesday"
+msgstr "Thứ ba"
+
+#: ../glib/gdatetime.c:271
+msgctxt "full weekday name"
+msgid "Wednesday"
+msgstr "Thứ tư"
+
+#: ../glib/gdatetime.c:273
+msgctxt "full weekday name"
+msgid "Thursday"
+msgstr "Thứ năm"
+
+#: ../glib/gdatetime.c:275
+msgctxt "full weekday name"
+msgid "Friday"
+msgstr "Thứ sáu"
+
+#: ../glib/gdatetime.c:277
+msgctxt "full weekday name"
+msgid "Saturday"
+msgstr "Thứ bảy"
+
+#: ../glib/gdatetime.c:279
+msgctxt "full weekday name"
+msgid "Sunday"
+msgstr "Chủ Nhật"
+
+#: ../glib/gdatetime.c:294
+msgctxt "abbreviated weekday name"
+msgid "Mon"
+msgstr "T2"
+
+#: ../glib/gdatetime.c:296
+msgctxt "abbreviated weekday name"
+msgid "Tue"
+msgstr "T3"
+
+#: ../glib/gdatetime.c:298
+msgctxt "abbreviated weekday name"
+msgid "Wed"
+msgstr "T4"
+
+#: ../glib/gdatetime.c:300
+msgctxt "abbreviated weekday name"
+msgid "Thu"
+msgstr "T5"
+
+#: ../glib/gdatetime.c:302
+msgctxt "abbreviated weekday name"
+msgid "Fri"
+msgstr "T6"
+
+#: ../glib/gdatetime.c:304
+msgctxt "abbreviated weekday name"
+msgid "Sat"
+msgstr "T7"
+
+#: ../glib/gdatetime.c:306
+msgctxt "abbreviated weekday name"
+msgid "Sun"
+msgstr "CN"
+
+#: ../glib/gdir.c:115 ../glib/gdir.c:138
 #, c-format
 msgid "Error opening directory '%s': %s"
-msgstr "Gặp lỗi khi mở thư mục '%s': %s"
+msgstr "Lỗi khi mở thư mục '%s': %s"
 
-#: glib/gfileutils.c:536 glib/gfileutils.c:624
+#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
-msgstr "Không thẻ cấp phát %lu byte để đọc tập tin '%s'"
+msgstr "Không thẻ cấp phát %lu bytes để đọc tập tin \"%s\""
 
-#: glib/gfileutils.c:551
+#: ../glib/gfileutils.c:551
 #, c-format
 msgid "Error reading file '%s': %s"
-msgstr "Gặp lỗi khi đọc tập tin '%s': %s"
+msgstr "Lỗi khi đọc tập tin '%s': %s"
 
-#: glib/gfileutils.c:565
+#: ../glib/gfileutils.c:565
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "Tập tin \"%s\" quá lớn"
 
-#: glib/gfileutils.c:648
+#: ../glib/gfileutils.c:648
 #, c-format
 msgid "Failed to read from file '%s': %s"
-msgstr "Lỗi đọc từ tập tin '%s': %s"
+msgstr "Không đọc được từ tập tin '%s': %s"
 
-#: glib/gfileutils.c:699 glib/gfileutils.c:786
+#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
 #, c-format
 msgid "Failed to open file '%s': %s"
-msgstr "Lỗi mở tập tin '%s': %s"
+msgstr "Lỗi khi mở tập tin '%s': %s"
 
-#: glib/gfileutils.c:716 glib/gmappedfile.c:170
+#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
-msgstr "Lỗi lấy các thuộc tính của tập tin '%s': lỗi 'fstat()': %s"
+msgstr "Không lấy được các thuộc tính của tập tin '%s': fstat() không được: %s"
 
-#: glib/gfileutils.c:750
+#: ../glib/gfileutils.c:750
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "Lỗi mở tập tin '%s': lỗi 'fdopen()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gfileutils.c:858
+#: ../glib/gfileutils.c:858
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
-msgstr "Lỗi thay đổi tên tập tin '%s' thành '%s': lỗi 'g_rename()': %s"
+msgstr ""
+"Không đổi tên tập tin « %s » thành « %s » được: « g_rename() » không được: %s"
 
-#: glib/gfileutils.c:900 glib/gfileutils.c:1366
+#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
 #, c-format
 msgid "Failed to create file '%s': %s"
-msgstr "Lỗi tạo tập tin '%s': %s"
+msgstr "Không tạo được tập tin '%s': %s"
 
-#: glib/gfileutils.c:914
+#: ../glib/gfileutils.c:914
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-msgstr "Lỗi mở tập tin '%s': lỗi 'fdopen()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gfileutils.c:939
+#: ../glib/gfileutils.c:939
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
-msgstr "Lỗi ghi tập tin '%s': lỗi 'fdopen()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gfileutils.c:958
+#: ../glib/gfileutils.c:958
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "Lỗi ghi tập tin '%s': lỗi fflush(): %s"
 
-#: glib/gfileutils.c:987
+#: ../glib/gfileutils.c:987
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "Lỗi ghi tập tin '%s': lỗi fsync(): %s"
 
-#: glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1006
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
-msgstr "Lỗi đóng tập tin '%s': lỗi 'fclose()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gfileutils.c:1124
+#: ../glib/gfileutils.c:1127
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
-msgstr "Không thể gỡ bỏ tập tin tồn tại '%s': lỗi 'g_unlink()': %s"
+msgstr "Không thể gỡ bỏ tập tin tồn tại « %s »: « g_unlink() » thất bại: %s"
 
-#: glib/gfileutils.c:1328
+#: ../glib/gfileutils.c:1331
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
-msgstr "Biểu mẫu '%s' không hợp lệ, không nên chứa '%s'"
+msgstr "Template '%s' không hợp lệ, không nên chứa '%s'"
 
-#: glib/gfileutils.c:1341
+#: ../glib/gfileutils.c:1344
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "Biểu mẫu '%s' không chứa XXXXXX"
 
-#: glib/gfileutils.c:1774
+#: ../glib/gfileutils.c:1777
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
-msgstr[0] ""
+msgstr[0] "%u byte"
 
-#: glib/gfileutils.c:1782
+#: ../glib/gfileutils.c:1785
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gfileutils.c:1787
+#: ../glib/gfileutils.c:1790
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gfileutils.c:1792
+#: ../glib/gfileutils.c:1795
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gfileutils.c:1797
+#: ../glib/gfileutils.c:1800
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gfileutils.c:1802
+#: ../glib/gfileutils.c:1805
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gfileutils.c:1807
+#: ../glib/gfileutils.c:1810
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: glib/gfileutils.c:1850
+#: ../glib/gfileutils.c:1853
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "Lỗi đọc liên kết tượng trưng '%s': %s"
 
-#: glib/gfileutils.c:1871
+#: ../glib/gfileutils.c:1874
 msgid "Symbolic links not supported"
-msgstr "Không hỗ trợ khả năng sử dụng liên kết tượng trưng"
+msgstr "Không hỗ trợ liên kết tượng trưng"
 
-#: glib/giochannel.c:1408
+#: ../glib/giochannel.c:1407
 #, c-format
 msgid "Could not open converter from '%s' to '%s': %s"
 msgstr "Không thể mở bộ chuyển đổi từ '%s' sang '%s': %s"
 
-#: glib/giochannel.c:1753
+#: ../glib/giochannel.c:1752
 msgid "Can't do a raw read in g_io_channel_read_line_string"
-msgstr ""
-"Không thể thực hiện tiến trình đọc thô trong 'g_io_channel_read_line_string'"
+msgstr "Không thể thực hiện đọc thô trong g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1800 glib/giochannel.c:2058 glib/giochannel.c:2145
+#: ../glib/giochannel.c:1799 ../glib/giochannel.c:2057
+#: ../glib/giochannel.c:2144
 msgid "Leftover unconverted data in read buffer"
-msgstr "Có dữ liệu chưa được chuyển đổi còn lại nằm trong bộ đệm đọc"
+msgstr "Để lại dữ liệu chưa được chuyển đổi trong buffer đọc"
 
-#: glib/giochannel.c:1881 glib/giochannel.c:1958
+#: ../glib/giochannel.c:1880 ../glib/giochannel.c:1957
 msgid "Channel terminates in a partial character"
 msgstr "Kênh tận hết trong ký tự riêng phần"
 
-#: glib/giochannel.c:1944
+#: ../glib/giochannel.c:1943
 msgid "Can't do a raw read in g_io_channel_read_to_end"
-msgstr ""
-"Không thể thực hiện tiến trình đọc thô trong 'g_io_channel_read_to_end'"
+msgstr "Không thể thực hiện đọc thô trong g_io_channel_read_to_end"
 
-#: glib/gmappedfile.c:151
+#: ../glib/gmappedfile.c:150
 #, c-format
 msgid "Failed to open file '%s': open() failed: %s"
-msgstr "Lỗi mở tập tin '%s': lỗi 'fdopen()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gmappedfile.c:230
+#: ../glib/gmappedfile.c:229
 #, c-format
 msgid "Failed to map file '%s': mmap() failed: %s"
-msgstr "Lỗi ánh xạ tập tin '%s': lỗi 'mmap()': %s"
+msgstr "Không mở được tập tin '%s': fdopen() không được: %s"
 
-#: glib/gmarkup.c:303 glib/gmarkup.c:343
+#: ../glib/gmarkup.c:307 ../glib/gmarkup.c:347
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Lỗi trên dòng %d ký tự %d: "
 
-#: glib/gmarkup.c:363 glib/gmarkup.c:441
+#: ../glib/gmarkup.c:367 ../glib/gmarkup.c:445
 #, c-format
 msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
 msgstr "Văn bản được mã hoá UTF-8 không hợp lệ '%s'"
 
-#: glib/gmarkup.c:374
+#: ../glib/gmarkup.c:378
 #, c-format
 msgid "'%s' is not a valid name "
 msgstr "'%s' không phải là tên hợp lệ"
 
-#: glib/gmarkup.c:390
+#: ../glib/gmarkup.c:394
 #, c-format
 msgid "'%s' is not a valid name: '%c' "
 msgstr "'%s' không phải là tên hợp lệ: '%c'"
 
-#: glib/gmarkup.c:494
+#: ../glib/gmarkup.c:498
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Lỗi trên dòng %d: %s"
 
-#: glib/gmarkup.c:578
+#: ../glib/gmarkup.c:582
 #, c-format
 msgid ""
 "Failed to parse '%-.*s', which should have been a digit inside a character "
 "reference (&#234; for example) - perhaps the digit is too large"
 msgstr ""
-"Lỗi phân tách '%-.*s', nó nên là một chữ số bên trong một tham chiếu ký tự "
-"(v.d. '&#234') — có lẽ chư số quá lớn."
+"Không phân tách được « %-.*s », nó nên là một con số bên trong một tham chiếu "
+"ký tự (v.d. « &#234 ») — có lẽ con số quá lớn."
 
-#: glib/gmarkup.c:590
+#: ../glib/gmarkup.c:594
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
 "ampersand character without intending to start an entity - escape ampersand "
 "as &amp;"
 msgstr ""
-"Tham chiếu ký tự không có dấu chấm phẩy cuối cùng; dường như bạn đã dùng một "
-"dấu và mà không định bắt đầu một thực thể — hãy thoát dấu và như là '&amp;'"
+"Tham chiếu ký tự đã không kết thúc bằng dấu chấm phẩy; dường như bạn đã dùng "
+"một ký tự (và) mà không phải để bắt đầu một thự thể - thoát dấu (và) như là "
+"&amp"
 
-#: glib/gmarkup.c:616
+#: ../glib/gmarkup.c:620
 #, c-format
 msgid "Character reference '%-.*s' does not encode a permitted character"
-msgstr "Tham chiếu ký tự '%-.*s' không mã hóa một ký tự được phép."
+msgstr "Tham chiếu ký tự « %-.*s » không mã hóa một ký tự cho phép."
 
-#: glib/gmarkup.c:654
+#: ../glib/gmarkup.c:658
 msgid ""
 "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
-"Thấy thực thể rỗng '&;'; những thực thể hợp lệ là: &amp; &quot; &lt; &gt; "
-"&apos;"
+"Thực thể trống '&;' được thấy; những mục nhập hợp lệ là: &amp; &quot; &lt; "
+"&gt; &apos;"
 
-#: glib/gmarkup.c:662
+#: ../glib/gmarkup.c:666
 #, c-format
 msgid "Entity name '%-.*s' is not known"
 msgstr "Thực thể lạ '%-.*s'"
 
-#: glib/gmarkup.c:667
+#: ../glib/gmarkup.c:671
 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;"
 msgstr ""
-"Thực thể không có dấu chấm phẩy cuối cùng; dường như bạn đã dùng dấu và mà "
-"không định bắt đầu một thực thể — hãy thoát dấu và như là '&amp;'"
+"Thực thể đã không kết thúc bằng dấu chấm phẩy; dường như bạn đã dùng ký tự "
+"(và) mà không phải để bắt đầu một thự thể - thoát khỏi dấu (và) như là &amp;"
 
-#: glib/gmarkup.c:1014
+#: ../glib/gmarkup.c:1018
 msgid "Document must begin with an element (e.g. <book>)"
-msgstr "Tài liệu phải bắt đầu bằng một yếu tố (v.d. <book> [quyển sách])"
+msgstr "Tài liệu phải bắt đầu bằng một phần tử (vd: <book>)"
 
-#: glib/gmarkup.c:1054
+#: ../glib/gmarkup.c:1058
 #, c-format
 msgid ""
 "'%s' is not a valid character following a '<' character; it may not begin an "
 "element name"
 msgstr ""
-"'%s' không phải là một ký tự hợp lệ đi theo một dấu ngoặc nhọn mở '<' ; "
-"không cho phép nó bắt đầu một tên yếu tố"
+"'%s' không phải một ký tự hợp lệ đi theo ký tự '<' ; nó có thể không bắt đầu "
+"tên phần tử"
 
-#: glib/gmarkup.c:1122
+#: ../glib/gmarkup.c:1126
 #, c-format
 msgid ""
 "Odd character '%s', expected a '>' character to end the empty-element tag '%"
@@ -413,1217 +641,1369 @@
 msgstr ""
 "Ký tự lạ '%s', mong đợi một dấu ngoặc nhọn đóng '>' để kết thúc thẻ rỗng '%s'"
 
-#: glib/gmarkup.c:1206
+#: ../glib/gmarkup.c:1210
 #, c-format
 msgid ""
 "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
-msgstr ""
-"Ký tự lạ '%s', mong đợi một dấu bằng '=' nằm sau tên thuộc tính '%s' của yếu "
-"tố '%s'"
+msgstr "Ký tự lẻ '%s', mong muốn '=' sau tên thuộc tính '%s' của phần tử '%s'"
 
-#: glib/gmarkup.c:1247
+#: ../glib/gmarkup.c:1251
 #, c-format
 msgid ""
 "Odd character '%s', expected a '>' or '/' character to end the start tag of "
 "element '%s', or optionally an attribute; perhaps you used an invalid "
 "character in an attribute name"
 msgstr ""
-"Ký tự lạ '%s', mong đợi một dấu ngoặc nhọn đóng '>' hay dấu xuyệc '/' để kết "
-"thúc thẻ khởi đầu của yếu tố '%s', hay tùy ý một thuộc tính; có lẽ bạn đã "
-"dùng một ký tự không hợp lệ trong một tên thuộc tính."
+"Ký tự lẻ '%s', mong muốn một ký tự '>' hay '/' để kết thúc tag khởi đầu của "
+"phần ỷư '%s', hay tùy ý một thuộc tính; có lẽ bạn đã dùng một ký tự bát hợp "
+"lệ trong một tên thuộc tính"
 
-#: glib/gmarkup.c:1291
+#: ../glib/gmarkup.c:1295
 #, c-format
 msgid ""
 "Odd character '%s', expected an open quote mark after the equals sign when "
 "giving value for attribute '%s' of element '%s'"
 msgstr ""
-"Ký tự lạ '%s', mong đợi một dấu nháy kép mở nằm sau dấu bằng khi đưa giá trị "
-"cho thuộc tính '%s' của yếu tố '%s'"
+"Ký tự lẻ '%s' , mong muốn một dấu ngoặc kép sau dấu bằng khi nhận giá trị "
+"cho thuộc tính '%s' của phần tử '%s'"
 
-#: glib/gmarkup.c:1425
+#: ../glib/gmarkup.c:1429
 #, c-format
 msgid ""
 "'%s' is not a valid character following the characters '</'; '%s' may not "
 "begin an element name"
 msgstr ""
-"'%s' không phải là một ký tự hợp lệ nằm theo các ký tự '</' ; không cho phép "
-"'%s' bắt đầu một tên yếu tố"
+"'%s' không phải một ký tự hợp lệ đi theo các ký tự '</' ; '%s' có thể không "
+"khởi đầu một tên phần tử"
 
-#: glib/gmarkup.c:1461
+#: ../glib/gmarkup.c:1465
 #, c-format
 msgid ""
 "'%s' is not a valid character following the close element name '%s'; the "
 "allowed character is '>'"
 msgstr ""
-"'%s'  không phải là một ký tự hợp lệ nằm theo tên yếu tố đóng '%s'; ký tự "
-"được phép là '>'."
+"'%s' không phải một ký tự hợp lệ đi theo tên phần tử đóng '%s'; ký tự được "
+"phép là '>'"
 
-#: glib/gmarkup.c:1472
+#: ../glib/gmarkup.c:1476
 #, c-format
 msgid "Element '%s' was closed, no element is currently open"
-msgstr "Yếu tố '%s' đã được đóng, không có yếu tố mở hiện thời"
+msgstr "Phần tử '%s' đã được đóng, không có phần tử mở hiện thời"
 
-#: glib/gmarkup.c:1481
+#: ../glib/gmarkup.c:1485
 #, c-format
 msgid "Element '%s' was closed, but the currently open element is '%s'"
-msgstr "Yếu tố '%s' đã được đóng, nhưng yếu tố mở hiện thời là '%s'"
+msgstr "Phần tử '%s' đã được đóng, nhưng phần tử mở hiện thời là '%s'"
 
-#: glib/gmarkup.c:1648
+#: ../glib/gmarkup.c:1652
 msgid "Document was empty or contained only whitespace"
-msgstr "Tài liệu rỗng hay chứa chỉ khoảng trắng"
+msgstr "Tài liệu trống hay chỉ chứa không gian trống"
 
-#: glib/gmarkup.c:1662
+#: ../glib/gmarkup.c:1666
 msgid "Document ended unexpectedly just after an open angle bracket '<'"
-msgstr "Tài liệu đã kết thúc bất thường ngay sau một dấu ngoặc nhọn mở '<'"
+msgstr ""
+"Tài liệu đã kết thúc không mong muốn ngay sau một dấu ngoặc nhọn mở '<'"
 
-#: glib/gmarkup.c:1670 glib/gmarkup.c:1715
+#: ../glib/gmarkup.c:1674 ../glib/gmarkup.c:1719
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open - '%s' was the last "
 "element opened"
 msgstr ""
-"Tài liệu đã kết thúc bất thường với các yếu tố vẫn còn mở — '%s' là yếu tố "
-"đã mở cuối cùng"
+"Tài liệu đã kết thúc không mong muốn với các phần tử vẫn còn mở - '%s' là "
+"phần tử đã mở cuối cùng"
 
-#: glib/gmarkup.c:1678
+#: ../glib/gmarkup.c:1682
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
 "the tag <%s/>"
 msgstr ""
-"Tài liệu kết thúc bất thường, mong đợi thấy dấu ngoặc nhọn đóng kết thúc thẻ "
-"'<%s/>'"
+"Tài liệu kết thúc không mong muốn, được cho là thấy dấu ngoặc nhọn kết thúc "
+"tag <%s/>"
 
-#: glib/gmarkup.c:1684
+#: ../glib/gmarkup.c:1688
 msgid "Document ended unexpectedly inside an element name"
-msgstr "Tài liệu đã kết thúc bất thường bên trong một tên yếu tố"
+msgstr "Tài liệu được kết thúc không mong muốn bên trong tên phần tử"
 
-#: glib/gmarkup.c:1690
+#: ../glib/gmarkup.c:1694
 msgid "Document ended unexpectedly inside an attribute name"
-msgstr "Tài liệu đã kết thúc bất thường bên trong một tên thuộc tính"
+msgstr "Tài liệu được kết thúc không mong muốn bên trong tên thuộc tính"
 
-#: glib/gmarkup.c:1695
+#: ../glib/gmarkup.c:1699
 msgid "Document ended unexpectedly inside an element-opening tag."
-msgstr "Tài liệu đã kết thúc bất thường bên trong một thẻ mở yếu tố"
+msgstr "Tài liệu được kết thúc không mong muốn bên trong tag của phần tử mở."
 
-#: glib/gmarkup.c:1701
+#: ../glib/gmarkup.c:1705
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 msgstr ""
-"Tài liệu đã kết thúc bất thường sau dấu bằng nằm sau một tên thuộc tính; "
+"Tài liệu kết thúc không mong muốn sau dấu bằng đi theo một tên thuộc tính; "
 "không có giá trị thuộc tính"
 
-#: glib/gmarkup.c:1708
+#: ../glib/gmarkup.c:1712
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr ""
-"Tài liệu đã kết thúc bất thường trong khi nằm trong một giá trị thuộc tính"
+"Tài liệu được kết thúc không mong muốn trong khi nằm trong một giá trị thuộc "
+"tính"
 
-#: glib/gmarkup.c:1724
+#: ../glib/gmarkup.c:1728
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element '%s'"
-msgstr "Tài liệu đã kết thúc bất thường bên trong thẻ đóng cho yếu tố '%s'"
+msgstr ""
+"Tài liệu được kết thúc không mong muốn bên trong tag đóng cho phần tử '%s'"
 
-#: glib/gmarkup.c:1730
+#: ../glib/gmarkup.c:1734
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr ""
-"Tài liệu đã kết thúc bất thường bên trong một chú thích hay hướng dẫn xử lý"
+"Tài liệu được kết thúc không mong muốn bên trong một ghi chú hay hướng dẫn "
+"tiến trình"
 
-#: glib/gregex.c:131
+#: ../glib/gregex.c:188
 msgid "corrupted object"
 msgstr "đối tượng bị hỏng"
 
-#: glib/gregex.c:133
+#: ../glib/gregex.c:190
 msgid "internal error or corrupted object"
 msgstr "lỗi nội bộ hay đối tượng bị hỏng"
 
-#: glib/gregex.c:135
+#: ../glib/gregex.c:192
 msgid "out of memory"
 msgstr "hết bộ nhớ"
 
-#: glib/gregex.c:140
+#: ../glib/gregex.c:197
 msgid "backtracking limit reached"
 msgstr "không thể rút lùi nữa"
 
-#: glib/gregex.c:152 glib/gregex.c:160
+#: ../glib/gregex.c:209 ../glib/gregex.c:217
 msgid "the pattern contains items not supported for partial matching"
 msgstr "mẫu chứa mục không được hỗ trợ khi khớp bộ phận"
 
-#: glib/gregex.c:154 gio/glocalfile.c:2110
+#: ../glib/gregex.c:211 ../gio/glocalfile.c:2109
 msgid "internal error"
 msgstr "lỗi nội bộ"
 
-#: glib/gregex.c:162
+#: ../glib/gregex.c:219
 msgid "back references as conditions are not supported for partial matching"
 msgstr "khi khớp bộ phận, không hỗ trợ rút lui làm điều kiện"
 
-#: glib/gregex.c:171
+#: ../glib/gregex.c:228
 msgid "recursion limit reached"
 msgstr "không thể đề qui nữa"
 
-#: glib/gregex.c:173
+#: ../glib/gregex.c:230
 msgid "workspace limit for empty substrings reached"
 msgstr "vùng làm việc không thể chứa chuỗi con rỗng nữa"
 
-#: glib/gregex.c:175
+#: ../glib/gregex.c:232
 msgid "invalid combination of newline flags"
 msgstr "kết hợp cờ dòng mới một cách không hợp lệ"
 
-#: glib/gregex.c:179
+#: ../glib/gregex.c:236
 msgid "unknown error"
 msgstr "lỗi lạ"
 
-#: glib/gregex.c:199
+#: ../glib/gregex.c:256
 msgid "\\ at end of pattern"
 msgstr "\\ ở kết thúc của mẫu"
 
-#: glib/gregex.c:202
+#: ../glib/gregex.c:259
 msgid "\\c at end of pattern"
 msgstr "\\c ở kết thúc của mẫu"
 
-#: glib/gregex.c:205
+#: ../glib/gregex.c:262
 msgid "unrecognized character follows \\"
 msgstr "có ký tự lạ phía sau \\"
 
-#: glib/gregex.c:212
+#: ../glib/gregex.c:269
 msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
 msgstr ""
 "ở đây thì không cho phép ký tự thoát thay đổi chữ hoa/thường (\\l, \\L, \\u, "
 "\\U)"
 
-#: glib/gregex.c:215
+#: ../glib/gregex.c:272
 msgid "numbers out of order in {} quantifier"
 msgstr "các con số không theo thứ tự đúng trong chuỗi xác định số lượng {}"
 
-#: glib/gregex.c:218
+#: ../glib/gregex.c:275
 msgid "number too big in {} quantifier"
 msgstr "con số quá lớn trong chuỗi xác định số lượng {}"
 
-#: glib/gregex.c:221
+#: ../glib/gregex.c:278
 msgid "missing terminating ] for character class"
 msgstr "thiếu ] chấm dứt cho hạng ký tự"
 
-#: glib/gregex.c:224
+#: ../glib/gregex.c:281
 msgid "invalid escape sequence in character class"
 msgstr "gặp dây thoát không hợp lệ trong hạng ký tự"
 
-#: glib/gregex.c:227
+#: ../glib/gregex.c:284
 msgid "range out of order in character class"
 msgstr "phạm vi không theo thứ tự đúng trong hạng ký tự"
 
-#: glib/gregex.c:230
+#: ../glib/gregex.c:287
 msgid "nothing to repeat"
 msgstr "không có gì cần lặp lại"
 
-#: glib/gregex.c:233
+#: ../glib/gregex.c:290
 msgid "unrecognized character after (?"
 msgstr "không nhận dạng ký tự nằm sau (?"
 
-#: glib/gregex.c:237
+#: ../glib/gregex.c:294
 msgid "unrecognized character after (?<"
 msgstr "không nhận dạng ký tự nằm sau (?<"
 
-#: glib/gregex.c:241
+#: ../glib/gregex.c:298
 msgid "unrecognized character after (?P"
 msgstr "không nhận dạng ký tự nằm sau (?P"
 
-#: glib/gregex.c:244
+#: ../glib/gregex.c:301
 msgid "POSIX named classes are supported only within a class"
 msgstr "Hạng POSIX có tên chỉ được hỗ trợ bên trong hạng"
 
-#: glib/gregex.c:247
+#: ../glib/gregex.c:304
 msgid "missing terminating )"
 msgstr "thiếu ) chấm dứt"
 
-#: glib/gregex.c:251
+#: ../glib/gregex.c:308
 msgid ") without opening ("
 msgstr "có ) không có ( đầu tiên"
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: glib/gregex.c:258
+#: ../glib/gregex.c:315
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "(?R hay (?[+-]chữ số phải có ) theo sau"
 
-#: glib/gregex.c:261
+#: ../glib/gregex.c:318
 msgid "reference to non-existent subpattern"
 msgstr "tham chiếu đến mẫu phụ không tồn tại"
 
-#: glib/gregex.c:264
+#: ../glib/gregex.c:321
 msgid "missing ) after comment"
 msgstr "thiếu ) nằm sau chú thích"
 
-#: glib/gregex.c:267
+#: ../glib/gregex.c:324
 msgid "regular expression too large"
 msgstr "biểu thức chính quy quá lớn"
 
-#: glib/gregex.c:270
+#: ../glib/gregex.c:327
 msgid "failed to get memory"
 msgstr "không lấy được bộ nhớ"
 
-#: glib/gregex.c:273
+#: ../glib/gregex.c:330
 msgid "lookbehind assertion is not fixed length"
 msgstr "khẳng định lookbehind (thấy ở sau) không có độ dài cố định"
 
-#: glib/gregex.c:276
+#: ../glib/gregex.c:333
 msgid "malformed number or name after (?("
 msgstr "có con số hay tên dạng sai nằm sau (?("
 
-#: glib/gregex.c:279
+#: ../glib/gregex.c:336
 msgid "conditional group contains more than two branches"
 msgstr "nhóm điều kiện chứa nhiều hơn hai nhánh"
 
-#: glib/gregex.c:282
+#: ../glib/gregex.c:339
 msgid "assertion expected after (?("
 msgstr "mong đợi khẳng định nằm sau (?("
 
-#: glib/gregex.c:285
+#: ../glib/gregex.c:342
 msgid "unknown POSIX class name"
 msgstr "không rõ tên hạng POSIX"
 
-#: glib/gregex.c:288
+#: ../glib/gregex.c:345
 msgid "POSIX collating elements are not supported"
 msgstr "Không hỗ trợ yếu tố đối chiếu POSIX"
 
-#: glib/gregex.c:291
+#: ../glib/gregex.c:348
 msgid "character value in \\x{...} sequence is too large"
 msgstr "dãy \\x{...} chứa giá trị ký tự quá lớn"
 
-#: glib/gregex.c:294
+#: ../glib/gregex.c:351
 msgid "invalid condition (?(0)"
 msgstr "điều kiện không hợp lệ (?(0)"
 
-#: glib/gregex.c:297
+#: ../glib/gregex.c:354
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C không được phép trong khẳng định lookbehind (thấy ở sau)"
 
-#: glib/gregex.c:300
+#: ../glib/gregex.c:357
 msgid "recursive call could loop indefinitely"
 msgstr "lời gọi đệ quy có thể bị lặp vô hạn"
 
-#: glib/gregex.c:303
+#: ../glib/gregex.c:360
 msgid "missing terminator in subpattern name"
 msgstr "thiếu dấu chấm dứt trong tên mẫu phụ"
 
-#: glib/gregex.c:306
+#: ../glib/gregex.c:363
 msgid "two named subpatterns have the same name"
 msgstr "hai mẫu phụ có tên cũng có cùng một tên"
 
-#: glib/gregex.c:309
+#: ../glib/gregex.c:366
 msgid "malformed \\P or \\p sequence"
 msgstr "dãy \\P hay \\p dạng sai"
 
-#: glib/gregex.c:312
+#: ../glib/gregex.c:369
 msgid "unknown property name after \\P or \\p"
 msgstr "có tên thuộc tính không rõ nằm sau \\P hay \\p"
 
-#: glib/gregex.c:315
+#: ../glib/gregex.c:372
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "tên mẫu phụ quá dài (tối đa 32 ký tự)"
 
-#: glib/gregex.c:318
+#: ../glib/gregex.c:375
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "quá nhiều mẫu phụ có tên (tối đa 10 000)"
 
-#: glib/gregex.c:321
+#: ../glib/gregex.c:378
 msgid "octal value is greater than \\377"
 msgstr "giá trị bát phân lớn hơn \\377"
 
-#: glib/gregex.c:324
+#: ../glib/gregex.c:381
 msgid "DEFINE group contains more than one branch"
 msgstr "nhóm DEFINE (định nghĩa) chứa nhiều hơn một nhánh"
 
-#: glib/gregex.c:327
+#: ../glib/gregex.c:384
 msgid "repeating a DEFINE group is not allowed"
 msgstr "không cho phép lặp lại một nhóm DEFINE (định nghĩa)"
 
-#: glib/gregex.c:330
+#: ../glib/gregex.c:387
 msgid "inconsistent NEWLINE options"
 msgstr "các tùy chọn NEWLINE (dòng mới) không thống nhất với nhau"
 
-#: glib/gregex.c:333
+#: ../glib/gregex.c:390
 msgid ""
 "\\g is not followed by a braced name or an optionally braced non-zero number"
 msgstr ""
 "\\g không đi trước một tên có dấu ngoặc móc hoặc một con số không phải số "
 "không có dấu ngoặc móc tùy chọn"
 
-#: glib/gregex.c:338
+#: ../glib/gregex.c:395
 msgid "unexpected repeat"
 msgstr "lặp lại bất thường"
 
-#: glib/gregex.c:342
+#: ../glib/gregex.c:399
 msgid "code overflow"
 msgstr "tràn mã"
 
-#: glib/gregex.c:346
+#: ../glib/gregex.c:403
 msgid "overran compiling workspace"
 msgstr "tràn vùng làm việc biên dịch"
 
-#: glib/gregex.c:350
+#: ../glib/gregex.c:407
 msgid "previously-checked referenced subpattern not found"
 msgstr "không tìm thấy mẫu phụ đã tham chiếu mà đã kiểm tra trước"
 
-#: glib/gregex.c:522 glib/gregex.c:1639
+#: ../glib/gregex.c:579 ../glib/gregex.c:1700
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Gặp lỗi trong khi khớp biểu thức chính quy %s: %s"
 
-#: glib/gregex.c:1094
+#: ../glib/gregex.c:1155
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "Thư viện PCRE đã biên dịch không có khả năng hỗ trợ UTF-8"
 
-#: glib/gregex.c:1103
+#: ../glib/gregex.c:1164
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "Thư viện PCRE đã biên dịch không có khả năng hỗ trợ tài sản UTF-8"
 
-#: glib/gregex.c:1157
+#: ../glib/gregex.c:1218
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Gặp lỗi trong khi biên dịch biểu thức chính quy %s ở ký tự %d: %s"
 
-#: glib/gregex.c:1193
+#: ../glib/gregex.c:1254
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Gặp lỗi trong khi tối hưu hoá biểu thức chính quy %s: %s"
 
-#: glib/gregex.c:2067
+#: ../glib/gregex.c:2128
 msgid "hexadecimal digit or '}' expected"
 msgstr "đợi chữ số thập lục hay dấu ngoặc móc đóng '}'"
 
-#: glib/gregex.c:2083
+#: ../glib/gregex.c:2144
 msgid "hexadecimal digit expected"
 msgstr "đợi chữ số thập lục"
 
-#: glib/gregex.c:2123
+#: ../glib/gregex.c:2184
 msgid "missing '<' in symbolic reference"
 msgstr "thiếu dấu ngoặc nhọn mở '<' trong tham chiếu tượng trưng"
 
-#: glib/gregex.c:2132
+#: ../glib/gregex.c:2193
 msgid "unfinished symbolic reference"
 msgstr "tham chiếu tượng trưng chưa hoàn thành"
 
-#: glib/gregex.c:2139
+#: ../glib/gregex.c:2200
 msgid "zero-length symbolic reference"
 msgstr "tham chiếu tượng trưng có độ dài số không"
 
-#: glib/gregex.c:2150
+#: ../glib/gregex.c:2211
 msgid "digit expected"
 msgstr "đợi chữ số"
 
-#: glib/gregex.c:2168
+#: ../glib/gregex.c:2229
 msgid "illegal symbolic reference"
 msgstr "tham chiếu tượng trưng không cho phép"
 
-#: glib/gregex.c:2230
+#: ../glib/gregex.c:2291
 msgid "stray final '\\'"
 msgstr "dấu xuyệc ngược kết thúc rải rác '\\'"
 
-#: glib/gregex.c:2234
+#: ../glib/gregex.c:2295
 msgid "unknown escape sequence"
 msgstr "dãy thoát lạ"
 
-#: glib/gregex.c:2244
+#: ../glib/gregex.c:2305
 #, c-format
 msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
 msgstr "Gặp lỗi trong khi phân tách văn bản thay thế '%s' ở ký tự %lu: %s"
 
-#: glib/gshell.c:92
+#: ../glib/gshell.c:91
 msgid "Quoted text doesn't begin with a quotation mark"
 msgstr "Văn bản trích dẫn không bắt đầu bằng một dấu trích dẫn"
 
-#: glib/gshell.c:182
+#: ../glib/gshell.c:181
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
-"Dấu ngoặc kép không ăn khớp nằm trên dòng lệnh hay trong văn bản khác đã "
-"trích dẫn trong trình bao"
+"Dấu ngoặc kép không ăn khớp trong dòng lệnh hay một shell-quoted text khác"
 
-#: glib/gshell.c:560
+#: ../glib/gshell.c:559
 #, c-format
 msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "Văn bản đã kết thúc ngay sau dấu xuyệc ngược '\\' (văn bản là '%s')"
+msgstr "Văn bản được kết thúc ngay sau ký tự '\\'. (văn bản đã là '%s')"
 
-#: glib/gshell.c:567
+#: ../glib/gshell.c:566
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was '%s')"
 msgstr ""
-"Văn bản đã kết thúc trước khi tìm dấu ngoặc kép tương ứng với '%c' (văn bản "
-"là '%s')"
+"Text đã kết thúc trước khi làm khớp dấu ngoặc kép cho %c. (text là '%s')"
 
-#: glib/gshell.c:579
+#: ../glib/gshell.c:578
 msgid "Text was empty (or contained only whitespace)"
-msgstr "Văn bản rỗng (hay chưa chỉ khoảng trắng)"
+msgstr "Văn bản trống (hay chỉ gồm các ký tự trắng)"
 
-#: glib/gspawn-win32.c:283
+#: ../glib/gspawn-win32.c:282
 msgid "Failed to read data from child process"
-msgstr "Lỗi đọc dữ liệu từ tiến trình con"
+msgstr "Không đọc được dữ liệu từ tiến trình con"
 
-#: glib/gspawn-win32.c:300 glib/gspawn.c:1480
+#: ../glib/gspawn-win32.c:299 ../glib/gspawn.c:1486
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Lỗi tạo ống dẫn để liên lạc với tiến trình con (%s)"
+msgstr "Không tạo được pipe để liên lạc với tiến trình con (%s)"
 
-#: glib/gspawn-win32.c:339 glib/gspawn-win32.c:347 glib/gspawn.c:1139
+#: ../glib/gspawn-win32.c:338 ../glib/gspawn-win32.c:346 ../glib/gspawn.c:1145
 #, c-format
 msgid "Failed to read from child pipe (%s)"
-msgstr "Lỗi đọc từ ống dẫn con (%s)"
+msgstr "Không đọc được từ pipe con (%s)"
 
-#: glib/gspawn-win32.c:370 glib/gspawn.c:1346
+#: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1352
 #, c-format
 msgid "Failed to change to directory '%s' (%s)"
-msgstr "Lỗi chuyển đổi sang thư mục '%s' (%s)"
+msgstr "Không thay đổi được thư mục '%s' (%s)"
 
-#: glib/gspawn-win32.c:376 glib/gspawn-win32.c:495
+#: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494
 #, c-format
 msgid "Failed to execute child process (%s)"
-msgstr "Lỗi thực hiện tiến trình con (%s)"
+msgstr "Không thực thi được tiến trình con (%s)"
 
-#: glib/gspawn-win32.c:445
+#: ../glib/gspawn-win32.c:444
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Tên chương trình không hợp lệ: %s"
 
-#: glib/gspawn-win32.c:455 glib/gspawn-win32.c:723 glib/gspawn-win32.c:1279
+#: ../glib/gspawn-win32.c:454 ../glib/gspawn-win32.c:722
+#: ../glib/gspawn-win32.c:1278
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
-msgstr "Gặp chuỗi không hợp lệ nằm trong véc-tơ đối số tại %d: %s"
+msgstr "Gặp chuỗi không hợp lệ trong véc-tơ đối số tại %d: %s"
 
-#: glib/gspawn-win32.c:466 glib/gspawn-win32.c:738 glib/gspawn-win32.c:1312
+#: ../glib/gspawn-win32.c:465 ../glib/gspawn-win32.c:737
+#: ../glib/gspawn-win32.c:1311
 #, c-format
 msgid "Invalid string in environment: %s"
-msgstr "Gặp chuỗi không hợp lệ nằm trong môi trường: %s"
+msgstr "Gặp chuỗi không hợp lệ trong môi trường: %s"
 
-#: glib/gspawn-win32.c:719 glib/gspawn-win32.c:1260
+#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Thư mục làm việc không hợp lệ: %s"
 
-#: glib/gspawn-win32.c:784
+#: ../glib/gspawn-win32.c:783
 #, c-format
 msgid "Failed to execute helper program (%s)"
-msgstr "Lỗi thực hiện chương trình bổ trợ (%s)"
+msgstr "Lỗi thực thi chương trình bổ trợ (%s)"
 
-#: glib/gspawn-win32.c:998
+#: ../glib/gspawn-win32.c:997
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
-"Gặp lỗi bất thường nằm trong 'g_io_channel_win32_poll()' khi đọc dữ liệu từ "
-"tiến trình con"
+"Lỗi không mong muốn trong g_io_channel_win32_poll() đọc dữ liệu từ tiến "
+"trình con"
 
-#: glib/gspawn.c:190
+#: ../glib/gspawn.c:196
 #, c-format
 msgid "Failed to read data from child process (%s)"
-msgstr "Lỗi đọc dữ liệu từ tiến trình con (%s)"
+msgstr "Không đọc được dữ liệu từ tiến trình con (%s)"
 
-#: glib/gspawn.c:329
+#: ../glib/gspawn.c:335
 #, c-format
 msgid "Unexpected error in select() reading data from a child process (%s)"
-msgstr ""
-"Gặp lỗi bất thường nằm trong 'select()' khi đọc dữ liệu từ tiến trình con (%"
-"s)"
+msgstr "Lỗi không mong muốn trong select() đọc dữ liệu từ tiến trình con (%s)"
 
-#: glib/gspawn.c:414
+#: ../glib/gspawn.c:420
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
-msgstr "Gặp lỗi bất thường nằm trong 'waitpid()' (%s)"
+msgstr "Lỗi không mong muốn trong waitpid() (%s)"
 
-#: glib/gspawn.c:1206
+#: ../glib/gspawn.c:1212
 #, c-format
 msgid "Failed to fork (%s)"
-msgstr "Lỗi tạo tiến trình con (%s)"
+msgstr "Không rẽ nhánh được (%s)"
 
-#: glib/gspawn.c:1356
+#: ../glib/gspawn.c:1362
 #, c-format
 msgid "Failed to execute child process \"%s\" (%s)"
-msgstr "Lỗi thực hiện tiến trình con '%s' (%s)"
+msgstr "Không thự thi được tiến trình con \"%s\" (%s)"
 
-#: glib/gspawn.c:1366
+#: ../glib/gspawn.c:1372
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Lỗi chuyển hướng kết nhập hay kết xuất của tiến trình con (%s)"
+msgstr "Không gửi được lần nữa đầu ra hay đầu vào của tiến trình con (%s)"
 
-#: glib/gspawn.c:1375
+#: ../glib/gspawn.c:1381
 #, c-format
 msgid "Failed to fork child process (%s)"
-msgstr "Lỗi tạo tiến trình con (%s)"
+msgstr "Không rẽ nhánh được tiến trình con (%s)"
 
-#: glib/gspawn.c:1383
+#: ../glib/gspawn.c:1389
 #, c-format
 msgid "Unknown error executing child process \"%s\""
-msgstr "Gặp lỗi không rõ khi thực hiện tiến trình con '%s'"
+msgstr "Lỗi không xác định khi thực thi tiến trình con \"%s\""
 
-#: glib/gspawn.c:1407
+#: ../glib/gspawn.c:1413
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
-msgstr "Lỗi đọc đủ dữ liệu từ ống dẫn PID con (%s)"
+msgstr "Không đọc được đủ dữ liệu từ pid pipe con(%s)"
 
-#: glib/gutf8.c:1063
+#: ../glib/gutf8.c:1066
 msgid "Character out of range for UTF-8"
-msgstr "Ký tự ở ngoại phạm vi UTF-8"
+msgstr "Ký tự nằm ngoài vùng UTF-8"
 
-#: glib/gutf8.c:1163 glib/gutf8.c:1172 glib/gutf8.c:1304 glib/gutf8.c:1313
-#: glib/gutf8.c:1454 glib/gutf8.c:1550
+#: ../glib/gutf8.c:1166 ../glib/gutf8.c:1175 ../glib/gutf8.c:1307
+#: ../glib/gutf8.c:1316 ../glib/gutf8.c:1457 ../glib/gutf8.c:1553
 msgid "Invalid sequence in conversion input"
-msgstr "Dãy không hợp lệ nằm trong dữ liệu nhập việc chuyển đổi"
+msgstr "Sequence bất hợp lệ trong đầu vào chuyển đổi"
 
-#: glib/gutf8.c:1465 glib/gutf8.c:1561
+#: ../glib/gutf8.c:1468 ../glib/gutf8.c:1564
 msgid "Character out of range for UTF-16"
-msgstr "Ký tự ở ngoại phạm vi UTF-16"
+msgstr "Ký tự nằm ngoài vùng UTF-16"
 
-#: glib/goption.c:755
+#: ../glib/goption.c:760
 msgid "Usage:"
 msgstr "Sử dụng:"
 
-#: glib/goption.c:755
+#: ../glib/goption.c:760
 msgid "[OPTION...]"
 msgstr "[TÙY_CHỌN...]"
 
-#: glib/goption.c:861
+#: ../glib/goption.c:866
 msgid "Help Options:"
 msgstr "Tùy chọn trợ giúp:"
 
-#: glib/goption.c:862
+#: ../glib/goption.c:867
 msgid "Show help options"
 msgstr "Hiển thị các tùy chọn trợ giúp"
 
-#: glib/goption.c:868
+#: ../glib/goption.c:873
 msgid "Show all help options"
 msgstr "Hiển thị mọi tùy chọn trợ giúp"
 
-#: glib/goption.c:930
+#: ../glib/goption.c:935
 msgid "Application Options:"
 msgstr "Tùy chọn ứng dụng:"
 
-#: glib/goption.c:992 glib/goption.c:1062
+#: ../glib/goption.c:997 ../glib/goption.c:1067
 #, c-format
 msgid "Cannot parse integer value '%s' for %s"
-msgstr "Không thể phân tách giá trị số nguyên '%s' cho %s"
+msgstr "Không phân tách giá trị số nguyên « %s » cho %s."
 
-#: glib/goption.c:1002 glib/goption.c:1070
+#: ../glib/goption.c:1007 ../glib/goption.c:1075
 #, c-format
 msgid "Integer value '%s' for %s out of range"
-msgstr "Giá trị số nguyên '%s' cho %s ở ngoại phạm vi"
+msgstr "Giá trị số nguyên '%s' cho %s ở ngoài phạm vi."
 
-#: glib/goption.c:1027
+#: ../glib/goption.c:1032
 #, c-format
 msgid "Cannot parse double value '%s' for %s"
 msgstr "Không thể phân tách giá trị đôi '%s' cho %s"
 
-#: glib/goption.c:1035
+#: ../glib/goption.c:1040
 #, c-format
 msgid "Double value '%s' for %s out of range"
-msgstr "Giá trị đôi '%s' cho %s ở ngoại phạm vi"
+msgstr "Giá trị đôi '%s' cho %s ở ngoài phạm vi"
 
-#: glib/goption.c:1298 glib/goption.c:1377
+#: ../glib/goption.c:1303 ../glib/goption.c:1382
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Gặp lỗi khi phân tách tùy chọn %s"
 
-#: glib/goption.c:1408 glib/goption.c:1522
+#: ../glib/goption.c:1413 ../glib/goption.c:1527
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Thiếu đối số cho %s"
 
-#: glib/goption.c:1917
+#: ../glib/goption.c:1922
 #, c-format
 msgid "Unknown option %s"
-msgstr "Không biết tùy chọn %s"
+msgstr "Không biết tùy chọn %s."
 
-#: glib/gkeyfile.c:363
+#: ../glib/gkeyfile.c:362
 msgid "Valid key file could not be found in search dirs"
 msgstr "Không tìm thấy tập tin khoá hợp lệ nằm trong thư mục tìm kiếm"
 
-#: glib/gkeyfile.c:398
+#: ../glib/gkeyfile.c:397
 msgid "Not a regular file"
-msgstr "Không phải là một tập tin chuẩn"
+msgstr "Không phải là một tập tin chuẩn."
 
-#: glib/gkeyfile.c:406
+#: ../glib/gkeyfile.c:405
 msgid "File is empty"
-msgstr "Tập tin rỗng"
+msgstr "Tập tin rỗng."
 
-#: glib/gkeyfile.c:765
+#: ../glib/gkeyfile.c:764
 #, c-format
 msgid ""
 "Key file contains line '%s' which is not a key-value pair, group, or comment"
 msgstr ""
-"Tập tin khóa chứa dòng '%s' mà không phải là một cặp giá trị khóa, nhóm, hay "
-"chú thích"
+"Tập tin khóa chứa dòng « %s » mà không phải là cặp giá trị khóa, nhóm, hoặc "
+"chú thích."
 
-#: glib/gkeyfile.c:825
+#: ../glib/gkeyfile.c:824
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Tên nhóm không hợp lệ: %s"
 
-#: glib/gkeyfile.c:847
+#: ../glib/gkeyfile.c:846
 msgid "Key file does not start with a group"
-msgstr "Tập tin khóa không bắt đầu với nhóm"
+msgstr "Tập tin khóa không bắt đầu với nhóm."
 
-#: glib/gkeyfile.c:873
+#: ../glib/gkeyfile.c:872
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Tên khoá không hợp lệ: %s"
 
-#: glib/gkeyfile.c:900
+#: ../glib/gkeyfile.c:899
 #, c-format
 msgid "Key file contains unsupported encoding '%s'"
-msgstr "Tập tin khóa chứa bảng mã không được hỗ trợ '%s'"
+msgstr "Tập tin khóa chứa bảng mã không được hỗ trợ « %s »."
 
-#: glib/gkeyfile.c:1116 glib/gkeyfile.c:1278 glib/gkeyfile.c:2657
-#: glib/gkeyfile.c:2723 glib/gkeyfile.c:2858 glib/gkeyfile.c:2991
-#: glib/gkeyfile.c:3144 glib/gkeyfile.c:3331 glib/gkeyfile.c:3392
+#: ../glib/gkeyfile.c:1115 ../glib/gkeyfile.c:1277 ../glib/gkeyfile.c:2656
+#: ../glib/gkeyfile.c:2722 ../glib/gkeyfile.c:2857 ../glib/gkeyfile.c:2990
+#: ../glib/gkeyfile.c:3143 ../glib/gkeyfile.c:3330 ../glib/gkeyfile.c:3391
 #, c-format
 msgid "Key file does not have group '%s'"
-msgstr "Tập tin khóa không có nhóm '%s'"
+msgstr "Tập tin khóa không có nhóm « %s »."
 
-#: glib/gkeyfile.c:1290
+#: ../glib/gkeyfile.c:1289
 #, c-format
 msgid "Key file does not have key '%s'"
-msgstr "Tập tin khóa không có khóa '%s'"
+msgstr "Tập tin khóa không có khóa « %s »."
 
-#: glib/gkeyfile.c:1397 glib/gkeyfile.c:1512
+#: ../glib/gkeyfile.c:1396 ../glib/gkeyfile.c:1511
 #, c-format
 msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
-msgstr "Tập tin khóa chứa khóa '%s' với giá trị '%s' mà không phải là UTF-8"
+msgstr "Tập tin khóa chứa khóa « %s » có giá trị « %s » không phải là UTF-8."
 
-#: glib/gkeyfile.c:1417 glib/gkeyfile.c:1911
+#: ../glib/gkeyfile.c:1416 ../glib/gkeyfile.c:1910
 #, c-format
 msgid "Key file contains key '%s' which has value that cannot be interpreted."
-msgstr "Tập tin khóa chứa khóa '%s' mà có giá trị không có khả năng giải dịch."
+msgstr "Tập tin khóa chứa khóa « %s » có giá trị không có khả năng giải dịch."
 
-#: glib/gkeyfile.c:1532
+#: ../glib/gkeyfile.c:1531
 #, c-format
 msgid ""
 "Key file contains key '%s' which has a value that cannot be interpreted."
 msgstr "Không thể phân tích giá trị '%s' chứa trong tập tin khoá."
 
-#: glib/gkeyfile.c:2126 glib/gkeyfile.c:2488
+#: ../glib/gkeyfile.c:2125 ../glib/gkeyfile.c:2487
 #, c-format
 msgid ""
 "Key file contains key '%s' in group '%s' which has value that cannot be "
 "interpreted."
 msgstr ""
-"Tập tin khóa chứa khóa '%s' trong nhóm '%s' mà có giá trị không có khả năng "
+"Tập tin khóa chứa khóa « %s » trong nhóm « %s » có giá trị không có khả năng "
 "giải dịch."
 
-#: glib/gkeyfile.c:2672 glib/gkeyfile.c:2873 glib/gkeyfile.c:3403
+#: ../glib/gkeyfile.c:2671 ../glib/gkeyfile.c:2872 ../glib/gkeyfile.c:3402
 #, c-format
 msgid "Key file does not have key '%s' in group '%s'"
-msgstr "Tập tin khóa không có khóa '%s' trong nhóm '%s'"
+msgstr "Tập tin khóa không chứa khóa « %s » trong nhóm « %s »."
 
-#: glib/gkeyfile.c:3637
+#: ../glib/gkeyfile.c:3636
 msgid "Key file contains escape character at end of line"
-msgstr "Tập tin khóa chứa ký tự thoát tại kết thúc của dòng"
+msgstr "Tập tin khóa chứa ký tự thoạt tại kết thức dòng."
 
-#: glib/gkeyfile.c:3659
+#: ../glib/gkeyfile.c:3658
 #, c-format
 msgid "Key file contains invalid escape sequence '%s'"
-msgstr "Tập tin khóa chứa dãy thoát không hợp lệ '%s'"
+msgstr "URI '%s' chứa không hợp lệ các ký tự thoát"
 
-#: glib/gkeyfile.c:3801
+#: ../glib/gkeyfile.c:3800
 #, c-format
 msgid "Value '%s' cannot be interpreted as a number."
 msgstr "Không thể giải dịch giá trị '%s' dạng con số."
 
-#: glib/gkeyfile.c:3815
+#: ../glib/gkeyfile.c:3814
 #, c-format
 msgid "Integer value '%s' out of range"
-msgstr "Giá trị số nguyên '%s' ở ngoại phạm vi"
+msgstr "Giá trị số nguyên '%s' ở ngoài phạm vi"
 
-#: glib/gkeyfile.c:3848
+#: ../glib/gkeyfile.c:3847
 #, c-format
 msgid "Value '%s' cannot be interpreted as a float number."
 msgstr "Không thể giải dịch giá trị '%s' dạng con số nổi."
 
-#: glib/gkeyfile.c:3872
+#: ../glib/gkeyfile.c:3871
 #, c-format
 msgid "Value '%s' cannot be interpreted as a boolean."
 msgstr "Không thể giải dịch giá trị '%s' dạng bun (đúng/sai)."
 
-#: gio/gbufferedinputstream.c:415 gio/gbufferedinputstream.c:496
-#: gio/ginputstream.c:186 gio/ginputstream.c:318 gio/ginputstream.c:557
-#: gio/ginputstream.c:682 gio/goutputstream.c:198 gio/goutputstream.c:721
+#: ../gio/gbufferedinputstream.c:411 ../gio/gbufferedinputstream.c:492
+#: ../gio/ginputstream.c:185 ../gio/ginputstream.c:317
+#: ../gio/ginputstream.c:556 ../gio/ginputstream.c:680
+#: ../gio/goutputstream.c:198 ../gio/goutputstream.c:726
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "Giá trị đếm quá lớn được gửi cho %s"
 
-#: gio/gbufferedinputstream.c:883 gio/ginputstream.c:892 gio/giostream.c:305
-#: gio/goutputstream.c:1196
+#: ../gio/gbufferedinputstream.c:880 ../gio/ginputstream.c:888
+#: ../gio/giostream.c:306 ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "Luồng đã bị đóng"
 
-#: gio/gcancellable.c:433 gio/gdbusconnection.c:1212
-#: gio/gdbusconnection.c:1300 gio/gdbusconnection.c:1472 gio/glocalfile.c:2103
-#: gio/gsimpleasyncresult.c:651 gio/gsimpleasyncresult.c:677
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "Thao tác bị thôi"
 
-#: gio/gcharsetconverter.c:264
+#: ../gio/gcharsetconverter.c:263
 msgid "Invalid object, not initialized"
 msgstr "Đối tượng không hợp lệ, chưa được sơ khởi"
 
-#: gio/gcharsetconverter.c:285 gio/gcharsetconverter.c:313
+#: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312
 msgid "Incomplete multibyte sequence in input"
 msgstr "Gặp dây byte không hoàn thành trong đầu vào"
 
-#: gio/gcharsetconverter.c:319 gio/gcharsetconverter.c:328
+#: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327
 msgid "Not enough space in destination"
 msgstr "Không đủ không gian trong đích đến"
 
-#: gio/gcharsetconverter.c:448 gio/gsocket.c:804
+#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:832
 msgid "Cancellable initialization not supported"
 msgstr "Không hỗ trợ thao tác khởi động có thể huỷ bỏ"
 
-#: gio/gcontenttype.c:180
+#: ../gio/gcontenttype.c:179
 msgid "Unknown type"
 msgstr "Không rõ kiểu"
 
-#: gio/gcontenttype.c:181
+#: ../gio/gcontenttype.c:180
 #, c-format
 msgid "%s filetype"
 msgstr "kiểu tập tin %s"
 
-#: gio/gcontenttype.c:681
+#: ../gio/gcontenttype.c:679
 #, c-format
 msgid "%s type"
 msgstr "kiểu %s"
 
-#: gio/gcredentials.c:203 gio/gcredentials.c:338
+#: ../gio/gcredentials.c:246 ../gio/gcredentials.c:441
 msgid "GCredentials is not implemented on this OS"
-msgstr ""
+msgstr "GCredentials không được hỗ trợ trên hệ điều hành này"
 
-#: gio/gcredentials.c:296
+#: ../gio/gcredentials.c:396
 msgid "There is no GCredentials support for your platform"
-msgstr ""
+msgstr "Không có hỗ trợ GCredentials trên hệ điều hành của bạn"
 
-#: gio/gdatainputstream.c:311
+#: ../gio/gdatainputstream.c:311
 msgid "Unexpected early end-of-stream"
 msgstr "Kết thúc luồng sớm bất thường"
 
-#: gio/gdbusaddress.c:135 gio/gdbusaddress.c:226 gio/gdbusaddress.c:300
-#, fuzzy, c-format
+#: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230
+#: ../gio/gdbusaddress.c:304
+#, c-format
 msgid "Unsupported key `%s' in address entry `%s'"
-msgstr "Địa chỉ ổ cắm không hỗ trợ"
+msgstr "Khoá không hỗ trợ `%s' ở đầu nhập địa chỉ `%s'"
 
-#: gio/gdbusaddress.c:165
+#: ../gio/gdbusaddress.c:169
 #, c-format
 msgid ""
 "Address `%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
 msgstr ""
+"Địa chỉ `%s' không hợp lệ (cần chính xác một đường dẫn, tmpdir hoặc khoá "
+"tổng quát)"
 
-#: gio/gdbusaddress.c:178
+#: ../gio/gdbusaddress.c:182
 #, c-format
 msgid "Meaningless key/value pair combination in address entry `%s'"
-msgstr ""
+msgstr "Cặp khoá/giá trị vô nghĩa ở địa chỉ `%s'"
 
-#: gio/gdbusaddress.c:241 gio/gdbusaddress.c:315
+#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:319
 #, c-format
 msgid "Error in address `%s' - the port attribute is malformed"
-msgstr ""
+msgstr "Lỗi ở địa chỉ `%s' - thuộc tính cổng bị hư"
 
-#: gio/gdbusaddress.c:252 gio/gdbusaddress.c:326
+#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:330
 #, c-format
 msgid "Error in address `%s' - the family attribute is malformed"
-msgstr ""
+msgstr "Lỗi ở địa chỉ `%s' - thuộc tính họ (family) bị hư"
 
-#: gio/gdbusaddress.c:428
+#: ../gio/gdbusaddress.c:434
 #, c-format
 msgid "Address element `%s', does not contain a colon (:)"
-msgstr ""
+msgstr "Thành phần địa chỉ `%s', không chứ dấu hai chấm (:)"
 
-#: gio/gdbusaddress.c:449
+#: ../gio/gdbusaddress.c:455
 #, c-format
 msgid ""
 "Key/Value pair %d, `%s', in address element `%s', does not contain an equal "
 "sign"
-msgstr ""
+msgstr "Cặp khoá/giá trị %d, `%s', ở địa chỉ `%s', không chứa dấu bằng"
 
-#: gio/gdbusaddress.c:523
+#: ../gio/gdbusaddress.c:469
+#, c-format
+msgid ""
+"Error unescaping key or value in Key/Value pair %d, `%s', in address element "
+"`%s'"
+msgstr "Lỗi unescape khoá hoặc giá trị trong cặp khoá/giá trị %d, `%s', ở địa chỉ `%s'"
+
+#: ../gio/gdbusaddress.c:547
 #, c-format
 msgid ""
 "Error in address `%s' - the unix transport requires exactly one of the keys "
 "`path' or `abstract' to be set"
 msgstr ""
+"Lỗi ở địa chỉ `%s' - phương thức vận chuyển unix cần đặt chính xác một trong "
+"những khoá `path' hoặc `abstract'"
 
-#: gio/gdbusaddress.c:559
+#: ../gio/gdbusaddress.c:583
 #, c-format
 msgid "Error in address `%s' - the host attribute is missing or malformed"
-msgstr ""
+msgstr "Lỗi ở địa chỉ `%s' - thuộc tính máy thiếu hoặc bị hư"
 
-#: gio/gdbusaddress.c:573
+#: ../gio/gdbusaddress.c:597
 #, c-format
 msgid "Error in address `%s' - the port attribute is missing or malformed"
-msgstr ""
+msgstr "Lỗi ở địa chỉ `%s' - thuộc tính cổng thiếu hoặc bị hư"
 
-#: gio/gdbusaddress.c:587
+#: ../gio/gdbusaddress.c:611
 #, c-format
 msgid "Error in address `%s' - the noncefile attribute is missing or malformed"
-msgstr ""
+msgstr "Lỗi ở địa chỉ `%s' - thuộc tính noncefile thiếu hoặc bị hư"
 
-#: gio/gdbusaddress.c:601
+#: ../gio/gdbusaddress.c:632
+#| msgid "Error connecting: "
+msgid "Error auto-launching: "
+msgstr "Lỗi tự động khởi động: "
+
+#: ../gio/gdbusaddress.c:640
 #, c-format
 msgid "Unknown or unsupported transport `%s' for address `%s'"
 msgstr ""
+"Phương thức vận chuyển `%s' cho địa chỉ `%s' không được hỗ trợ, hoặc không "
+"nhận ra"
 
-#: gio/gdbusaddress.c:635
-#, fuzzy, c-format
-msgid "Error reading nonce file `%s':"
-msgstr "Gặp lỗi khi đọc tập tin '%s': %s"
-
-#: gio/gdbusaddress.c:646
-msgid "The nonce-file `%s' was %"
-msgstr ""
-
-#: gio/gdbusaddress.c:662
+#: ../gio/gdbusaddress.c:676
 #, c-format
-msgid "Error write contents of nonce file `%s' to stream:"
-msgstr ""
+#| msgid "Error opening file '%s': %s"
+msgid "Error opening nonce file `%s': %s"
+msgstr "Gặp lỗi khi mở nonce-file `%s': %s"
 
-#: gio/gdbusaddress.c:978
+#: ../gio/gdbusaddress.c:694
 #, c-format
-msgid ""
-"Cannot determine session bus address (TODO: run dbus-launch to find out)"
-msgstr ""
+#| msgid "Error reading nonce file `%s':"
+msgid "Error reading from nonce file `%s': %s"
+msgstr "Gặp lỗi khi đọc nonce-file '%s': %s"
 
-#: gio/gdbusaddress.c:1002 gio/gdbusconnection.c:5309
+#: ../gio/gdbusaddress.c:703
+#, c-format
+#| msgid "Error reading nonce file `%s':"
+msgid "Error reading from nonce file `%s', expected 16 bytes, got %d"
+msgstr "Gặp lỗi khi đọc nonce-file '%s', cần 16 byte, nhận %d"
+
+#: ../gio/gdbusaddress.c:721
+#, c-format
+#| msgid "Error write contents of nonce file `%s' to stream:"
+msgid "Error writing contents of nonce file `%s' to stream:"
+msgstr "Lỗi ghi nội dung nonce-file `%s' vào luồng:"
+
+#: ../gio/gdbusaddress.c:939
+msgid "The given address is empty"
+msgstr "Địa chỉ rỗng"
+
+#: ../gio/gdbusaddress.c:1008
+msgid "Cannot spawn a message bus without a machine-id: "
+msgstr "Không thể tạo tuyến thông điệp mà không có machine-id: "
+
+#: ../gio/gdbusaddress.c:1045
+#, c-format
+#| msgid "Error reading nonce file `%s':"
+msgid "Error spawning command line `%s': "
+msgstr "Lỗi chạy dòng lệnh '%s':"
+
+#: ../gio/gdbusaddress.c:1056
+#, c-format
+msgid "Abnormal program termination spawning command line `%s': %s"
+msgstr "Chương trình kết thúc bất thường khi chạy lệnh `%s: %s"
+
+#: ../gio/gdbusaddress.c:1070
+#, c-format
+msgid "Command line `%s' exited with non-zero exit status %d: %s"
+msgstr "Lệnh `%s' thoát với mã khác không %d: %s"
+
+#: ../gio/gdbusaddress.c:1143
+#, c-format
+#| msgid ""
+#| "Cannot determine session bus address (TODO: run dbus-launch to find out)"
+msgid "Cannot determine session bus address (not implemented for this OS)"
+msgstr "Không thể xác định địa chỉ tuyến phiên làm việc (chưa được hỗ trợ trên hệ điều hành này)"
+
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "- unknown value `%s'"
 msgstr ""
+"Không thể xác định địa chỉ tuyến từ biến môi trường DBUS_STARTER_BUS_TYPE - "
+"giá trị lạ `%s'"
 
-#: gio/gdbusaddress.c:1011 gio/gdbusconnection.c:5318
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
+"Không thể xác định địa chỉ tuyến vì không có biến môi trường "
+"DBUS_STARTER_BUS_TYPE"
 
-#: gio/gdbusaddress.c:1021
-#, fuzzy, c-format
+#: ../gio/gdbusaddress.c:1261
+#, c-format
 msgid "Unknown bus type %d"
-msgstr "Không rõ kiểu"
+msgstr "Không rõ kiểu tuyến %d"
 
-#: gio/gdbusauth.c:289
+#: ../gio/gdbusauth.c:288
 msgid "Unexpected lack of content trying to read a line"
-msgstr ""
+msgstr "Nội dung bị thiếu bất thường khi đọc một dòng"
 
-#: gio/gdbusauth.c:333
+#: ../gio/gdbusauth.c:332
 msgid "Unexpected lack of content trying to (safely) read a line"
-msgstr ""
+msgstr "Nội dung bị thiếu bất thường khi đọc (an toàn) một dòng"
 
-#: gio/gdbusauth.c:504
+#: ../gio/gdbusauth.c:503
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
-msgstr ""
+msgstr "Cạn kiệt các phương thức xác thực hiện có (thử: %s) (còn: %s)"
 
-#: gio/gdbusauth.c:1146
+#: ../gio/gdbusauth.c:1150
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
-msgstr ""
+msgstr "Đã huỷ thông qua GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:264
-#, fuzzy, c-format
+#: ../gio/gdbusauthmechanismsha1.c:266
+#, c-format
 msgid "Error statting directory `%s': %s"
-msgstr "Gặp lỗi khi mở thư mục '%s': %s"
+msgstr "Gặp lỗi khi stat() thư mục '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:276
+#: ../gio/gdbusauthmechanismsha1.c:278
 #, c-format
 msgid ""
 "Permissions on directory `%s' are malformed. Expected mode 0700, got 0%o"
 msgstr ""
+"Quyền của thư mục `%s' bị hư. Giá trị là 0%o trong khi lẽ ra phải là 0700."
 
-#: gio/gdbusauthmechanismsha1.c:295
-#, fuzzy, c-format
+#: ../gio/gdbusauthmechanismsha1.c:299
+#, c-format
 msgid "Error creating directory `%s': %s"
-msgstr "Lỗi tạo thư mục: %s"
+msgstr "Lỗi tạo thư mục `%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:378
-#, fuzzy, c-format
+#: ../gio/gdbusauthmechanismsha1.c:382
+#, c-format
 msgid "Error opening keyring `%s' for reading: "
-msgstr "Gặp lỗi khi mở tập tin '%s': %s"
+msgstr "Lỗi mở keyring `%s' để đọc: "
 
-#: gio/gdbusauthmechanismsha1.c:402 gio/gdbusauthmechanismsha1.c:711
+#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Line %d of the keyring at `%s' with content `%s' is malformed"
-msgstr ""
+msgstr "Dòng %d của keyring tại `%s' với nội dung `%s' bị hư"
 
-#: gio/gdbusauthmechanismsha1.c:416 gio/gdbusauthmechanismsha1.c:725
+#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:729
 #, c-format
 msgid ""
 "First token of line %d of the keyring at `%s' with content `%s' is malformed"
 msgstr ""
+"Token đầu tiên của dòng %d của keyring tại `%s' với nội dung `%s' bị hư"
 
-#: gio/gdbusauthmechanismsha1.c:430 gio/gdbusauthmechanismsha1.c:739
+#: ../gio/gdbusauthmechanismsha1.c:434 ../gio/gdbusauthmechanismsha1.c:743
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at `%s' with content `%s' is malformed"
-msgstr ""
+msgstr "Token thứ hai của dòng %d của keyring tại `%s' với nội dung `%s' bị hư"
 
-#: gio/gdbusauthmechanismsha1.c:454
+#: ../gio/gdbusauthmechanismsha1.c:458
 #, c-format
 msgid "Didn't find cookie with id %d in the keyring at `%s'"
-msgstr ""
+msgstr "Không tìm thấy cookie với id %d trong keyring ở `%s'"
 
-#: gio/gdbusauthmechanismsha1.c:531
-#, fuzzy, c-format
-msgid "Error deleting stale lock-file `%s': %s"
-msgstr "Gặp lỗi khi đọc tập tin '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:535
+#, c-format
+#| msgid "Error deleting stale lock-file `%s': %s"
+msgid "Error deleting stale lock file `%s': %s"
+msgstr "Lỗi khi xoá tập tin khoá không dùng nữa '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:562
-#, fuzzy, c-format
-msgid "Error creating lock-file `%s': %s"
-msgstr "Gặp lỗi khi đọc tập tin '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:566
+#, c-format
+#| msgid "Error creating lock-file `%s': %s"
+msgid "Error creating lock file `%s': %s"
+msgstr "Gặp lỗi khi tạo tập tin khoá '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:592
-#, fuzzy, c-format
-msgid "Error closing (unlinked) lock-file `%s': %s"
-msgstr "Gặp lỗi khi đóng tập tin: %s"
+#: ../gio/gdbusauthmechanismsha1.c:596
+#, c-format
+#| msgid "Error closing (unlinked) lock-file `%s': %s"
+msgid "Error closing (unlinked) lock file `%s': %s"
+msgstr "Gặp lỗi khi đóng (unlink) tập tin khoá `%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:602
-#, fuzzy, c-format
-msgid "Error unlinking lock-file `%s': %s"
-msgstr "Gặp lỗi khi mở tập tin '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:606
+#, c-format
+#| msgid "Error unlinking lock-file `%s': %s"
+msgid "Error unlinking lock file `%s': %s"
+msgstr "Gặp lỗi xoá tập tin khoá '%s': %s"
 
-#: gio/gdbusauthmechanismsha1.c:678
-#, fuzzy, c-format
+#: ../gio/gdbusauthmechanismsha1.c:682
+#, c-format
 msgid "Error opening keyring `%s' for writing: "
-msgstr "Gặp lỗi khi mở tập tin '%s': %s"
+msgstr "Gặp lỗi khi mở keyring '%s' để ghi: "
 
-#: gio/gdbusauthmechanismsha1.c:873
+#: ../gio/gdbusauthmechanismsha1.c:877
 #, c-format
 msgid "(Additionally, releasing the lock for `%s' also failed: %s) "
-msgstr ""
+msgstr "(Ngoài ra, giải phóng khoá cho `%s' cũng thất bại: %s)"
 
-#: gio/gdbusconnection.c:1001 gio/gdbusconnection.c:1311
-#, fuzzy
+#: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
-msgstr "Ổ cắm được thêm đã đóng"
+msgstr "Kết nối đã đóng"
 
-#: gio/gdbusconnection.c:1256
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
-msgstr ""
+msgstr "Quá hạn"
 
-#: gio/gdbusconnection.c:1757
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
-msgstr ""
+msgstr "Phát hiện cờ không hỗ trợ khi tạo kết nối phía client"
 
-#: gio/gdbusconnection.c:3158
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
+#, c-format
+#| msgid "No such interface `%s' on object at path %s"
+msgid ""
+"No such interface `org.freedesktop.DBus.Properties' on object at path %s"
+msgstr "Không có giao diện `org.freedesktop.DBus.Properties' trên đối tượng tại đường dẫn %s"
+
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
-msgstr ""
+msgstr "Lỗi đặt thuộc tính `%s': nhận được `%s' trong khi lẽ ra phải là `%s'"
 
-#: gio/gdbusconnection.c:3250
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
-msgstr ""
+msgstr "Không có thuộc tính `%s'"
 
-#: gio/gdbusconnection.c:3262
-#, fuzzy, c-format
+#: ../gio/gdbusconnection.c:3931
+#, c-format
 msgid "Property `%s' is not readable"
-msgstr "Kiểu %s không được đặt hạng"
+msgstr "Thuộc tính `%s' không đọc được"
 
-#: gio/gdbusconnection.c:3273
-#, fuzzy, c-format
+#: ../gio/gdbusconnection.c:3942
+#, c-format
 msgid "Property `%s' is not writable"
-msgstr "Kiểu %s không được đặt hạng"
+msgstr "Thuộc tính `%s' không ghi được"
 
-#: gio/gdbusconnection.c:3341 gio/gdbusconnection.c:4768
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
-msgstr ""
+msgstr "Không có giao diện `%s'"
 
-#: gio/gdbusconnection.c:3504
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
-msgstr ""
+msgstr "Không có giao diện như vậy"
 
-#: gio/gdbusconnection.c:3748
-#, c-format
-msgid "No such method `%s'"
-msgstr ""
-
-#: gio/gdbusconnection.c:3779
-#, c-format
-msgid "Type of message, `%s', does not match expected type `%s'"
-msgstr ""
-
-#: gio/gdbusconnection.c:3993
-#, c-format
-msgid "An object is already exported for the interface %s at %s"
-msgstr ""
-
-#: gio/gdbusconnection.c:4173
-#, c-format
-msgid "Method `%s' returned type `%s', but expected `%s'"
-msgstr ""
-
-#: gio/gdbusconnection.c:4866
-#, c-format
-msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
-msgstr ""
-
-#: gio/gdbusconnection.c:4981
-#, fuzzy, c-format
-msgid "A subtree is already exported for %s"
-msgstr "Bên lắng nghe đã đóng"
-
-#: gio/gdbusconnection.c:5089
-#, c-format
-msgid "Unable to load /var/lib/dbus/machine-id: %s"
-msgstr ""
-
-#: gio/gdbusconnection.c:5259
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
-msgstr ""
+msgstr "Không có giao diện `%s' trên đối tượng tại đường dẫn %s"
 
-#: gio/gdbusmessage.c:723
-msgid "Wanted to read %"
-msgstr ""
-
-#: gio/gdbusmessage.c:744
+#: ../gio/gdbusconnection.c:4468
 #, c-format
-msgid "Expected NUL byte after the string `%s' but found `%c' (%d)"
-msgstr ""
+msgid "No such method `%s'"
+msgstr "Không có phương thức `%s'"
 
-#: gio/gdbusmessage.c:927
+#: ../gio/gdbusconnection.c:4499
+#, c-format
+msgid "Type of message, `%s', does not match expected type `%s'"
+msgstr "Kiểu thông điệp, `%s', không khớp với kiểu đang cần `%s'"
+
+#: ../gio/gdbusconnection.c:4718
+#, c-format
+msgid "An object is already exported for the interface %s at %s"
+msgstr "Đối tượng đã được xuất cho giao diện %s tại %s rồi"
+
+#: ../gio/gdbusconnection.c:4912
+#, c-format
+msgid "Method `%s' returned type `%s', but expected `%s'"
+msgstr "Phương thức `%s' trả về kiểu `%s', nhưng đang muốn `%s'"
+
+#: ../gio/gdbusconnection.c:5713
+#, c-format
+msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
+msgstr "Phương thức `%s' trên giao diện `%s' với ký hiệu `%s' không tồn tại"
+
+#: ../gio/gdbusconnection.c:5831
+#, c-format
+msgid "A subtree is already exported for %s"
+msgstr "Cây con đã được xuất cho %s"
+
+#: ../gio/gdbusmessage.c:856
+msgid "type is INVALID"
+msgstr "kiểu KHÔNG HỢP LỆ"
+
+#: ../gio/gdbusmessage.c:867
+msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
+msgstr "Thông điệp METHOD_CALL: thiếu trường PATH (đường dẫn) hoặc MEMBER (thành viên) trong header"
+
+#: ../gio/gdbusmessage.c:878
+msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
+msgstr "Thông điệp METHOD_RETURN: thiếu trường REPLY_SERIAL trong header"
+
+#: ../gio/gdbusmessage.c:890
+msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
+msgstr "Thông điệp ERROR: thiếu trường REPLY_SERIAL hoặc ERROR_NAME trong header"
+
+#: ../gio/gdbusmessage.c:903
+msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
+msgstr "Thông điệp SIGNAL: thiếu trường PATH, INTERFACE hoặc MEMBER trong header"
+
+#: ../gio/gdbusmessage.c:911
+msgid ""
+"SIGNAL message: The PATH header field is using the reserved value /org/"
+"freedesktop/DBus/Local"
+msgstr "Thông điệp SIGNAL: trường PATH dùng giá trị dành riêng /org/freedesktop/DBus/Local"
+
+#: ../gio/gdbusmessage.c:919
+msgid ""
+"SIGNAL message: The INTERFACE header field is using the reserved value org."
+"freedesktop.DBus.Local"
+msgstr "Thông điệp SIGNAL: trường INTERFACE dùng giá trị dành riêng org.freedesktop.DBus.Local"
+
+#: ../gio/gdbusmessage.c:994
+#, c-format
+#| msgid "Wanted to read %"
+msgid "Wanted to read %lu bytes but got EOF"
+msgstr "Muốn đọc %lu byte nhưng nhận được EOF"
+
+#: ../gio/gdbusmessage.c:1019
+#, c-format
+msgid ""
+"Expected valid UTF-8 string but found invalid bytes at byte offset %d "
+"(length of string is %d). The valid UTF-8 string up until that point was `%s'"
+msgstr "Muốn chuỗi UTF-8 hợp lệ nhưng nhận được dãy byte không hợp lệ từ vị trí %d (độ dài chuỗi là %d). Chuỗi UTF-8 hợp lệ dài nhất là `%s'"
+
+#: ../gio/gdbusmessage.c:1032
+#, c-format
+#| msgid "Expected NUL byte after the string `%s' but found `%c' (%d)"
+msgid "Expected NUL byte after the string `%s' but found byte %d"
+msgstr "Chờ byte NUL sau chuỗi `%s' nhưng lại nhận byte %d"
+
+#: ../gio/gdbusmessage.c:1231
 #, c-format
 msgid "Parsed value `%s' is not a valid D-Bus object path"
 msgstr ""
+"Giá trị đã phân tích `%s' không phải là đường dẫn đối tượng D-Bus hợp lệ"
 
-#: gio/gdbusmessage.c:953
-#, fuzzy, c-format
+#: ../gio/gdbusmessage.c:1257
+#, c-format
 msgid "Parsed value `%s' is not a valid D-Bus signature"
-msgstr "'%s' không phải là tên hợp lệ"
+msgstr "Giá trị đã phân tích `%s' không phải là ký hiệu D-Bus hợp lệ"
 
-#: gio/gdbusmessage.c:979
-msgid "Encountered array of length %"
-msgstr ""
+#: ../gio/gdbusmessage.c:1311
+#, c-format
+msgid ""
+"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+msgstr "Phát hiện mảng dài %u byte. Độ dài tối đa là 2<<26 byte (64 MiB)."
 
-#: gio/gdbusmessage.c:1116
+#: ../gio/gdbusmessage.c:1472
 #, c-format
 msgid "Parsed value `%s' for variant is not a valid D-Bus signature"
 msgstr ""
+"Giá trị đã phân tích `%s' cho biến thể không phải là ký hiệu D-Bus hợp lệ"
 
-#: gio/gdbusmessage.c:1141
+#: ../gio/gdbusmessage.c:1499
 #, c-format
+#| msgid ""
+#| "Error deserializing GVariant with type-string `%s' from the D-Bus wire "
+#| "format"
 msgid ""
-"Error deserializing GVariant with type-string `%s' from the D-Bus wire format"
-msgstr ""
+"Error deserializing GVariant with type string `%s' from the D-Bus wire format"
+msgstr "Lỗi thôi tuần tự hoá GVariant với kiểu chuỗi `%s' từ định dạng D-Bus"
 
-#: gio/gdbusmessage.c:1286
+#: ../gio/gdbusmessage.c:1683
 #, c-format
-msgid "Invalid endianness value. Expected 'l' or 'B' but found '%c' (%d)"
-msgstr ""
+#| msgid "Invalid endianness value. Expected 'l' or 'B' but found '%c' (%d)"
+msgid ""
+"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
+"0x%02x"
+msgstr "Giá trị endianness không hợp lệ. Chờ 0x6c ('l') hoặc 0x42 ('B') nhưng nhận được 0x%02x"
 
-#: gio/gdbusmessage.c:1300
+#: ../gio/gdbusmessage.c:1697
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
-msgstr ""
+msgstr "Phiên bản chính của phương thức không hợp lệ. Chờ 1 nhưng nhận %d"
 
-#: gio/gdbusmessage.c:1342
+#: ../gio/gdbusmessage.c:1754
 #, c-format
 msgid "Signature header with signature `%s' found but message body is empty"
-msgstr ""
+msgstr "Ký hiệu header `%s' nhưng phần thân trống rỗng"
 
-#: gio/gdbusmessage.c:1356
+#: ../gio/gdbusmessage.c:1768
 #, c-format
 msgid "Parsed value `%s' is not a valid D-Bus signature (for body)"
 msgstr ""
+"Giá trị đã phân tích `%s' không phải là ký hiệu D-Bus hợp lệ (cho phần thân)"
 
-#: gio/gdbusmessage.c:1385
-msgid "No signature header in message but the message body is %"
-msgstr ""
-
-#: gio/gdbusmessage.c:1694
+#: ../gio/gdbusmessage.c:1798
 #, c-format
-msgid ""
-"Error serializing GVariant with type-string `%s' to the D-Bus wire format"
-msgstr ""
+#| msgid "No signature header in message but the message body is %"
+msgid "No signature header in message but the message body is %u bytes"
+msgstr "Không có header ký hiệu trong thông điệp, nhưng phần thân thông điệp có %u byte"
 
-#: gio/gdbusmessage.c:1823
+#: ../gio/gdbusmessage.c:1806
+msgid "Cannot deserialize message: "
+msgstr "Không thể bỏ tuần tự hoá thông điệp: "
+
+#: ../gio/gdbusmessage.c:2131
+#, c-format
+#| msgid ""
+#| "Error serializing GVariant with type-string `%s' to the D-Bus wire format"
+msgid ""
+"Error serializing GVariant with type string `%s' to the D-Bus wire format"
+msgstr "Lỗi tuần tự hoá GVariant với kiểu chuỗi `%s' sang định dạng D-Bus"
+
+#: ../gio/gdbusmessage.c:2272
 #, c-format
 msgid "Message has %d fds but the header field indicates %d fds"
-msgstr ""
+msgstr "Thông điệp có %d fd nhưng header chỉ ra %d fd"
 
-#: gio/gdbusmessage.c:1869
+#: ../gio/gdbusmessage.c:2280
+msgid "Cannot serialize message: "
+msgstr "Không thể tuần tự hoá thông điệp: "
+
+#: ../gio/gdbusmessage.c:2324
 #, c-format
 msgid "Message body has signature `%s' but there is no signature header"
-msgstr ""
+msgstr "Phần thân thông điệp có ký hiệu `%s' nhưng không có header ký hiệu"
 
-#: gio/gdbusmessage.c:1879
+#: ../gio/gdbusmessage.c:2334
 #, c-format
 msgid ""
 "Message body has type signature `%s' but signature in the header field is `%"
 "s'"
-msgstr ""
+msgstr "Phần thân thông điệp có ký hiệu `%s' nhưng header lại có ký hiệu `%s'"
 
-#: gio/gdbusmessage.c:1895
+#: ../gio/gdbusmessage.c:2350
 #, c-format
 msgid "Message body is empty but signature in the header field is `(%s)'"
-msgstr ""
+msgstr "Thân thông điệp trống rỗng như ký hiệu trong header là `(%s)'"
 
-#: gio/gdbusmessage.c:2448
-#, fuzzy, c-format
+#: ../gio/gdbusmessage.c:2907
+#, c-format
 msgid "Error return with body of type `%s'"
-msgstr "Gặp lỗi khi ghi vào tập tin: %s"
+msgstr "Lỗi tra ề thân của kiểu `%s'"
 
-#: gio/gdbusmessage.c:2456
+#: ../gio/gdbusmessage.c:2915
 msgid "Error return with empty body"
-msgstr ""
+msgstr "Lỗi trả về thân trống rỗng"
 
-#: gio/gdbusmethodinvocation.c:357
+#: ../gio/gdbusmethodinvocation.c:375
 #, c-format
 msgid "Type of return value is incorrect, got `%s', expected `%s'"
-msgstr ""
+msgstr "Kiểu giá trị trả về không đúng, nhận `%s' nhưng muốn `%s'"
 
-#: gio/gdbusmethodinvocation.c:371 gio/gsocket.c:2859 gio/gsocket.c:2940
+#: ../gio/gdbusmethodinvocation.c:406 ../gio/gsocket.c:3023
+#: ../gio/gsocket.c:3104
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Lỗi gửi thông điệp: %s"
 
-#: gio/gdbusprivate.c:775
-msgid "Error writing first 16 bytes of message to socket: "
-msgstr ""
+#: ../gio/gdbusprivate.c:1768
+#| msgid "Unable to load /var/lib/dbus/machine-id: %s"
+msgid "Unable to load /var/lib/dbus/machine-id: "
+msgstr "Không thể nạp /var/lib/dbus/machine-id: "
 
-#: gio/gdbusproxy.c:633
+#: ../gio/gdbusproxy.c:714
 #, c-format
 msgid ""
 "Trying to set property %s of type %s but according to the expected interface "
 "the type is %s"
 msgstr ""
+"Thử đặt thuộc tính %s của kiểu %s nhưng theo giao diện muốn dùng thì kiểu là "
+"%s"
 
-#: gio/gdbusserver.c:669
-#, fuzzy
+#: ../gio/gdbusproxy.c:1234
+#, c-format
+msgid "Error calling StartServiceByName for %s: "
+msgstr "Lỗi gọi StartServiceByName cho %s: "
+
+#: ../gio/gdbusproxy.c:1255
+#, c-format
+msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
+msgstr "Trả lời %d không mong đợi từ hàm StartServiceByName(\"%s)"
+
+#: ../gio/gdbusproxy.c:2311 ../gio/gdbusproxy.c:2469
+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"
+msgstr "Không thể gọi hàm; uỷ nhiệm chỉ dành cho nhửng tên đã biết không có sở hữu và uỷ nhiệm được xây dựng với cờ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
+
+#: ../gio/gdbusserver.c:715
 msgid "Abstract name space not supported"
-msgstr "Thùng rác không được hỗ trợ"
+msgstr "Không hỗ trợ vùng tên tổng quát"
 
-#: gio/gdbusserver.c:759
+#: ../gio/gdbusserver.c:805
 msgid "Cannot specify nonce file when creating a server"
-msgstr ""
+msgstr "Không thể xác định nonce-file khi tạo máy chủ"
 
-#: gio/gdbusserver.c:836
-#, fuzzy, c-format
+#: ../gio/gdbusserver.c:882
+#, c-format
 msgid "Error writing nonce file at `%s': %s"
-msgstr "Gặp lỗi khi ghi vào tập tin: %s"
+msgstr "Lỗi ghi nonce-file tại `%s': %s"
 
-#: gio/gdbusserver.c:988
-#, fuzzy, c-format
+#: ../gio/gdbusserver.c:1044
+#, c-format
 msgid "The string `%s' is not a valid D-Bus GUID"
-msgstr "'%s' không phải là tên hợp lệ"
+msgstr "Chuỗi '%s' không phải là D-BUS GUID hợp lệ"
 
-#: gio/gdbusserver.c:1028
+#: ../gio/gdbusserver.c:1084
 #, c-format
 msgid "Cannot listen on unsupported transport `%s'"
-msgstr ""
+msgstr "Không thể listen trên phương thức vận chuyển không hỗ trợ `%s'"
 
-#: gio/gdbus-tool.c:87 gio/gsettings-tool.c:38
+#: ../gio/gdbus-tool.c:87
 msgid "COMMAND"
-msgstr ""
+msgstr "LỆNH"
 
-#: gio/gdbus-tool.c:92
+#: ../gio/gdbus-tool.c:92
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1634,232 +2014,244 @@
 "\n"
 "Use \"%s COMMAND --help\" to get help on each command.\n"
 msgstr ""
+"Lệnh:\n"
+"  help         Hiện những thông tin này\n"
+"  introspect   Xem xét đối tượng từ xa\n"
+"  monitor      Theo dõi đối tượng từ xa\n"
+"  call         Gọi hàm trên đối tượng từ xa\n"
+"\n"
+"Dùng \"%s LỆNH --help\" để có trợ giúp của từng lệnh.\n"
 
-#: gio/gdbus-tool.c:160 gio/gdbus-tool.c:216 gio/gdbus-tool.c:288
-#: gio/gdbus-tool.c:312 gio/gdbus-tool.c:814 gio/gdbus-tool.c:1322
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:160 ../gio/gdbus-tool.c:216 ../gio/gdbus-tool.c:288
+#: ../gio/gdbus-tool.c:312 ../gio/gdbus-tool.c:814 ../gio/gdbus-tool.c:1324
+#, c-format
 msgid "Error: %s\n"
-msgstr "Lỗi trên dòng %d: %s"
+msgstr "Lỗi: %s\n"
 
-#: gio/gdbus-tool.c:171 gio/gdbus-tool.c:229 gio/gdbus-tool.c:1332
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:171 ../gio/gdbus-tool.c:229 ../gio/gdbus-tool.c:1340
+#, c-format
 msgid "Error parsing introspection XML: %s\n"
-msgstr "Gặp lỗi khi phân tách tùy chọn %s"
+msgstr "Lỗi phân tích introspection XML: %s\n"
 
-#: gio/gdbus-tool.c:346
+#: ../gio/gdbus-tool.c:346
 msgid "Connect to the system bus"
-msgstr ""
+msgstr "Không thể kết nối vào tuyến hệ thống"
 
-#: gio/gdbus-tool.c:347
+#: ../gio/gdbus-tool.c:347
 msgid "Connect to the session bus"
-msgstr ""
+msgstr "Không thể kết nối vào tuyến phiên làm việc"
 
-#: gio/gdbus-tool.c:348
-#, fuzzy
+#: ../gio/gdbus-tool.c:348
 msgid "Connect to given D-Bus address"
-msgstr "Kết nối đang hình thành"
+msgstr "Kết nối đến địa chỉ D-Bus đã cho"
 
-#: gio/gdbus-tool.c:358
-#, fuzzy
+#: ../gio/gdbus-tool.c:358
 msgid "Connection Endpoint Options:"
-msgstr "Kết nối đang hình thành"
+msgstr "Tuỳ chọn đầu kết nối:"
 
-#: gio/gdbus-tool.c:359
+#: ../gio/gdbus-tool.c:359
 msgid "Options specifying the connection endpoint"
-msgstr ""
+msgstr "Tuỳ chọn xác định đầu nối"
 
-#: gio/gdbus-tool.c:379
+#: ../gio/gdbus-tool.c:379
 #, c-format
 msgid "No connection endpoint specified"
-msgstr ""
+msgstr "Chưa xác định đầu nối"
 
-#: gio/gdbus-tool.c:389
+#: ../gio/gdbus-tool.c:389
 #, c-format
 msgid "Multiple connection endpoints specified"
-msgstr ""
+msgstr "Xác định nhiều đầu nối"
 
-#: gio/gdbus-tool.c:459
+#: ../gio/gdbus-tool.c:459
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface `%s' does not exist\n"
-msgstr ""
+msgstr "Chú ý: theo dữ liệu introspection, giao diện `%s' không tồn tại\n"
 
-#: gio/gdbus-tool.c:468
+#: ../gio/gdbus-tool.c:468
 #, c-format
 msgid ""
 "Warning: According to introspection data, method `%s' does not exist on "
 "interface `%s'\n"
 msgstr ""
+"Chú ý: theo dữ liệu introspection, phương thức `%s' không tồn tại trên giao "
+"diện `%s'\n"
 
-#: gio/gdbus-tool.c:530
+#: ../gio/gdbus-tool.c:530
 msgid "Destination name to invoke method on"
-msgstr ""
+msgstr "Tên dích để gọi hàm"
 
-#: gio/gdbus-tool.c:531
+#: ../gio/gdbus-tool.c:531
 msgid "Object path to invoke method on"
-msgstr ""
+msgstr "Đường dẫn đối tượng để gọi hàm"
 
-#: gio/gdbus-tool.c:532
+#: ../gio/gdbus-tool.c:532
 msgid "Method and interface name"
-msgstr ""
+msgstr "Tên phương thức vào giao diện"
 
-#: gio/gdbus-tool.c:571
+#: ../gio/gdbus-tool.c:571
 msgid "Invoke a method on a remote object."
-msgstr ""
+msgstr "Gọi hàm trên đối tượng từ xa."
 
-#: gio/gdbus-tool.c:626 gio/gdbus-tool.c:1243 gio/gdbus-tool.c:1495
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:626 ../gio/gdbus-tool.c:1245 ../gio/gdbus-tool.c:1505
+#, c-format
 msgid "Error connecting: %s\n"
-msgstr "Lỗi kết nối: %s"
+msgstr "Lỗi kết nối: %s\n"
 
-#: gio/gdbus-tool.c:646 gio/gdbus-tool.c:1262 gio/gdbus-tool.c:1514
+#: ../gio/gdbus-tool.c:646 ../gio/gdbus-tool.c:1264 ../gio/gdbus-tool.c:1524
 #, c-format
 msgid "Error: Destination is not specified\n"
-msgstr ""
+msgstr "Lỗi: chưa xác định đích\n"
 
-#: gio/gdbus-tool.c:667 gio/gdbus-tool.c:1281
+#: ../gio/gdbus-tool.c:667 ../gio/gdbus-tool.c:1283
 #, c-format
 msgid "Error: Object path is not specified\n"
-msgstr ""
+msgstr "Lỗi: chưa xác định đường dẫn đối tượng\n"
 
-#: gio/gdbus-tool.c:687 gio/gdbus-tool.c:1301 gio/gdbus-tool.c:1554
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1303 ../gio/gdbus-tool.c:1564
+#, c-format
 msgid "Error: %s is not a valid object path\n"
-msgstr "'%s' không phải là tên hợp lệ"
+msgstr "Lỗi: '%s' không phải là đường dẫn đối tượng hợp lệ\n"
 
-#: gio/gdbus-tool.c:702
+#: ../gio/gdbus-tool.c:702
 #, c-format
 msgid "Error: Method name is not specified\n"
-msgstr ""
+msgstr "Lỗi: chưa xác định tên phương thức\n"
 
-#: gio/gdbus-tool.c:713
+#: ../gio/gdbus-tool.c:713
 #, c-format
 msgid "Error: Method name `%s' is invalid\n"
-msgstr ""
+msgstr "Lỗi: tên phương thức `%s' không hợp lệ\n"
 
-#: gio/gdbus-tool.c:778
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:778
+#, c-format
 msgid "Error parsing parameter %d of type `%s': %s\n"
-msgstr "Gặp lỗi khi mở thư mục '%s': %s"
+msgstr "Lỗi phân tích tham số %d kiểu `%s': %s\n"
 
-#: gio/gdbus-tool.c:786
-#, fuzzy, c-format
+#: ../gio/gdbus-tool.c:786
+#, c-format
 msgid "Error parsing parameter %d: %s\n"
-msgstr "Gặp lỗi khi phân tách tùy chọn %s"
+msgstr "Lỗi phân tích tham số %d: %s\n"
 
-#: gio/gdbus-tool.c:1161
+#: ../gio/gdbus-tool.c:1162
 msgid "Destination name to introspect"
-msgstr ""
+msgstr "Tên đích cần xem xét"
 
-#: gio/gdbus-tool.c:1162
+#: ../gio/gdbus-tool.c:1163
 msgid "Object path to introspect"
-msgstr ""
+msgstr "Đường dẫn đối tượng cần xem xét"
 
-#: gio/gdbus-tool.c:1195
+#: ../gio/gdbus-tool.c:1164
+msgid "Print XML"
+msgstr "In XML"
+
+#: ../gio/gdbus-tool.c:1197
 msgid "Introspect a remote object."
-msgstr ""
+msgstr "Xem xét đối tượng từ xa."
 
-#: gio/gdbus-tool.c:1413
+#: ../gio/gdbus-tool.c:1423
 msgid "Destination name to monitor"
-msgstr ""
+msgstr "Tên đích cần theo dõi"
 
-#: gio/gdbus-tool.c:1414
+#: ../gio/gdbus-tool.c:1424
 msgid "Object path to monitor"
-msgstr ""
+msgstr "Đường dẫn đối tượng cần theo dõi"
 
-#: gio/gdbus-tool.c:1447
-#, fuzzy
+#: ../gio/gdbus-tool.c:1457
 msgid "Monitor a remote object."
-msgstr "đối tượng bị hỏng"
+msgstr "Theo dõi đối tượng từ xa."
 
-#: gio/gdesktopappinfo.c:468 gio/gwin32appinfo.c:222
+#: ../gio/gdesktopappinfo.c:471 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "Không có tên"
 
-#: gio/gdesktopappinfo.c:742
+#: ../gio/gdesktopappinfo.c:755
 msgid "Desktop file didn't specify Exec field"
 msgstr "Tập tin Desktop không ghi rõ trường Exec (thực hiện)"
 
-#: gio/gdesktopappinfo.c:935
+#: ../gio/gdesktopappinfo.c:948
 msgid "Unable to find terminal required for application"
 msgstr "Không tìm thấy thiết bị cuối cần thiết cho ứng dụng"
 
-#: gio/gdesktopappinfo.c:1144
+#: ../gio/gdesktopappinfo.c:1157
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr "Không thể tạo thư mục cấu hình ứng dụng người dùng %s: %s"
 
-#: gio/gdesktopappinfo.c:1148
+#: ../gio/gdesktopappinfo.c:1161
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "Không thể tạo thư mục cấu hình MIME người dùng %s: %s"
 
-#: gio/gdesktopappinfo.c:1556
+#: ../gio/gdesktopappinfo.c:1569
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "Không thể tạo tập tin desktop %s"
 
-#: gio/gdesktopappinfo.c:1670
+#: ../gio/gdesktopappinfo.c:1683
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Lời định nghĩa riêng cho %s"
 
-#: gio/gdrive.c:364
+#: ../gio/gdrive.c:363
 msgid "drive doesn't implement eject"
 msgstr "ổ đĩa không thực hiện chức năng đẩy ra"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: gio/gdrive.c:444
+#: ../gio/gdrive.c:443
 msgid "drive doesn't implement eject or eject_with_operation"
 msgstr ""
 "ổ đĩa không thực hiện chức năng đẩy ra (eject hoặc eject_with_operation)"
 
-#: gio/gdrive.c:521
+#: ../gio/gdrive.c:520
 msgid "drive doesn't implement polling for media"
 msgstr "ổ đĩa không thực hiện chức năng thăm dò có phương tiện không"
 
-#: gio/gdrive.c:726
+#: ../gio/gdrive.c:725
 msgid "drive doesn't implement start"
 msgstr "ổ đĩa không thực hiện chức năng chạy (start)"
 
-#: gio/gdrive.c:828
+#: ../gio/gdrive.c:827
 msgid "drive doesn't implement stop"
 msgstr "ổ đĩa không thực hiện chức năng dừng (stop)"
 
-#: gio/gemblem.c:325
+#: ../gio/gemblem.c:324
 #, c-format
 msgid "Can't handle version %d of GEmblem encoding"
 msgstr "Không thể quản lý phiên bản %d của bảng mã GEmblem"
 
-#: gio/gemblem.c:335
+#: ../gio/gemblem.c:334
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Bảng mã GEmblem chứa số các hiệu bài dạng sai (%d)"
 
-#: gio/gemblemedicon.c:296
+#: ../gio/gemblemedicon.c:313
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "Không thể quản lý phiên bản %d của bảng mã GEmblemedIcon"
 
-#: gio/gemblemedicon.c:306
+#: ../gio/gemblemedicon.c:323
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "Bảng mã GEmblemedIcon chứa số các hiệu bài dạng sai (%d)"
 
-#: gio/gemblemedicon.c:329
+#: ../gio/gemblemedicon.c:346
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Mong đợi một GEmblem cho GEmblemedIcon"
 
-#: gio/gfile.c:871 gio/gfile.c:1101 gio/gfile.c:1236 gio/gfile.c:1472
-#: gio/gfile.c:1526 gio/gfile.c:1583 gio/gfile.c:1666 gio/gfile.c:1721
-#: gio/gfile.c:1781 gio/gfile.c:1835 gio/gfile.c:3304 gio/gfile.c:3358
-#: gio/gfile.c:3490 gio/gfile.c:3530 gio/gfile.c:3857 gio/gfile.c:4259
-#: gio/gfile.c:4345 gio/gfile.c:4434 gio/gfile.c:4532 gio/gfile.c:4619
-#: gio/gfile.c:4712 gio/gfile.c:5042 gio/gfile.c:5322 gio/gfile.c:5391
-#: gio/gfile.c:6982 gio/gfile.c:7072 gio/gfile.c:7158
-#: gio/win32/gwinhttpfile.c:441
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
+#: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "Thao tác không được hỗ trợ"
 
@@ -1871,137 +2263,137 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: gio/gfile.c:1357 gio/glocalfile.c:1060 gio/glocalfile.c:1071
-#: gio/glocalfile.c:1084
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "Bộ lắp chứa không tồn tại"
 
-#: gio/gfile.c:2409 gio/glocalfile.c:2259
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "Không thể sao chép đè lên thư mục"
 
-#: gio/gfile.c:2469
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "Không thể sao chép thư mục đè lên thư mục"
 
-#: gio/gfile.c:2477 gio/glocalfile.c:2268
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "Tập tin đích đã có"
 
-#: gio/gfile.c:2495
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "Không thể sao chép đệ quy thư mục"
 
-#: gio/gfile.c:2755
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "Chức năng nối bện không được hỗ trợ"
 
-#: gio/gfile.c:2759
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Gặp lỗi khi nối bện tập tin: %s"
 
-#: gio/gfile.c:2906
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "Không thể sao chép tập tin đặc biệt"
 
-#: gio/gfile.c:3480
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "Đưa ra giá trị liên kết tượng trưng không hợp lệ"
 
-#: gio/gfile.c:3573
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "Thùng rác không được hỗ trợ"
 
-#: gio/gfile.c:3622
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "Tên tập tin không thể chứa '%c'"
 
-#: gio/gfile.c:6039 gio/gvolume.c:331
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "hàm volume (khối tin) không thực hiện chức năng mount (lắp)"
 
-#: gio/gfile.c:6150
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "Không có ứng dụng đăng ký xử lý tập tin này"
 
-#: gio/gfileenumerator.c:206
+#: ../gio/gfileenumerator.c:205
 msgid "Enumerator is closed"
 msgstr "Bộ đếm bị đóng"
 
-#: gio/gfileenumerator.c:213 gio/gfileenumerator.c:272
-#: gio/gfileenumerator.c:372 gio/gfileenumerator.c:481
+#: ../gio/gfileenumerator.c:212 ../gio/gfileenumerator.c:271
+#: ../gio/gfileenumerator.c:371 ../gio/gfileenumerator.c:480
 msgid "File enumerator has outstanding operation"
 msgstr "Bộ đếm tập tin có thao tác còn chạy"
 
-#: gio/gfileenumerator.c:362 gio/gfileenumerator.c:471
+#: ../gio/gfileenumerator.c:361 ../gio/gfileenumerator.c:470
 msgid "File enumerator is already closed"
 msgstr "Bộ đếm tập tin đã bị đóng"
 
-#: gio/gfileicon.c:237
+#: ../gio/gfileicon.c:236
 #, c-format
 msgid "Can't handle version %d of GFileIcon encoding"
 msgstr "Không thể quản lý phiên bản %d của bảng mã GFileIcon"
 
-#: gio/gfileicon.c:247
+#: ../gio/gfileicon.c:246
 msgid "Malformed input data for GFileIcon"
 msgstr "Dữ liệu nhập dạng sai cho GFileIcon"
 
-#: gio/gfileinputstream.c:155 gio/gfileinputstream.c:422
-#: gio/gfileiostream.c:171 gio/gfileoutputstream.c:170
-#: gio/gfileoutputstream.c:525
+#: ../gio/gfileinputstream.c:154 ../gio/gfileinputstream.c:420
+#: ../gio/gfileiostream.c:170 ../gio/gfileoutputstream.c:169
+#: ../gio/gfileoutputstream.c:523
 msgid "Stream doesn't support query_info"
 msgstr "Luồng không hỗ trợ hàm 'query_info'"
 
-#: gio/gfileinputstream.c:337 gio/gfileiostream.c:389
-#: gio/gfileoutputstream.c:383
+#: ../gio/gfileinputstream.c:335 ../gio/gfileiostream.c:387
+#: ../gio/gfileoutputstream.c:381
 msgid "Seek not supported on stream"
 msgstr "Chức năng seek (tìm nơi) không được hỗ trợ trên luồng"
 
-#: gio/gfileinputstream.c:381
+#: ../gio/gfileinputstream.c:379
 msgid "Truncate not allowed on input stream"
 msgstr "Không cho phép cắt ngắn luồng nhập vào"
 
-#: gio/gfileiostream.c:465 gio/gfileoutputstream.c:459
+#: ../gio/gfileiostream.c:463 ../gio/gfileoutputstream.c:457
 msgid "Truncate not supported on stream"
 msgstr "Không cho phép cắt ngắn luồng"
 
-#: gio/gicon.c:286
+#: ../gio/gicon.c:287
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Số các hiệu bài không đúng (%d)"
 
-#: gio/gicon.c:306
+#: ../gio/gicon.c:307
 #, c-format
 msgid "No type for class name %s"
 msgstr "Không có kiểu cho tên hạng %s"
 
-#: gio/gicon.c:316
+#: ../gio/gicon.c:317
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr "Kiểu %s không thực hiện giao diện GIcon"
 
-#: gio/gicon.c:327
+#: ../gio/gicon.c:328
 #, c-format
 msgid "Type %s is not classed"
 msgstr "Kiểu %s không được đặt hạng"
 
-#: gio/gicon.c:341
+#: ../gio/gicon.c:342
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Số thứ tự phiên bản dạng sai: %s"
 
-#: gio/gicon.c:355
+#: ../gio/gicon.c:356
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Kiểu %s không thực hiện 'from_tokens()' trên giao diện GIcon"
 
-#: gio/gicon.c:431
+#: ../gio/gicon.c:432
 msgid "Can't handle the supplied version the icon encoding"
 msgstr "Không thể quản lý phiên bản đã cung cấp của bảng mã biểu tượng"
 
-#: gio/ginputstream.c:195
+#: ../gio/ginputstream.c:194
 msgid "Input stream doesn't implement read"
 msgstr "Luồng nhập vào không thực hiện chức năng đọc"
 
@@ -2011,356 +2403,625 @@
 #. 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:902 gio/giostream.c:315 gio/goutputstream.c:1206
+#: ../gio/ginputstream.c:898 ../gio/giostream.c:316
+#: ../gio/goutputstream.c:1207
 msgid "Stream has outstanding operation"
 msgstr "Luồng có thao tác còn chạy"
 
-#: gio/ginetsocketaddress.c:182 gio/ginetsocketaddress.c:199
-#: gio/gunixsocketaddress.c:222
+#: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198
+#: ../gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
 msgstr "Không đủ không gian cho địa chỉ ổ cắm"
 
-#: gio/ginetsocketaddress.c:212
+#: ../gio/ginetsocketaddress.c:211
 msgid "Unsupported socket address"
 msgstr "Địa chỉ ổ cắm không hỗ trợ"
 
-#: gio/glocaldirectorymonitor.c:288
+#: ../gio/glib-compile-schemas.c:713
+#| msgid "Abstract name space not supported"
+msgid "empty names are not permitted"
+msgstr "không cho phép tên rỗng"
+
+#: ../gio/glib-compile-schemas.c:723
+#, c-format
+msgid "invalid name '%s': names must begin with a lowercase letter"
+msgstr "tên không hợp lệ '%s': tên phải bắt đầu bằng chữ thường"
+
+#: ../gio/glib-compile-schemas.c:735
+#, c-format
+msgid ""
+"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
+"and dash ('-') are permitted."
+msgstr "tên không hợp lệ '%s': ký tự không hợp lệ '%c'; chỉ được dùng chữ thường, số hoặc dấu gạch ngang ('-')."
+
+#: ../gio/glib-compile-schemas.c:744
+#, c-format
+msgid "invalid name '%s': two successive dashes ('--') are not permitted."
+msgstr "tên không hợp lệ '%s': không được dùng hai gạch ngang liên tiếp ('--')."
+
+#: ../gio/glib-compile-schemas.c:753
+#, c-format
+msgid "invalid name '%s': the last character may not be a dash ('-')."
+msgstr "tên không hợp lệ '%s': ký tự cuối không thể là gạch ngang ('-')."
+
+#: ../gio/glib-compile-schemas.c:761
+#, c-format
+msgid "invalid name '%s': maximum length is 32"
+msgstr "tên không hợp lệ '%s': độ dài tối đa là 32"
+
+#: ../gio/glib-compile-schemas.c:830
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr "<child name='%s'> đã được xác định rồi"
+
+#: ../gio/glib-compile-schemas.c:856
+msgid "can not add keys to a 'list-of' schema"
+msgstr "không thể thêm khoá vào schema 'list-of'"
+
+#: ../gio/glib-compile-schemas.c:867
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr "<key name='%s'> đã được xác định rồi"
+
+#: ../gio/glib-compile-schemas.c:885
+#, c-format
+msgid ""
+"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
+"to modify value"
+msgstr "<key name='%s'> che <key name='%s'> trong <schema id='%s'>; dùng <override> để thay đổi giá trị"
+
+#: ../gio/glib-compile-schemas.c:896
+#, c-format
+msgid ""
+"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"to <key>"
+msgstr "thuộc tính của <key> chỉ có thể là duy nhất một trong 'type', 'enum' hoặc 'flags'"
+
+#: ../gio/glib-compile-schemas.c:915
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr "<%s id='%s'> chưa định nghĩa."
+
+#: ../gio/glib-compile-schemas.c:930
+#, c-format
+#| msgid "Invalid attribute type (string expected)"
+msgid "invalid GVariant type string '%s'"
+msgstr "kiểu chuỗi GVariant không hợp lệ '%s'"
+
+#: ../gio/glib-compile-schemas.c:960
+msgid "<override> given but schema isn't extending anything"
+msgstr "<override> được ghi nhưng schema không có gì để mở rộng"
+
+#: ../gio/glib-compile-schemas.c:973
+#, c-format
+msgid "no <key name='%s'> to override"
+msgstr "không có <key name='%s'> để ghi đè"
+
+#: ../gio/glib-compile-schemas.c:981
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr "<override name='%s'> đã được xác định rồi"
+
+#: ../gio/glib-compile-schemas.c:1052
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr "<schema id='%s'> đã được xác định rồi"
+
+#: ../gio/glib-compile-schemas.c:1064
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgstr "<schema id='%s'> mở rộng schema chưa tồn tại '%s'"
+
+#: ../gio/glib-compile-schemas.c:1080
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgstr "<schema id='%s'> là danh sách của schema chưa tồn tại '%s'"
+
+#: ../gio/glib-compile-schemas.c:1088
+#, c-format
+msgid "Can not be a list of a schema with a path"
+msgstr "Không thể là danh sách của schema hoặc đường dẫn"
+
+#: ../gio/glib-compile-schemas.c:1098
+#, c-format
+msgid "Can not extend a schema with a path"
+msgstr "Không thể mở rộng schema với một đường dẫn"
+
+#: ../gio/glib-compile-schemas.c:1108
+#, c-format
+msgid ""
+"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr "<schema id='%s'> là danh sách, mở rộng <schema id='%s'> không phải là một danh sách"
+
+#: ../gio/glib-compile-schemas.c:1118
+#, c-format
+msgid ""
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
+"does not extend '%s'"
+msgstr "<schema id='%s' list-of='%s'> mở rộng <schema id='%s' list-of='%s'> nhưng '%s' không mở rộng '%s'"
+
+#: ../gio/glib-compile-schemas.c:1135
+#, c-format
+msgid "a path, if given, must begin and end with a slash"
+msgstr "đường dẫn nếu có phải bắt đầu bằng dấu '/'"
+
+#: ../gio/glib-compile-schemas.c:1142
+#, c-format
+msgid "the path of a list must end with ':/'"
+msgstr "đường dẫn danh sách phải bắt đầu bằng ':/'"
+
+#: ../gio/glib-compile-schemas.c:1168
+#, c-format
+msgid "<%s id='%s'> already specified"
+msgstr "<%s id='%s'> đã được xác định rồi"
+
+#: ../gio/glib-compile-schemas.c:1387
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr "Không cho phép phần tử <%s> bên trong <%s>"
+
+#: ../gio/glib-compile-schemas.c:1391
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr "Không cho phép phần tử <%s> ở cấp cao nhất"
+
+#: ../gio/glib-compile-schemas.c:1485
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr "văn bản không thể xuất hiện bên trong <%s>"
+
+#. Translators: Do not translate "--strict".
+#: ../gio/glib-compile-schemas.c:1654 ../gio/glib-compile-schemas.c:1725
+#: ../gio/glib-compile-schemas.c:1801
+#, c-format
+msgid "--strict was specified; exiting.\n"
+msgstr "--strict được dùng; thoát.\n"
+
+#: ../gio/glib-compile-schemas.c:1662
+#, c-format
+msgid "This entire file has been ignored.\n"
+msgstr "Toàn bộ tập tin này bị bỏ qua.\n"
+
+#: ../gio/glib-compile-schemas.c:1721
+#, c-format
+msgid "Ignoring this file.\n"
+msgstr "Bỏ qua tập tin này.\n"
+
+#: ../gio/glib-compile-schemas.c:1761
+#, c-format
+msgid "No such key `%s' in schema `%s' as specified in override file `%s'"
+msgstr "Không có khoá `%s' trong schema `%s' như được xác định trong tập tin ghi đè `%s'"
+
+#: ../gio/glib-compile-schemas.c:1767 ../gio/glib-compile-schemas.c:1825
+#: ../gio/glib-compile-schemas.c:1853
+#, c-format
+msgid "; ignoring override for this key.\n"
+msgstr "; bỏ qua ghi đè cho khoá này.\n"
+
+#: ../gio/glib-compile-schemas.c:1771 ../gio/glib-compile-schemas.c:1829
+#: ../gio/glib-compile-schemas.c:1857
+#, c-format
+msgid " and --strict was specified; exiting.\n"
+msgstr "và có dùng --strict; thoát.\n"
+
+#: ../gio/glib-compile-schemas.c:1787
+#, c-format
+msgid ""
+"error parsing key `%s' in schema `%s' as specified in override file `%s': %"
+"s.  "
+msgstr "lỗi phân tích khoá `%s' trong schema `%s' như xác định trong tập tin ghi đè `%s': %s.  "
+
+#: ../gio/glib-compile-schemas.c:1797
+#, c-format
+msgid "Ignoring override for this key.\n"
+msgstr "Bỏ qua ghi đè khoá này.\n"
+
+#: ../gio/glib-compile-schemas.c:1815
+#, c-format
+msgid ""
+"override for key `%s' in schema `%s' in override file `%s' is out of the "
+"range given in the schema"
+msgstr "ghi đè khoá `%s' trong schema `%s' trong tập tin ghi đè `%s' ngoài phạm vi schema"
+
+#: ../gio/glib-compile-schemas.c:1843
+#, c-format
+msgid ""
+"override for key `%s' in schema `%s' in override file `%s' is not in the "
+"list of valid choices"
+msgstr "ghi đè khoá `%s' trong schema `%s' trong tập tin ghi đè `%s' không nằm trong danh sách lựa chọn hợp lệ"
+
+#: ../gio/glib-compile-schemas.c:1897
+msgid "where to store the gschemas.compiled file"
+msgstr "nơi lưu tập tin gschemas.compiled"
+
+#: ../gio/glib-compile-schemas.c:1897 ../gio/glib-compile-schemas.c:1910
+msgid "DIRECTORY"
+msgstr "THƯ MỤC"
+
+#: ../gio/glib-compile-schemas.c:1898
+msgid "Abort on any errors in schemas"
+msgstr "Buộc huỷ nếu gặp bất cứ lỗi gì trong schema"
+
+#: ../gio/glib-compile-schemas.c:1899
+msgid "Do not write the gschema.compiled file"
+msgstr "Không ghi tập tin gschemas.compiled"
+
+#: ../gio/glib-compile-schemas.c:1900
+msgid "This option will be removed soon."
+msgstr "Tuỳ chọn này sẽ sớm bị bỏ."
+
+#: ../gio/glib-compile-schemas.c:1901
+msgid "Do not enforce key name restrictions"
+msgstr "Không áp đặt ràng buộc tên khoá"
+
+#: ../gio/glib-compile-schemas.c:1913
+msgid ""
+"Compile all GSettings schema files into a schema cache.\n"
+"Schema files are required to have the extension .gschema.xml,\n"
+"and the cache file is called gschemas.compiled."
+msgstr ""
+"Biên dịch tất cả tập tin GSettings schema thành schema cache.\n"
+"Tập tin schema cần có phần mở rộng .gschema.xml,\n"
+"và tập tin cache tên là gschemas.compiled."
+
+#: ../gio/glib-compile-schemas.c:1929
+#, c-format
+msgid "You should give exactly one directory name\n"
+msgstr "Bạn nên đưa chính xác một tên thư mục\n"
+
+#: ../gio/glib-compile-schemas.c:1968
+#, c-format
+#| msgid "No schema files found\n"
+msgid "No schema files found: "
+msgstr "Không tìm thấy tập tin schema: "
+
+#: ../gio/glib-compile-schemas.c:1971
+#, c-format
+msgid "doing nothing.\n"
+msgstr "không làm gì cả.\n"
+
+#: ../gio/glib-compile-schemas.c:1974
+#, c-format
+msgid "removed existing output file.\n"
+msgstr "đã xoá tập tin kết xuất hiện có.\n"
+
+#: ../gio/glocaldirectorymonitor.c:287
 msgid "Unable to find default local directory monitor type"
 msgstr "Không tìm thấy kiểu theo dõi thư mục cục bộ mặc định"
 
-#: gio/glocalfile.c:594 gio/win32/gwinhttpfile.c:424
+#: ../gio/glocalfile.c:593 ../gio/win32/gwinhttpfile.c:422
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Tên tập tin không hợp lệ: %s"
 
-#: gio/glocalfile.c:968
+#: ../gio/glocalfile.c:967
 #, c-format
 msgid "Error getting filesystem info: %s"
 msgstr "Gặp lỗi khi lấy tập tin về hệ thống tập tin: %s"
 
-#: gio/glocalfile.c:1106
+#: ../gio/glocalfile.c:1105
 msgid "Can't rename root directory"
 msgstr "Không thể thay đổi tên của thư mục gốc"
 
-#: gio/glocalfile.c:1126 gio/glocalfile.c:1152
+#: ../gio/glocalfile.c:1125 ../gio/glocalfile.c:1151
 #, c-format
 msgid "Error renaming file: %s"
 msgstr "Gặp lỗi khi thay đổi tên của tập tin: %s"
 
-#: gio/glocalfile.c:1135
+#: ../gio/glocalfile.c:1134
 msgid "Can't rename file, filename already exist"
 msgstr "Không thể thay đổi tên của tập tin, vì tên tập tin đã có"
 
-#: gio/glocalfile.c:1148 gio/glocalfile.c:2132 gio/glocalfile.c:2161
-#: gio/glocalfile.c:2321 gio/glocalfileoutputstream.c:570
-#: gio/glocalfileoutputstream.c:623 gio/glocalfileoutputstream.c:668
-#: gio/glocalfileoutputstream.c:1150
+#: ../gio/glocalfile.c:1147 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2160
+#: ../gio/glocalfile.c:2320 ../gio/glocalfileoutputstream.c:571
+#: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669
+#: ../gio/glocalfileoutputstream.c:1151
 msgid "Invalid filename"
 msgstr "Tên tập tin không hợp lệ"
 
-#: gio/glocalfile.c:1309
+#: ../gio/glocalfile.c:1308
 #, c-format
 msgid "Error opening file: %s"
 msgstr "Gặp lỗi khi mở tập tin: %s"
 
-#: gio/glocalfile.c:1319
+#: ../gio/glocalfile.c:1318
 msgid "Can't open directory"
 msgstr "Không thể mở thư mục"
 
-#: gio/glocalfile.c:1444
+#: ../gio/glocalfile.c:1443
 #, c-format
 msgid "Error removing file: %s"
 msgstr "Gặp lỗi khi gỡ bỏ tập tin: %s"
 
-#: gio/glocalfile.c:1811
+#: ../gio/glocalfile.c:1810
 #, c-format
 msgid "Error trashing file: %s"
 msgstr "Gặp lỗi khi chuyển tập tin vào sọt rác: %s"
 
-#: gio/glocalfile.c:1834
+#: ../gio/glocalfile.c:1833
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Không thể tạo thư mục sọt rác %s: %s"
 
-#: gio/glocalfile.c:1855
+#: ../gio/glocalfile.c:1854
 msgid "Unable to find toplevel directory for trash"
 msgstr "Không tìm thấy thư mục cấp đầu cho sọt rác"
 
-#: gio/glocalfile.c:1934 gio/glocalfile.c:1954
+#: ../gio/glocalfile.c:1933 ../gio/glocalfile.c:1953
 msgid "Unable to find or create trash directory"
 msgstr "Không tìm thấy hay không thể tạo thư mục sọt rác"
 
-#: gio/glocalfile.c:1988
+#: ../gio/glocalfile.c:1987
 #, c-format
 msgid "Unable to create trashing info file: %s"
 msgstr "Không thể tạo tập tin thông tin sọt rác: %s"
 
-#: gio/glocalfile.c:2017 gio/glocalfile.c:2022 gio/glocalfile.c:2102
-#: gio/glocalfile.c:2109
+#: ../gio/glocalfile.c:2016 ../gio/glocalfile.c:2021 ../gio/glocalfile.c:2101
+#: ../gio/glocalfile.c:2108
 #, c-format
 msgid "Unable to trash file: %s"
 msgstr "Không thể chuyển tập tin vào sọt rác: %s"
 
-#: gio/glocalfile.c:2136
+#: ../gio/glocalfile.c:2135
 #, c-format
 msgid "Error creating directory: %s"
 msgstr "Lỗi tạo thư mục: %s"
 
-#: gio/glocalfile.c:2165
+#: ../gio/glocalfile.c:2164
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Hệ tậo tin không hỗ trợ liên kết biểu tượng"
 
-#: gio/glocalfile.c:2169
+#: ../gio/glocalfile.c:2168
 #, c-format
 msgid "Error making symbolic link: %s"
 msgstr "Gặp lỗi khi tạo liên kết tượng trưng: %s"
 
-#: gio/glocalfile.c:2231 gio/glocalfile.c:2325
+#: ../gio/glocalfile.c:2230 ../gio/glocalfile.c:2324
 #, c-format
 msgid "Error moving file: %s"
 msgstr "Gặp lỗi khi di chuyển tập tin: %s"
 
-#: gio/glocalfile.c:2254
+#: ../gio/glocalfile.c:2253
 msgid "Can't move directory over directory"
 msgstr "Không thể di chuyển thư mục đè lên thư mục"
 
-#: gio/glocalfile.c:2281 gio/glocalfileoutputstream.c:948
-#: gio/glocalfileoutputstream.c:962 gio/glocalfileoutputstream.c:977
-#: gio/glocalfileoutputstream.c:993 gio/glocalfileoutputstream.c:1007
+#: ../gio/glocalfile.c:2280 ../gio/glocalfileoutputstream.c:949
+#: ../gio/glocalfileoutputstream.c:963 ../gio/glocalfileoutputstream.c:978
+#: ../gio/glocalfileoutputstream.c:994 ../gio/glocalfileoutputstream.c:1008
 msgid "Backup file creation failed"
 msgstr "Lỗi tạo tập tin sao lưu"
 
-#: gio/glocalfile.c:2300
+#: ../gio/glocalfile.c:2299
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Gặp lỗi khi gỡ bỏ tập tin đích: %s"
 
-#: gio/glocalfile.c:2314
+#: ../gio/glocalfile.c:2313
 msgid "Move between mounts not supported"
 msgstr "Không hỗ trợ chức năng di chuyển giữa các bộ lắp"
 
-#: gio/glocalfileinfo.c:721
+#: ../gio/glocalfileinfo.c:720
 msgid "Attribute value must be non-NULL"
 msgstr "Giá trị thuộc tính phải có giá trị"
 
-#: gio/glocalfileinfo.c:728
+#: ../gio/glocalfileinfo.c:727
 msgid "Invalid attribute type (string expected)"
 msgstr "Kiểu thuộc tính không hợp lệ (mong đợi chuỗi)"
 
-#: gio/glocalfileinfo.c:735
+#: ../gio/glocalfileinfo.c:734
 msgid "Invalid extended attribute name"
 msgstr "Tên thuộc tính đã mở rộng không hợp lệ"
 
-#: gio/glocalfileinfo.c:775
+#: ../gio/glocalfileinfo.c:774
 #, c-format
 msgid "Error setting extended attribute '%s': %s"
 msgstr "Gặp lỗi khi đặt thuộc tính đã mở rộng '%s': %s"
 
-#: gio/glocalfileinfo.c:1479 gio/glocalfileoutputstream.c:832
+#: ../gio/glocalfileinfo.c:1483 ../gio/glocalfileoutputstream.c:833
 #, c-format
 msgid "Error stating file '%s': %s"
 msgstr "Gặp lỗi khi lấy trạng thái về tập tin '%s': %s"
 
-#: gio/glocalfileinfo.c:1552
+#: ../gio/glocalfileinfo.c:1567
 msgid " (invalid encoding)"
 msgstr " (bảng mã không hợp lệ)"
 
-#: gio/glocalfileinfo.c:1750
+#: ../gio/glocalfileinfo.c:1769
 #, c-format
 msgid "Error stating file descriptor: %s"
 msgstr "Gặp lỗi khi lấy trạng thái về mô tả tập tin: %s"
 
-#: gio/glocalfileinfo.c:1795
+#: ../gio/glocalfileinfo.c:1814
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Kiểu thuộc tính không hợp lệ (mong đợi uint32)"
 
-#: gio/glocalfileinfo.c:1813
+#: ../gio/glocalfileinfo.c:1832
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Kiểu thuộc tính không hợp lệ (mong đợi uint64)"
 
-#: gio/glocalfileinfo.c:1832 gio/glocalfileinfo.c:1851
+#: ../gio/glocalfileinfo.c:1851 ../gio/glocalfileinfo.c:1870
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Kiểu thuộc tính không hợp lệ (mong đợi chuỗi byte)"
 
-#: gio/glocalfileinfo.c:1886
+#: ../gio/glocalfileinfo.c:1905
 msgid "Cannot set permissions on symlinks"
 msgstr "Gặp lỗi khi đặt quyền hạn cho liên kết biểu tượng"
 
-#: gio/glocalfileinfo.c:1902
+#: ../gio/glocalfileinfo.c:1921
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Gặp lỗi khi đặt quyền hạn: %s"
 
-#: gio/glocalfileinfo.c:1953
+#: ../gio/glocalfileinfo.c:1972
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Gặp lỗi khi đặt người sở hữu : %s"
 
-#: gio/glocalfileinfo.c:1976
+#: ../gio/glocalfileinfo.c:1995
 msgid "symlink must be non-NULL"
 msgstr "liên kết tượng trưng phải có giá trị"
 
-#: gio/glocalfileinfo.c:1986 gio/glocalfileinfo.c:2005
-#: gio/glocalfileinfo.c:2016
+#: ../gio/glocalfileinfo.c:2005 ../gio/glocalfileinfo.c:2024
+#: ../gio/glocalfileinfo.c:2035
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Gặp lỗi khi đặt liên kết tượng trưng: %s"
 
-#: gio/glocalfileinfo.c:1995
+#: ../gio/glocalfileinfo.c:2014
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Gặp lỗi khi đặt liên kết tượng trưng: tập tin không phải là liên kết tượng "
 "trưng"
 
-#: gio/glocalfileinfo.c:2121
+#: ../gio/glocalfileinfo.c:2140
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Gặp lỗi khi đặt thời gian sửa đổi hoặc truy cập: %s"
 
-#: gio/glocalfileinfo.c:2144
+#: ../gio/glocalfileinfo.c:2163
 msgid "SELinux context must be non-NULL"
 msgstr "Ngữ cảnh SELinux phải khác NULL"
 
-#: gio/glocalfileinfo.c:2159
+#: ../gio/glocalfileinfo.c:2178
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Lỗi đặt ngữ cảnh SELinux: %s"
 
-#: gio/glocalfileinfo.c:2166
+#: ../gio/glocalfileinfo.c:2185
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux chưa được bật trên hệ thống này"
 
-#: gio/glocalfileinfo.c:2258
+#: ../gio/glocalfileinfo.c:2277
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Không hỗ trợ chức năng đặt thuộc tính %s"
 
-#: gio/glocalfileinputstream.c:184 gio/glocalfileoutputstream.c:721
+#: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Gặp lỗi khi đọc từ tập tin: %s"
 
-#: gio/glocalfileinputstream.c:215 gio/glocalfileinputstream.c:227
-#: gio/glocalfileinputstream.c:339 gio/glocalfileoutputstream.c:469
-#: gio/glocalfileoutputstream.c:1025
+#: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228
+#: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470
+#: ../gio/glocalfileoutputstream.c:1026
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Gặp lỗi khi tìm nơi trong tập tin: %s"
 
-#: gio/glocalfileinputstream.c:260 gio/glocalfileoutputstream.c:255
-#: gio/glocalfileoutputstream.c:350
+#: ../gio/glocalfileinputstream.c:261 ../gio/glocalfileoutputstream.c:256
+#: ../gio/glocalfileoutputstream.c:351
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Gặp lỗi khi đóng tập tin: %s"
 
-#: gio/glocalfilemonitor.c:213
+#: ../gio/glocalfilemonitor.c:212
 msgid "Unable to find default local file monitor type"
 msgstr "Không tìm thấy kiểu theo dõi tập tin cục bộ mặc định"
 
-#: gio/glocalfileoutputstream.c:201 gio/glocalfileoutputstream.c:234
-#: gio/glocalfileoutputstream.c:742
+#: ../gio/glocalfileoutputstream.c:202 ../gio/glocalfileoutputstream.c:235
+#: ../gio/glocalfileoutputstream.c:743
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Gặp lỗi khi ghi vào tập tin: %s"
 
-#: gio/glocalfileoutputstream.c:282
+#: ../gio/glocalfileoutputstream.c:283
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Gặp lỗi khi gỡ bỏ liên kết sao lưu cũ : %s"
 
-#: gio/glocalfileoutputstream.c:296 gio/glocalfileoutputstream.c:309
+#: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Gặp lỗi khi tạo bản sao lưu : %s"
 
-#: gio/glocalfileoutputstream.c:327
+#: ../gio/glocalfileoutputstream.c:328
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Gặp lỗi khi thay đổi tên của tập tin tạm thời: %s"
 
-#: gio/glocalfileoutputstream.c:515 gio/glocalfileoutputstream.c:1076
+#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1077
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Gặp lỗi khi cắt ngắn tập tin: %s"
 
-#: gio/glocalfileoutputstream.c:576 gio/glocalfileoutputstream.c:629
-#: gio/glocalfileoutputstream.c:674 gio/glocalfileoutputstream.c:814
-#: gio/glocalfileoutputstream.c:1057 gio/glocalfileoutputstream.c:1156
+#: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630
+#: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815
+#: ../gio/glocalfileoutputstream.c:1058 ../gio/glocalfileoutputstream.c:1157
 #, c-format
 msgid "Error opening file '%s': %s"
 msgstr "Gặp lỗi khi mở tập tin '%s': %s"
 
-#: gio/glocalfileoutputstream.c:845
+#: ../gio/glocalfileoutputstream.c:846
 msgid "Target file is a directory"
 msgstr "Tập tin đích là một thư mục"
 
-#: gio/glocalfileoutputstream.c:850
+#: ../gio/glocalfileoutputstream.c:851
 msgid "Target file is not a regular file"
 msgstr "Tập tin đích không phải là một tập tin bình thường"
 
-#: gio/glocalfileoutputstream.c:862
+#: ../gio/glocalfileoutputstream.c:863
 msgid "The file was externally modified"
 msgstr "Tập tin đã bị sửa đổi bên ngoài"
 
-#: gio/glocalfileoutputstream.c:1041
+#: ../gio/glocalfileoutputstream.c:1042
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Lỗi xoá tập tin cũ: %s"
 
-#: gio/gmemoryinputstream.c:487 gio/gmemoryoutputstream.c:718
+#: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746
 msgid "Invalid GSeekType supplied"
 msgstr "GSeekType được cung cấp không hợp lệ"
 
-#: gio/gmemoryinputstream.c:497
+#: ../gio/gmemoryinputstream.c:496
 msgid "Invalid seek request"
 msgstr "Yêu cầu tìm không hợp lệ"
 
-#: gio/gmemoryinputstream.c:521
+#: ../gio/gmemoryinputstream.c:520
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Không thể cắt GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:468
+#: ../gio/gmemoryoutputstream.c:496
 msgid "Memory output stream not resizable"
 msgstr "Luồng ra bộ nhớ không thể thay đổi kích thước"
 
-#: gio/gmemoryoutputstream.c:484
+#: ../gio/gmemoryoutputstream.c:512
 msgid "Failed to resize memory output stream"
 msgstr "Lỗi thay đổi kích thước luồng ra bộ nhớ"
 
-#: gio/gmemoryoutputstream.c:572
+#: ../gio/gmemoryoutputstream.c:600
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr ""
 "Việc ghi này yêu cầu một vùng nhớ lớn hơn sức chứa địa chỉ sẵn sàng hiện thời"
 
-#: gio/gmemoryoutputstream.c:728
+#: ../gio/gmemoryoutputstream.c:756
 msgid "Requested seek before the beginning of the stream"
 msgstr "Đã yêu cầu tìm nơi đằng trước đầu của luồng"
 
-#: gio/gmemoryoutputstream.c:737
+#: ../gio/gmemoryoutputstream.c:765
 msgid "Requested seek beyond the end of the stream"
 msgstr "Đã yêu cầu tìm nơi đằng sau cuối của luồng"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: gio/gmount.c:364
+#: ../gio/gmount.c:363
 msgid "mount doesn't implement \"unmount\""
 msgstr "hàm mount (lắp) không thực hiện hàm \"unmount\" (bỏ lắp)"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: gio/gmount.c:443
+#: ../gio/gmount.c:442
 msgid "mount doesn't implement \"eject\""
 msgstr "hàm mount (lắp) không thực hiện hàm \"eject\" (đầy ra)"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: gio/gmount.c:523
+#: ../gio/gmount.c:522
 msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
 msgstr ""
 "hàm mount (lắp) không thực hiện hàm \"unmount\" hoặc \"unmount_with_operation"
@@ -2369,7 +3030,7 @@
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: gio/gmount.c:610
+#: ../gio/gmount.c:609
 msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
 msgstr ""
 "hàm mount (lắp) không thực hiện hàm \"eject\" hoặc \"eject_with_operation"
@@ -2378,431 +3039,714 @@
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: gio/gmount.c:699
+#: ../gio/gmount.c:698
 msgid "mount doesn't implement \"remount\""
 msgstr "hàm mount (lắp) không thực hiện hàm \"remount\" (lắp lại)"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: gio/gmount.c:783
+#: ../gio/gmount.c:782
 msgid "mount doesn't implement content type guessing"
 msgstr "hàm mount (lắp) không thực hiện đoán nội dung"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: gio/gmount.c:872
+#: ../gio/gmount.c:871
 msgid "mount doesn't implement synchronous content type guessing"
 msgstr "hàm mount (lắp) không thực hiện đoán nội dung đồng bộ"
 
-#: gio/gnetworkaddress.c:295
+#: ../gio/gnetworkaddress.c:318
 #, c-format
 msgid "Hostname '%s' contains '[' but not ']'"
 msgstr "Tên máy '%s' có '[' nhưng không có ']'"
 
-#: gio/goutputstream.c:207 gio/goutputstream.c:408
+#: ../gio/goutputstream.c:207 ../gio/goutputstream.c:408
 msgid "Output stream doesn't implement write"
 msgstr "Luồng xuất không thực hiện hàm write (ghi)"
 
-#: gio/goutputstream.c:369 gio/goutputstream.c:845
+#: ../gio/goutputstream.c:369 ../gio/goutputstream.c:849
 msgid "Source stream is already closed"
 msgstr "Luồng nguồn đã bị đóng"
 
-#: gio/gresolver.c:736
+#: ../gio/gresolver.c:737
 #, c-format
 msgid "Error resolving '%s': %s"
 msgstr "Lỗi phân giải '%s': %s"
 
-#: gio/gresolver.c:786
+#: ../gio/gresolver.c:787
 #, c-format
 msgid "Error reverse-resolving '%s': %s"
 msgstr "Lỗi phân giải ngược '%s': %s"
 
-#: gio/gresolver.c:821 gio/gresolver.c:899
+#: ../gio/gresolver.c:822 ../gio/gresolver.c:900
 #, c-format
 msgid "No service record for '%s'"
 msgstr "Không có bản ghi dịch vụ (service record) cho '%s'"
 
-#: gio/gresolver.c:826 gio/gresolver.c:904
+#: ../gio/gresolver.c:827 ../gio/gresolver.c:905
 #, c-format
 msgid "Temporarily unable to resolve '%s'"
 msgstr "Tạm thời không thể phân giải '%s'"
 
-#: gio/gresolver.c:831 gio/gresolver.c:909
+#: ../gio/gresolver.c:832 ../gio/gresolver.c:910
 #, c-format
 msgid "Error resolving '%s'"
 msgstr "Lỗi phân giải '%s'"
 
-#: gio/gschema-compile.c:659
-msgid "where to store the gschemas.compiled file"
-msgstr ""
+#: ../gio/gsettings-tool.c:60
+#, c-format
+msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgstr "Schema '%s' không thể tái định vị (không cần xác định đường dấn)\n"
 
-#: gio/gschema-compile.c:659 gio/gschema-compile.c:671
-msgid "DIRECTORY"
-msgstr ""
+#: ../gio/gsettings-tool.c:65 ../gio/gsettings-tool.c:82
+#, c-format
+#| msgid "No such interface `%s'"
+msgid "No such schema '%s'\n"
+msgstr "Không có schema '%s'\n"
 
-#: gio/gschema-compile.c:660
-msgid "Do not write the gschema.compiled file"
-msgstr ""
+#: ../gio/gsettings-tool.c:77
+#, c-format
+msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgstr "Schema '%s' có thể tái định vị (cần xác định đường dẫn)\n"
 
-#: gio/gschema-compile.c:661
-#, fuzzy
-msgid "Do not give error for empty directory"
-msgstr "Không thể di chuyển thư mục đè lên thư mục"
+#: ../gio/gsettings-tool.c:92
+#, c-format
+msgid "Empty path given.\n"
+msgstr "Đường dẫn rỗng.\n"
 
-#: gio/gschema-compile.c:662
-msgid "Do not enforce key name restrictions"
-msgstr ""
+#: ../gio/gsettings-tool.c:98
+#, c-format
+msgid "Path must begin with a slash (/)\n"
+msgstr "Đường dẫn phải bắt đầu bằng dấu '/'\n"
 
-#: gio/gschema-compile.c:674
+#: ../gio/gsettings-tool.c:104
+#, c-format
+msgid "Path must end with a slash (/)\n"
+msgstr "Đường dẫn phải kết thúc bằng dấu '/'\n"
+
+#: ../gio/gsettings-tool.c:110
+#, c-format
+msgid "Path must not contain two adjacent slashes (//)\n"
+msgstr "Đường dẫn không được chứa hai dấu gạch chéo liên tiếp (//)\n"
+
+#: ../gio/gsettings-tool.c:131
+#, c-format
+#| msgid "No such property `%s'"
+msgid "No such key '%s'\n"
+msgstr "Không có khoá '%s'\n"
+
+#: ../gio/gsettings-tool.c:429
+#, c-format
+msgid "The provided value is outside of the valid range\n"
+msgstr "Giá trị cung cấp ngoài phạm vi hợp lệ\n"
+
+#: ../gio/gsettings-tool.c:458
+msgid "List the installed (non-relocatable) schemas"
+msgstr "Danh sách schema (không thể tái định vị) đã cài đặt"
+
+#: ../gio/gsettings-tool.c:464
+msgid "List the installed relocatable schemas"
+msgstr "Danh sách schema (có thể thể tái định vị) đã cài đặt"
+
+#: ../gio/gsettings-tool.c:470
+msgid "Lists the keys in SCHEMA"
+msgstr "Danh sách khoá trong SCHEMA"
+
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
+msgid "SCHEMA[:PATH]"
+msgstr "SCHEMA[:ĐƯỜNG DẪN]"
+
+#: ../gio/gsettings-tool.c:476
+msgid "Lists the children of SCHEMA"
+msgstr "Danh sách con của SCHEMA"
+
+#: ../gio/gsettings-tool.c:482
+msgid "List keys and values, recursively"
+msgstr "Danh sách khoá và giá trị, đệ quy"
+
+#: ../gio/gsettings-tool.c:488
+#| msgid "Get the value of KEY"
+msgid "Gets the value of KEY"
+msgstr "Lấy giá trị của KHOÁ"
+
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
+#| msgid "SCHEMA KEY"
+msgid "SCHEMA[:PATH] KEY"
+msgstr "SCHEMA[:ĐƯỜNG DẪN] KHOÁ"
+
+#: ../gio/gsettings-tool.c:494
+msgid "Queries the range of valid values for KEY"
+msgstr "Truy vấn khoảng giá trị hợp lệ cho KHOÁ"
+
+#: ../gio/gsettings-tool.c:500
+#| msgid "Set the value of KEY"
+msgid "Sets the value of KEY to VALUE"
+msgstr "Đặt giá trị GIÁ TRỊ cho KHOÁ"
+
+#: ../gio/gsettings-tool.c:501
+#| msgid "SCHEMA KEY VALUE"
+msgid "SCHEMA[:PATH] KEY VALUE"
+msgstr "SCHEMA[:ĐƯỜNG DẪN] KHOÁ GIÁ-TRỊ"
+
+#: ../gio/gsettings-tool.c:506
+msgid "Resets KEY to its default value"
+msgstr "Phục hồi KHOÁ về giá trị mặc định"
+
+#: ../gio/gsettings-tool.c:512
+#| msgid "Find out whether KEY is writable"
+msgid "Checks if KEY is writable"
+msgstr "Tìm xem KHOÁ ghi được không"
+
+#: ../gio/gsettings-tool.c:518
 msgid ""
-"Compile all GSettings schema files into a schema cache.\n"
-"Schema files are required to have the extension .gschema.xml,\n"
-"and the cache file is called gschemas.compiled."
+"Monitors KEY for changes.\n"
+"If no KEY is specified, monitor all keys in SCHEMA.\n"
+"Use ^C to stop monitoring.\n"
 msgstr ""
+"Theo dõi thay đổi của KHOÁ.\n"
+"Nếu không xác định KHOÁ, theo dõi mọi khoá trong SCHEMA.\n"
+"Dùng ^c để ngưng.\n"
 
-#: gio/gschema-compile.c:690
-#, c-format
-msgid "You should give exactly one directory name\n"
-msgstr ""
+#: ../gio/gsettings-tool.c:521
+#| msgid "SCHEMA KEY"
+msgid "SCHEMA[:PATH] [KEY]"
+msgstr "SCHEMA[:ĐƯỜNG DẪN] [KHOÁ]"
 
-#: gio/gschema-compile.c:729
+#: ../gio/gsettings-tool.c:525
 #, c-format
-msgid "No schema files found\n"
-msgstr ""
-
-#: gio/gsettings-tool.c:41
-#, c-format
+#| msgid "Unknown command '%s'\n"
 msgid ""
-"Commands:\n"
-"  help        Show this information\n"
-"  get         Get the value of a key\n"
-"  set         Set the value of a key\n"
-"  monitor     Monitor a key for changes\n"
-"  writable    Check if a key is writable\n"
+"Unknown command %s\n"
 "\n"
-"Use '%s COMMAND --help' to get help for individual commands.\n"
-msgstr ""
+msgstr "Lệnh lạ '%s'\n\n"
 
-#: gio/gsettings-tool.c:102 gio/gsettings-tool.c:161 gio/gsettings-tool.c:252
-#: gio/gsettings-tool.c:325
-msgid "Specify the path for the schema"
-msgstr ""
-
-#: gio/gsettings-tool.c:102 gio/gsettings-tool.c:161 gio/gsettings-tool.c:252
-#: gio/gsettings-tool.c:325
-msgid "PATH"
-msgstr ""
-
-#: gio/gsettings-tool.c:110 gio/gsettings-tool.c:260 gio/gsettings-tool.c:333
-msgid "SCHEMA KEY"
-msgstr ""
-
-#: gio/gsettings-tool.c:112
-msgid "Get the value of KEY"
-msgstr ""
-
-#: gio/gsettings-tool.c:114 gio/gsettings-tool.c:264 gio/gsettings-tool.c:340
+#: ../gio/gsettings-tool.c:533
 msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
+"Usage:\n"
+"  gsettings COMMAND [ARGS...]\n"
+"\n"
+"Commands:\n"
+"  help                      Show this information\n"
+"  list-schemas              List installed schemas\n"
+"  list-relocatable-schemas  List relocatable schemas\n"
+"  list-keys                 List keys in a schema\n"
+"  list-children             List children of a schema\n"
+"  list-recursively          List keys and values, recursively\n"
+"  range                     Queries the range of a key\n"
+"  get                       Get the value of a key\n"
+"  set                       Set the value of a key\n"
+"  reset                     Reset the value of a key\n"
+"  writable                  Check if a key is writable\n"
+"  monitor                   Watch for changes\n"
+"\n"
+"Use 'gsettings help COMMAND' to get detailed help.\n"
+"\n"
 msgstr ""
+"Cách dùng:\n"
+"  gsettings LỆNH [ĐỐI SỐ...]\n"
+"\n"
+"Commands:\n"
+"  help                      Hiện thông tin này\n"
+"  list-schemas              Liệt kê schema đã cài đặt\n"
+"  list-relocatable-schemas  Liệt kê schema có thể tái định vị\n"
+"  list-keys                 Liệt kê khoá trong schema\n"
+"  list-children             Liệt kê khoá con trong schema\n"
+"  list-recursively          Liệt kê khoá và giá trị đệ quy\n"
+"  range                     Truy vấn một vùng khoá\n"
+"  get                       Lấy giá trị khoá\n"
+"  set                       Đặt giá trị khoá\n"
+"  reset                     Phục hồi giá trị khoá\n"
+"  writable                  Kiểm tra khoá có ghi được không\n"
+"  monitor                   Theo dõi thay đổi\n"
+"\n"
+"Dùng 'gsettings help LỆNH' để biết chi tiết.\n"
+"\n"
 
-#: gio/gsettings-tool.c:169
-msgid "SCHEMA KEY VALUE"
-msgstr ""
-
-#: gio/gsettings-tool.c:171
-msgid "Set the value of KEY"
-msgstr ""
-
-#: gio/gsettings-tool.c:173
+#: ../gio/gsettings-tool.c:554
+#, c-format
 msgid ""
-"Arguments:\n"
-"  SCHEMA      The id of the schema\n"
-"  KEY         The name of the key\n"
-"  VALUE       The value to set key to, as a serialized GVariant\n"
+"Usage:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
 msgstr ""
+"Cách dùng:\n"
+"  gsettings %s %s\n"
+"\n"
+"%s\n"
+"\n"
 
-#: gio/gsettings-tool.c:212
-#, fuzzy, c-format
-msgid "Key %s is not writable\n"
-msgstr "Kiểu %s không được đặt hạng"
+#: ../gio/gsettings-tool.c:559
+msgid "Arguments:\n"
+msgstr "Đối số:\n"
 
-#: gio/gsettings-tool.c:262
-msgid "Find out whether KEY is writable"
-msgstr ""
-
-#: gio/gsettings-tool.c:336
+#: ../gio/gsettings-tool.c:563
+#| msgid ""
+#| "Arguments:\n"
+#| "  SCHEMA      The id of the schema\n"
+#| "  KEY         The name of the key\n"
 msgid ""
-"Monitor KEY for changes and print the changed values.\n"
-"Monitoring will continue until the process is terminated."
+"  SCHEMA    The name of the schema\n"
+"  PATH      The path, for relocatable schemas\n"
 msgstr ""
+"  SCHEMA    Tên schema\n"
+"  PATH      Đường dẫn, cho schema tái định vị\n"
 
-#: gio/gsettings-tool.c:399
-#, fuzzy, c-format
-msgid "Unknown command '%s'\n"
-msgstr "Không biết tùy chọn %s"
+#: ../gio/gsettings-tool.c:568
+msgid "  KEY       The (optional) key within the schema\n"
+msgstr "  KEY       Khoá trong schema (tuỳ chọn)\n"
 
-#: gio/gsocket.c:275
+#: ../gio/gsettings-tool.c:572
+msgid "  KEY       The key within the schema\n"
+msgstr "  KEY       Khoá trong schema\n"
+
+#: ../gio/gsettings-tool.c:576
+msgid "  VALUE     The value to set\n"
+msgstr "  VALUE     Giá trị cần đặt\n"
+
+#: ../gio/gsettings-tool.c:652
+#, c-format
+msgid "Empty schema name given"
+msgstr "Tên schema rỗng"
+
+#: ../gio/gsocket.c:277
 msgid "Invalid socket, not initialized"
 msgstr "Ổ cắm không hợp lệ, chưa được sơ khởi"
 
-#: gio/gsocket.c:282
+#: ../gio/gsocket.c:284
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ổ cắm không hợp lệ, khởi động thất bại vì: %s"
 
-#: gio/gsocket.c:290
+#: ../gio/gsocket.c:292
 msgid "Socket is already closed"
 msgstr "Ổ cắm đã được đóng"
 
-#: gio/gsocket.c:298 gio/gsocket.c:2609 gio/gsocket.c:2653
+#: ../gio/gsocket.c:300 ../gio/gsocket.c:2765 ../gio/gsocket.c:2809
 msgid "Socket I/O timed out"
-msgstr ""
+msgstr "Hết giờ Socket I/O"
 
-#: gio/gsocket.c:420
+#: ../gio/gsocket.c:443
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "tạo GSocket từ fd: %s"
 
-#: gio/gsocket.c:454 gio/gsocket.c:468 gio/gsocket.c:2020
+#: ../gio/gsocket.c:477 ../gio/gsocket.c:493 ../gio/gsocket.c:2135
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Không thể tạo ổ cắm: %s"
 
-#: gio/gsocket.c:454
+#: ../gio/gsocket.c:477
 msgid "Unknown protocol was specified"
 msgstr "Lỗi giao thức không xác định"
 
-#: gio/gsocket.c:1218
+#: ../gio/gsocket.c:1246
 #, c-format
 msgid "could not get local address: %s"
 msgstr "không thể lấy địa chỉ cục bộ: %s"
 
-#: gio/gsocket.c:1251
+#: ../gio/gsocket.c:1289
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "không thể lấy địa chỉ ở xa: %s"
 
-#: gio/gsocket.c:1309
+#: ../gio/gsocket.c:1350
 #, c-format
 msgid "could not listen: %s"
 msgstr "không thể lắng nghe: %s"
 
-#: gio/gsocket.c:1383
+#: ../gio/gsocket.c:1424
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Lỗi liên kết địa chỉ: %s"
 
-#: gio/gsocket.c:1503
+#: ../gio/gsocket.c:1544
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Lỗi chấp nhận kết nối: %s"
 
-#: gio/gsocket.c:1616
+#: ../gio/gsocket.c:1661
 msgid "Error connecting: "
 msgstr "Lỗi kết nối: "
 
-#: gio/gsocket.c:1620
+#: ../gio/gsocket.c:1666
 msgid "Connection in progress"
 msgstr "Kết nối đang hình thành"
 
-#: gio/gsocket.c:1625
+#: ../gio/gsocket.c:1673
 #, c-format
 msgid "Error connecting: %s"
 msgstr "Lỗi kết nối: %s"
 
-#: gio/gsocket.c:1668
+#: ../gio/gsocket.c:1716 ../gio/gsocket.c:3528
 #, c-format
 msgid "Unable to get pending error: %s"
 msgstr "Không thể lấy lỗi đang chờ: %s"
 
-#: gio/gsocket.c:1764
+#: ../gio/gsocket.c:1848
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Lỗi nhận dữ liệu: %s"
 
-#: gio/gsocket.c:1907
+#: ../gio/gsocket.c:2022
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Lỗi gửi dữ liệu: %s"
 
-#: gio/gsocket.c:2099
+#: ../gio/gsocket.c:2214
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Lỗi đóng ổ cắm: %s"
 
-#: gio/gsocket.c:2602
+#: ../gio/gsocket.c:2758
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Đang chờ ổ cắm: %s"
 
-#: gio/gsocket.c:2884
+#: ../gio/gsocket.c:3048
 msgid "GSocketControlMessage not supported on windows"
 msgstr "GSocketControlMessage không được hỗ trợ trên Windows"
 
-#: gio/gsocket.c:3143 gio/gsocket.c:3284
+#: ../gio/gsocket.c:3307 ../gio/gsocket.c:3448
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Lỗi nhận thông điệp: %s"
 
-#: gio/gsocketclient.c:521 gio/gsocketclient.c:770
+#: ../gio/gsocket.c:3543
+#| msgid "GCredentials is not implemented on this OS"
+msgid "g_socket_get_credentials not implemented for this OS"
+msgstr "g_socket_get_credentials không được hỗ trợ trên hệ điều hành này"
+
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "Lỗi lạ khi kết nối"
 
-#: gio/gsocketlistener.c:192
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
+msgid "Trying to proxy over non-TCP connection is not supported."
+msgstr "Không hỗ trợ uỷ nhiệm thông qua kết nối không phải TCP."
+
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
+#, c-format
+#| msgid "Property `%s' is not readable"
+msgid "Proxy protocol '%s' is not supported."
+msgstr "Không hỗ trợ giao thức uỷ nhiệm '%s'."
+
+#: ../gio/gsocketlistener.c:191
 msgid "Listener is already closed"
 msgstr "Bên lắng nghe đã đóng"
 
-#: gio/gsocketlistener.c:233
+#: ../gio/gsocketlistener.c:232
 msgid "Added socket is closed"
 msgstr "Ổ cắm được thêm đã đóng"
 
-#: gio/gthemedicon.c:499
+#: ../gio/gsocks4aproxy.c:121
+#, c-format
+msgid "SOCKSv4 does not support IPv6 address '%s'"
+msgstr "SOCKSv4 không hỗ trợ địa chỉ IPv6 '%s'"
+
+#: ../gio/gsocks4aproxy.c:139
+#, c-format
+msgid "SOCKSv4 implementation limits username to %i characters"
+msgstr "Bản SOCKSv4 giới hạn tên người dùng trong %i ký tự"
+
+#: ../gio/gsocks4aproxy.c:157
+#, c-format
+msgid "SOCKSv4a implementation limits hostname to %i characters"
+msgstr "Bản SOCKSv4 giới hạn tên máy trong %i ký tự"
+
+#: ../gio/gsocks4aproxy.c:183
+msgid "The server is not a SOCKSv4 proxy server."
+msgstr "Máy chủ không phải là máy uỷ nhiệm SOCKSv4."
+
+#: ../gio/gsocks4aproxy.c:190
+msgid "Connection through SOCKSv4 server was rejected"
+msgstr "Kết nối qua máy chủ SOCKSv4 bị từ chối"
+
+#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:328
+#: ../gio/gsocks5proxy.c:338
+msgid "The server is not a SOCKSv5 proxy server."
+msgstr "Máy chủ không phải máy SOCKSv5."
+
+#: ../gio/gsocks5proxy.c:169
+msgid "The SOCKSv5 proxy requires authentication."
+msgstr "Máy uỷ nhiệm SOCKSv5 cần xác thực."
+
+#: ../gio/gsocks5proxy.c:179
+msgid ""
+"The SOCKSv5 proxy requires an authentication method that is not supported by "
+"GLib."
+msgstr "Máy uỷ nhiệm SOCKSv5 cần dùng phương thức xác thực không được hỗ trợ bởi GLib."
+
+#: ../gio/gsocks5proxy.c:208
+#, c-format
+msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)."
+msgstr "Tên người dùng hoặc mật khẩu quá dài so với đặc tả giao thức SOCKSv5 (tối đa %i)."
+
+#: ../gio/gsocks5proxy.c:239
+msgid "SOCKSv5 authentication failed due to wrong username or password."
+msgstr "Xác thực SOCKSv5 thất bại vì sai tên người dùng hoặc mật khẩu."
+
+#: ../gio/gsocks5proxy.c:289
+#, c-format
+msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)"
+msgstr "Tên máy '%s' quá dài đối với đặc tả giao thức SOCKSv5 (tối đa %i byte)"
+
+#: ../gio/gsocks5proxy.c:352
+msgid "The SOCKSv5 proxy server uses unkown address type."
+msgstr "Máy chủ uỷ nhiệm SOCKSv5 dùng kiểu địa chỉ lại."
+
+#: ../gio/gsocks5proxy.c:359
+msgid "Internal SOCKSv5 proxy server error."
+msgstr "Lỗi nội bộ máy chủ SOCKSv5."
+
+#: ../gio/gsocks5proxy.c:365
+msgid "SOCKSv5 connection not allowed by ruleset."
+msgstr "Không cho phép kết nối SOCKSv5 dựa theo tập quy tắc."
+
+#: ../gio/gsocks5proxy.c:372
+msgid "Host unreachable through SOCKSv5 server."
+msgstr "Không thể tiếp cận thông qua máy chủ SOCKSv5."
+
+#: ../gio/gsocks5proxy.c:378
+msgid "Network unreachable through SOCKSv5 proxy."
+msgstr "Không thể tiếp cận mạng thông qua máy chủ SOCKSv5."
+
+#: ../gio/gsocks5proxy.c:384
+msgid "Connection refused through SOCKSv5 proxy."
+msgstr "Kết nối bị từ chối thông qua máy chủ SOCKSv5."
+
+#: ../gio/gsocks5proxy.c:390
+msgid "SOCKSv5 proxy does not support 'connect' command."
+msgstr "Uỷ nhiệm SOCKSv5 không hỗ trợ lệnh 'connect' (kết nối)."
+
+#: ../gio/gsocks5proxy.c:396
+msgid "SOCKSv5 proxy does not support provided address type."
+msgstr "Uỷ nhiệm SOCKSv5 không hỗ trợ kiểu địa chỉ cung cấp."
+
+#: ../gio/gsocks5proxy.c:402
+msgid "Unkown SOCKSv5 proxy error."
+msgstr "Lỗi SOCKSv5 lạ."
+
+#: ../gio/gthemedicon.c:498
 #, c-format
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "Không thể quản lý phiên bản %d của bảng mã GThemedIcon"
 
-#: gio/gunixconnection.c:165 gio/gunixconnection.c:502
+#: ../gio/gtlscertificate.c:228
+msgid "No PEM-encoded certificate found"
+msgstr "Không tìm thấy chứng nhận mã hoá dạng PEM"
+
+#: ../gio/gtlscertificate.c:237
+msgid "Could not parse PEM-encoded certificate"
+msgstr "Không thể phân tích chứng nhận mã hoá dạng PEM"
+
+#: ../gio/gtlscertificate.c:258
+msgid "Could not parse PEM-encoded private key"
+msgstr "Không thể phân tích khoá riêng mã hoá dạng PEM"
+
+#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:505
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgstr "Chờ 1 thông điệp điều khiển, nhận được %d"
 
-#: gio/gunixconnection.c:178 gio/gunixconnection.c:512
+#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:515
 msgid "Unexpected type of ancillary data"
 msgstr "Gặp dữ liệu bổ sung kiểu bất thường"
 
-#: gio/gunixconnection.c:196
+#: ../gio/gunixconnection.c:195
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgstr "Chờ 1 fd, nhận được %d\n"
 
-#: gio/gunixconnection.c:212
+#: ../gio/gunixconnection.c:211
 msgid "Received invalid fd"
 msgstr "Nhận fd không hợp lệ"
 
-#: gio/gunixconnection.c:359
-#, fuzzy
+#: ../gio/gunixconnection.c:359
 msgid "Error sending credentials: "
-msgstr "Lỗi gửi dữ liệu: %s"
+msgstr "Lỗi gửi giấy uỷ nhiệm: "
 
-#: gio/gunixconnection.c:436
+#: ../gio/gunixconnection.c:439
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
-msgstr ""
+msgstr "Lỗi kiểm tra nếu SO_PASSCRED được bật cho socket: %s"
 
-#: gio/gunixconnection.c:445
+#: ../gio/gunixconnection.c:448
 #, c-format
 msgid ""
 "Unexpected option length while checking if SO_PASSCRED is enabled for "
 "socket. Expected %d bytes, got %d"
 msgstr ""
+"Chiều dài tuỳ chọn bất thường khi kiểm tra SO_PASSCRED có được bật cho "
+"socket. Chờ %d byte, nhận %d"
 
-#: gio/gunixconnection.c:462
-#, fuzzy, c-format
+#: ../gio/gunixconnection.c:465
+#, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr "Gặp lỗi khi thay đổi tên của tập tin: %s"
+msgstr "Lỗi bật SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:492
+#: ../gio/gunixconnection.c:495
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
+"Cần đọc một byte duy nhất để nhận giấy uỷ nhiệm nhưng không đọc được byte nào"
 
-#: gio/gunixconnection.c:535
+#: ../gio/gunixconnection.c:538
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "Lỗi khi tắt SO_PASSCRED: %s"
 
-#: gio/gunixinputstream.c:354 gio/gunixinputstream.c:374
-#: gio/gunixinputstream.c:452 gio/gunixoutputstream.c:439
+#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388
+#: ../gio/gunixinputstream.c:466
 #, c-format
 msgid "Error reading from unix: %s"
 msgstr "Gặp lỗi khi đọc từ UNIX: %s"
 
-#: gio/gunixinputstream.c:407 gio/gunixinputstream.c:589
-#: gio/gunixoutputstream.c:394 gio/gunixoutputstream.c:545
+#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601
+#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556
 #, c-format
 msgid "Error closing unix: %s"
 msgstr "Gặp lỗi khi đóng UNIX: %s"
 
-#: gio/gunixmounts.c:1846 gio/gunixmounts.c:1883
+#: ../gio/gunixmounts.c:1846 ../gio/gunixmounts.c:1883
 msgid "Filesystem root"
 msgstr "Gốc hệ thống tập tin"
 
-#: gio/gunixoutputstream.c:340 gio/gunixoutputstream.c:361
+#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374
+#: ../gio/gunixoutputstream.c:452
 #, c-format
 msgid "Error writing to unix: %s"
 msgstr "Gặp lỗi khi ghi vào UNIX: %s"
 
-#: gio/gunixsocketaddress.c:245
+#: ../gio/gunixsocketaddress.c:244
 msgid "Abstract unix domain socket addresses not supported on this system"
 msgstr "Địa chỉ ổ cắm UNIX trừu tượng không được hỗ trợ trên hệ thống này"
 
-#: gio/gvolume.c:407
+#: ../gio/gvolume.c:408
 msgid "volume doesn't implement eject"
 msgstr "hàm volume (khối tin) không thực hiện hàm eject (đầy ra)"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: gio/gvolume.c:486
+#: ../gio/gvolume.c:487
 msgid "volume doesn't implement eject or eject_with_operation"
 msgstr ""
 "hàm volume (khối tin) không thực hiện hàm \"eject\" hoặc "
 "\"eject_with_operation\" (đầy ra)"
 
-#: gio/gwin32appinfo.c:277
+#: ../gio/gwin32appinfo.c:276
 msgid "Can't find application"
 msgstr "Không tìm thấy ứng dụng"
 
-#: gio/gwin32appinfo.c:300
+#: ../gio/gwin32appinfo.c:299
 #, c-format
 msgid "Error launching application: %s"
 msgstr "Gặp lỗi khi khởi chạy ứng dụng: %s"
 
-#: gio/gwin32appinfo.c:336
+#: ../gio/gwin32appinfo.c:335
 msgid "URIs not supported"
 msgstr "Không hỗ trợ địa chỉ URI"
 
-#: gio/gwin32appinfo.c:358
+#: ../gio/gwin32appinfo.c:357
 msgid "association changes not supported on win32"
 msgstr "các thay đổi liên quan không được hỗ trợ trên win32"
 
-#: gio/gwin32appinfo.c:370
+#: ../gio/gwin32appinfo.c:369
 msgid "Association creation not supported on win32"
 msgstr "chức năng tạo sự liên quan không được hỗ trợ trên win32"
 
-#: gio/gwin32inputstream.c:319
-#, fuzzy, c-format
+#: ../gio/gwin32inputstream.c:318
+#, c-format
 msgid "Error reading from handle: %s"
-msgstr "Gặp lỗi khi đọc từ tập tin: %s"
+msgstr "Gặp lỗi khi đọc từ handle: %s"
 
-#: gio/gwin32inputstream.c:349 gio/gwin32outputstream.c:349
-#, fuzzy, c-format
+#: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348
+#, c-format
 msgid "Error closing handle: %s"
-msgstr "Gặp lỗi khi đóng tập tin: %s"
+msgstr "Gặp lỗi khi đóng handle: %s"
 
-#: gio/gwin32outputstream.c:319
-#, fuzzy, c-format
+#: ../gio/gwin32outputstream.c:318
+#, c-format
 msgid "Error writing to handle: %s"
-msgstr "Gặp lỗi khi ghi vào tập tin: %s"
+msgstr "Gặp lỗi khi ghi vào handle: %s"
 
-#: gio/gzlibcompressor.c:279 gio/gzlibdecompressor.c:250
+#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349
 msgid "Not enough memory"
 msgstr "Không đủ bộ nhớ"
 
-#: gio/gzlibcompressor.c:286 gio/gzlibdecompressor.c:257
+#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356
 #, c-format
 msgid "Internal error: %s"
 msgstr "Lỗi nội bộ : %s"
 
-#: gio/gzlibcompressor.c:299 gio/gzlibdecompressor.c:271
+#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370
 msgid "Need more input"
 msgstr "Cần thêm đầu vào"
 
-#: gio/gzlibdecompressor.c:243
+#: ../gio/gzlibdecompressor.c:342
 msgid "Invalid compressed data"
 msgstr "Sai nén dữ liệu"
+
+#~ msgid "The nonce-file `%s' was %"
+#~ msgstr "nonce-file `%s' là %"
+
+#~ msgid "Encountered array of length %"
+#~ msgstr "Bắt gặp mảng dài %"
+
+#~ msgid "Error writing first 16 bytes of message to socket: "
+#~ msgstr "Lỗi ghi 16 byte đầu tiên của thông điệp vào socket: "
+
+#~ msgid "Do not give error for empty directory"
+#~ msgstr "Không thông báo lỗi với thư mục rỗng"
+
+#~ msgid ""
+#~ "Commands:\n"
+#~ "  help        Show this information\n"
+#~ "  get         Get the value of a key\n"
+#~ "  set         Set the value of a key\n"
+#~ "  monitor     Monitor a key for changes\n"
+#~ "  writable    Check if a key is writable\n"
+#~ "\n"
+#~ "Use '%s COMMAND --help' to get help for individual commands.\n"
+#~ msgstr ""
+#~ "Lệnh:\n"
+#~ "  help        Hiện những thông tin này\n"
+#~ "  get         Lấy giá trị của khoá\n"
+#~ "  set         Đặt giá trị cho khoá\n"
+#~ "  monitor     Theo dõi thay đổi của khoá\n"
+#~ "  writable    Kiểm tra khoá ghi được không\n"
+#~ "\n"
+#~ "Dùng '%s LỆNH --help' để biết thêm chi tiết.\n"
+
+#~ msgid "Specify the path for the schema"
+#~ msgstr "Xác định đường dẫn cho schema"
+
+#~ msgid "PATH"
+#~ msgstr "ĐƯỜNG DẪN"
+
+#~ msgid ""
+#~ "Arguments:\n"
+#~ "  SCHEMA      The id of the schema\n"
+#~ "  KEY         The name of the key\n"
+#~ "  VALUE       The value to set key to, as a serialized GVariant\n"
+#~ msgstr ""
+#~ "Đối số:\n"
+#~ "  SCHEMA      id của schema\n"
+#~ "  KEY         Tên khoá\n"
+#~ "  VALUE       Giá trị cần đặt, theo kiểu GVariant tuần tự hoá\n"
+
+#~ msgid "Key %s is not writable\n"
+#~ msgstr "Khoá %s không ghi được\n"
+
+#~ msgid ""
+#~ "Monitor KEY for changes and print the changed values.\n"
+#~ "Monitoring will continue until the process is terminated."
+#~ msgstr ""
+#~ "Theo dõi các thay đổi trên KHOÁ và in ra.\n"
+#~ "Theo dõi sẽ tiếp tục đến khi tiến trình kết thúc."
diff --git a/po/zh_CN.po b/po/zh_CN.po
index fb86758..324510f 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -17,10 +17,11 @@
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&component=general\n"
-"POT-Creation-Date: 2010-11-29 15:49+0000\n"
-"PO-Revision-Date: 2010-12-06 20:42+0800\n"
+"POT-Creation-Date: 2010-12-23 18:58+0000\n"
+"PO-Revision-Date: 2010-12-26 00:49+0800\n"
 "Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -395,133 +396,133 @@
 msgid "Error opening directory '%s': %s"
 msgstr "打开目录“%s”时发生错误:%s"
 
-#: ../glib/gfileutils.c:536 ../glib/gfileutils.c:624
+#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628
 #, c-format
 msgid "Could not allocate %lu bytes to read file \"%s\""
 msgstr "无法分配 %lu 字节以读取文件“%s”"
 
-#: ../glib/gfileutils.c:551
+#: ../glib/gfileutils.c:555
 #, c-format
 msgid "Error reading file '%s': %s"
 msgstr "读取文件“%s”出错:%s"
 
-#: ../glib/gfileutils.c:565
+#: ../glib/gfileutils.c:569
 #, c-format
 msgid "File \"%s\" is too large"
 msgstr "文件“%s”太大"
 
-#: ../glib/gfileutils.c:648
+#: ../glib/gfileutils.c:652
 #, c-format
 msgid "Failed to read from file '%s': %s"
 msgstr "读取文件“%s”失败:%s"
 
-#: ../glib/gfileutils.c:699 ../glib/gfileutils.c:786
+#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "打开文件“%s”失败:%s"
 
-#: ../glib/gfileutils.c:716 ../glib/gmappedfile.c:169
+#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169
 #, c-format
 msgid "Failed to get attributes of file '%s': fstat() failed: %s"
 msgstr "获得文件“%s”的属性失败:fstat() 失败:%s"
 
-#: ../glib/gfileutils.c:750
+#: ../glib/gfileutils.c:754
 #, c-format
 msgid "Failed to open file '%s': fdopen() failed: %s"
 msgstr "打开文件“%s”失败:fdopen() 失败:%s"
 
-#: ../glib/gfileutils.c:858
+#: ../glib/gfileutils.c:862
 #, c-format
 msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
 msgstr "将文件“%s”重命名为“%s”失败:g_rename() 失败:%s"
 
-#: ../glib/gfileutils.c:900 ../glib/gfileutils.c:1369
+#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1388
 #, c-format
 msgid "Failed to create file '%s': %s"
 msgstr "创建文件“%s”失败:%s"
 
-#: ../glib/gfileutils.c:914
+#: ../glib/gfileutils.c:918
 #, c-format
 msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
 msgstr "打开文件“%s”写入失败:fdopen() 失败:%s"
 
-#: ../glib/gfileutils.c:939
+#: ../glib/gfileutils.c:943
 #, c-format
 msgid "Failed to write file '%s': fwrite() failed: %s"
 msgstr "写入文件“%s”失败:fwrite() 失败:%s"
 
-#: ../glib/gfileutils.c:958
+#: ../glib/gfileutils.c:962
 #, c-format
 msgid "Failed to write file '%s': fflush() failed: %s"
 msgstr "写入文件“%s”失败:fflush() 失败:%s"
 
-#: ../glib/gfileutils.c:987
+#: ../glib/gfileutils.c:1005
 #, c-format
 msgid "Failed to write file '%s': fsync() failed: %s"
 msgstr "写入文件“%s”失败:fsync() 失败:%s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1025
 #, c-format
 msgid "Failed to close file '%s': fclose() failed: %s"
 msgstr "关闭文件“%s”失败:fclose() 失败:%s"
 
-#: ../glib/gfileutils.c:1127
+#: ../glib/gfileutils.c:1146
 #, c-format
 msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
 msgstr "无法删除已有文件“%s”:g_unlink() 失败:%s"
 
-#: ../glib/gfileutils.c:1331
+#: ../glib/gfileutils.c:1350
 #, c-format
 msgid "Template '%s' invalid, should not contain a '%s'"
 msgstr "模板“%s”无效,不应该包含“%s”"
 
-#: ../glib/gfileutils.c:1344
+#: ../glib/gfileutils.c:1363
 #, c-format
 msgid "Template '%s' doesn't contain XXXXXX"
 msgstr "模板“%s”不包含 XXXXXX"
 
-#: ../glib/gfileutils.c:1777
+#: ../glib/gfileutils.c:1796
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 字节"
 
-#: ../glib/gfileutils.c:1785
+#: ../glib/gfileutils.c:1804
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: ../glib/gfileutils.c:1790
+#: ../glib/gfileutils.c:1809
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gfileutils.c:1795
+#: ../glib/gfileutils.c:1814
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gfileutils.c:1800
+#: ../glib/gfileutils.c:1819
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gfileutils.c:1805
+#: ../glib/gfileutils.c:1824
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gfileutils.c:1810
+#: ../glib/gfileutils.c:1829
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
-#: ../glib/gfileutils.c:1853
+#: ../glib/gfileutils.c:1872
 #, c-format
 msgid "Failed to read the symbolic link '%s': %s"
 msgstr "读取符号链接“%s”失败:%s"
 
-#: ../glib/gfileutils.c:1874
+#: ../glib/gfileutils.c:1893
 msgid "Symbolic links not supported"
 msgstr "不支持符号链接"
 
@@ -636,8 +637,8 @@
 #: ../glib/gmarkup.c:1126
 #, c-format
 msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag '%"
-"s'"
+"Odd character '%s', expected a '>' character to end the empty-element tag "
+"'%s'"
 msgstr "字符“%s”无效,应该以字符“>”来结束空元素标记“%s”"
 
 #: ../glib/gmarkup.c:1210
@@ -1346,15 +1347,15 @@
 msgid "Too large count value passed to %s"
 msgstr "传递给 %s 的计数值太大了"
 
-#: ../gio/gbufferedinputstream.c:880 ../gio/ginputstream.c:888
+#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888
 #: ../gio/giostream.c:306 ../gio/goutputstream.c:1197
 msgid "Stream is already closed"
 msgstr "流已经关闭"
 
-#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1636
-#: ../gio/gdbusconnection.c:1725 ../gio/gdbusconnection.c:1911
-#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:811
-#: ../gio/gsimpleasyncresult.c:837
+#: ../gio/gcancellable.c:433 ../gio/gdbusconnection.c:1637
+#: ../gio/gdbusconnection.c:1726 ../gio/gdbusconnection.c:1912
+#: ../gio/glocalfile.c:2102 ../gio/gsimpleasyncresult.c:810
+#: ../gio/gsimpleasyncresult.c:836
 msgid "Operation was cancelled"
 msgstr "操作被取消"
 
@@ -1525,14 +1526,14 @@
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "无法确定会话总线地址(尚未在此操作系统上实现)"
 
-#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6167
+#: ../gio/gdbusaddress.c:1242 ../gio/gdbusconnection.c:6168
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "- unknown value `%s'"
 msgstr "无法从 DBUS_STARTER_BUS_TYPE 环境变量确定总线地址 - 未知的值“%s”"
 
-#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6176
+#: ../gio/gdbusaddress.c:1251 ../gio/gdbusconnection.c:6177
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -1635,85 +1636,85 @@
 msgstr "(此外,释放 %s 的锁失败:%s)"
 
 #: ../gio/gdbusconnection.c:1148 ../gio/gdbusconnection.c:1374
-#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1736
+#: ../gio/gdbusconnection.c:1413 ../gio/gdbusconnection.c:1737
 msgid "The connection is closed"
 msgstr "连接已关闭"
 
-#: ../gio/gdbusconnection.c:1680
+#: ../gio/gdbusconnection.c:1681
 msgid "Timeout was reached"
 msgstr "已到超时限制"
 
-#: ../gio/gdbusconnection.c:2299
+#: ../gio/gdbusconnection.c:2300
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "构建客户端连接时遇到不支持的标志"
 
-#: ../gio/gdbusconnection.c:3751 ../gio/gdbusconnection.c:4069
+#: ../gio/gdbusconnection.c:3752 ../gio/gdbusconnection.c:4070
 #, c-format
 msgid ""
 "No such interface `org.freedesktop.DBus.Properties' on object at path %s"
 msgstr "路径 %s 的对象上没有 org.freedesktop.DBus.Properties 接口"
 
-#: ../gio/gdbusconnection.c:3823
+#: ../gio/gdbusconnection.c:3824
 #, c-format
 msgid "Error setting property `%s': Expected type `%s' but got `%s'"
 msgstr "设置属性 %s 出错:期望 %s 类型但得到 %s 类型"
 
-#: ../gio/gdbusconnection.c:3918
+#: ../gio/gdbusconnection.c:3919
 #, c-format
 msgid "No such property `%s'"
 msgstr "无此属性:%s"
 
-#: ../gio/gdbusconnection.c:3930
+#: ../gio/gdbusconnection.c:3931
 #, c-format
 msgid "Property `%s' is not readable"
 msgstr "属性 %s 不可读"
 
-#: ../gio/gdbusconnection.c:3941
+#: ../gio/gdbusconnection.c:3942
 #, c-format
 msgid "Property `%s' is not writable"
 msgstr "属性 %s 不可写"
 
-#: ../gio/gdbusconnection.c:4011 ../gio/gdbusconnection.c:5601
+#: ../gio/gdbusconnection.c:4012 ../gio/gdbusconnection.c:5602
 #, c-format
 msgid "No such interface `%s'"
 msgstr "无此接口:%s"
 
-#: ../gio/gdbusconnection.c:4199
+#: ../gio/gdbusconnection.c:4200
 msgid "No such interface"
 msgstr "无此接口"
 
-#: ../gio/gdbusconnection.c:4415 ../gio/gdbusconnection.c:6117
+#: ../gio/gdbusconnection.c:4416 ../gio/gdbusconnection.c:6118
 #, c-format
 msgid "No such interface `%s' on object at path %s"
 msgstr "在路径 %s 的对象上没有 %s 接口"
 
-#: ../gio/gdbusconnection.c:4467
+#: ../gio/gdbusconnection.c:4468
 #, c-format
 msgid "No such method `%s'"
 msgstr "无此方法:%s"
 
-#: ../gio/gdbusconnection.c:4498
+#: ../gio/gdbusconnection.c:4499
 #, c-format
 msgid "Type of message, `%s', does not match expected type `%s'"
 msgstr "消息的类型“%s”,与预期的类型“%s”不匹配"
 
-#: ../gio/gdbusconnection.c:4717
+#: ../gio/gdbusconnection.c:4718
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%2$s 处的接口 %1$s 已经导出了一个对象"
 
-#: ../gio/gdbusconnection.c:4911
+#: ../gio/gdbusconnection.c:4912
 #, c-format
 msgid "Method `%s' returned type `%s', but expected `%s'"
 msgstr "方法“%s”返回类型“%s”,但预期的是“%s”"
 
-#: ../gio/gdbusconnection.c:5712
+#: ../gio/gdbusconnection.c:5713
 #, c-format
 msgid "Method `%s' on interface `%s' with signature `%s' does not exist"
 msgstr "带有 %3$s 签名的接口 %2$s 上不存在 %1$s 方法"
 
-#: ../gio/gdbusconnection.c:5830
+#: ../gio/gdbusconnection.c:5831
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "已经为 %s 导出一个子树"
@@ -1850,8 +1851,8 @@
 #: ../gio/gdbusmessage.c:2334
 #, c-format
 msgid ""
-"Message body has type signature `%s' but signature in the header field is `%"
-"s'"
+"Message body has type signature `%s' but signature in the header field is `"
+"%s'"
 msgstr "消息主体有类型签名 %s 但头部的签名为 %s"
 
 #: ../gio/gdbusmessage.c:2350
@@ -1879,7 +1880,7 @@
 msgid "Error sending message: %s"
 msgstr "发送信息出错:%s"
 
-#: ../gio/gdbusprivate.c:1756
+#: ../gio/gdbusprivate.c:1768
 msgid "Unable to load /var/lib/dbus/machine-id: "
 msgstr "无法加载 /var/lib/dbus/machine-id:"
 
@@ -2092,34 +2093,34 @@
 msgid "Monitor a remote object."
 msgstr "监视一个远程对象。"
 
-#: ../gio/gdesktopappinfo.c:471 ../gio/gwin32appinfo.c:221
+#: ../gio/gdesktopappinfo.c:480 ../gio/gwin32appinfo.c:221
 msgid "Unnamed"
 msgstr "未命名"
 
-#: ../gio/gdesktopappinfo.c:755
+#: ../gio/gdesktopappinfo.c:764
 msgid "Desktop file didn't specify Exec field"
 msgstr "桌面文件未指定 Exec 区域"
 
-#: ../gio/gdesktopappinfo.c:948
+#: ../gio/gdesktopappinfo.c:957
 msgid "Unable to find terminal required for application"
 msgstr "无法找到应用程序需要的终端"
 
-#: ../gio/gdesktopappinfo.c:1157
+#: ../gio/gdesktopappinfo.c:1166
 #, c-format
 msgid "Can't create user application configuration folder %s: %s"
 msgstr "无法创建用户应用程序配置文件夹 %s:%s"
 
-#: ../gio/gdesktopappinfo.c:1161
+#: ../gio/gdesktopappinfo.c:1170
 #, c-format
 msgid "Can't create user MIME configuration folder %s: %s"
 msgstr "无法创建用户 MIME 配置文件夹 %s:%s"
 
-#: ../gio/gdesktopappinfo.c:1569
+#: ../gio/gdesktopappinfo.c:1663
 #, c-format
 msgid "Can't create user desktop file %s"
 msgstr "无法创建用户桌面文件 %s"
 
-#: ../gio/gdesktopappinfo.c:1683
+#: ../gio/gdesktopappinfo.c:1779
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s 的自定义定义"
@@ -2157,29 +2158,29 @@
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "GEmblem 编码中有不正确的符号数量(%d)"
 
-#: ../gio/gemblemedicon.c:293
+#: ../gio/gemblemedicon.c:368
 #, c-format
 msgid "Can't handle version %d of GEmblemedIcon encoding"
 msgstr "无法处理 GEmblemedIcon 编码的版本 %d"
 
-#: ../gio/gemblemedicon.c:303
+#: ../gio/gemblemedicon.c:378
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr "GEmblemedIcon 编码中有不正确的符号数量(%d)"
 
-#: ../gio/gemblemedicon.c:326
+#: ../gio/gemblemedicon.c:401
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "GEmblemedIcon 中应为 GEmblem"
 
-#: ../gio/gfile.c:872 ../gio/gfile.c:1102 ../gio/gfile.c:1237
-#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585
-#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783
-#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361
-#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3861
-#: ../gio/gfile.c:4263 ../gio/gfile.c:4349 ../gio/gfile.c:4438
-#: ../gio/gfile.c:4536 ../gio/gfile.c:4623 ../gio/gfile.c:4717
-#: ../gio/gfile.c:5038 ../gio/gfile.c:5305 ../gio/gfile.c:5370
-#: ../gio/gfile.c:6944 ../gio/gfile.c:7034 ../gio/gfile.c:7120
+#: ../gio/gfile.c:872 ../gio/gfile.c:1103 ../gio/gfile.c:1238
+#: ../gio/gfile.c:1475 ../gio/gfile.c:1529 ../gio/gfile.c:1586
+#: ../gio/gfile.c:1669 ../gio/gfile.c:1724 ../gio/gfile.c:1784
+#: ../gio/gfile.c:1838 ../gio/gfile.c:3308 ../gio/gfile.c:3362
+#: ../gio/gfile.c:3494 ../gio/gfile.c:3535 ../gio/gfile.c:3862
+#: ../gio/gfile.c:4264 ../gio/gfile.c:4350 ../gio/gfile.c:4439
+#: ../gio/gfile.c:4537 ../gio/gfile.c:4624 ../gio/gfile.c:4718
+#: ../gio/gfile.c:5039 ../gio/gfile.c:5306 ../gio/gfile.c:5371
+#: ../gio/gfile.c:6945 ../gio/gfile.c:7035 ../gio/gfile.c:7121
 #: ../gio/win32/gwinhttpfile.c:439
 msgid "Operation not supported"
 msgstr "不支持该操作"
@@ -2192,58 +2193,58 @@
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
+#: ../gio/gfile.c:1359 ../gio/glocalfile.c:1059 ../gio/glocalfile.c:1070
 #: ../gio/glocalfile.c:1083
 msgid "Containing mount does not exist"
 msgstr "包含的挂载不存在"
 
-#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2258
+#: ../gio/gfile.c:2412 ../gio/glocalfile.c:2258
 msgid "Can't copy over directory"
 msgstr "无法跨目录复制"
 
-#: ../gio/gfile.c:2472
+#: ../gio/gfile.c:2473
 msgid "Can't copy directory over directory"
 msgstr "无法跨目录复制到目录"
 
-#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2267
+#: ../gio/gfile.c:2481 ../gio/glocalfile.c:2267
 msgid "Target file exists"
 msgstr "目标文件已存在"
 
-#: ../gio/gfile.c:2498
+#: ../gio/gfile.c:2499
 msgid "Can't recursively copy directory"
 msgstr "无法递归复制目录"
 
-#: ../gio/gfile.c:2758
+#: ../gio/gfile.c:2759
 msgid "Splice not supported"
 msgstr "不支持拼接"
 
-#: ../gio/gfile.c:2762
+#: ../gio/gfile.c:2763
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "拼接文件出错:%s"
 
-#: ../gio/gfile.c:2909
+#: ../gio/gfile.c:2910
 msgid "Can't copy special file"
 msgstr "无法复制特殊文件"
 
-#: ../gio/gfile.c:3483
+#: ../gio/gfile.c:3484
 msgid "Invalid symlink value given"
 msgstr "给出的符号链接值无效"
 
-#: ../gio/gfile.c:3577
+#: ../gio/gfile.c:3578
 msgid "Trash not supported"
 msgstr "不支持回收站"
 
-#: ../gio/gfile.c:3626
+#: ../gio/gfile.c:3627
 #, c-format
 msgid "File names cannot contain '%c'"
 msgstr "文件名不能包含“%c”"
 
-#: ../gio/gfile.c:6003 ../gio/gvolume.c:332
+#: ../gio/gfile.c:6004 ../gio/gvolume.c:332
 msgid "volume doesn't implement mount"
 msgstr "卷未实现挂载"
 
-#: ../gio/gfile.c:6114
+#: ../gio/gfile.c:6115
 msgid "No application is registered as handling this file"
 msgstr "没有为此类型文件注册相应的处理程序"
 
@@ -2538,8 +2539,8 @@
 #: ../gio/glib-compile-schemas.c:1787
 #, c-format
 msgid ""
-"error parsing key `%s' in schema `%s' as specified in override file `%s': %"
-"s.  "
+"error parsing key `%s' in schema `%s' as specified in override file `%s': "
+"%s.  "
 msgstr "解析覆盖文件 %3$s 中指定的 %2$s 中的键 %1$s 出错:%4$s。"
 
 #: ../gio/glib-compile-schemas.c:1797
@@ -3058,66 +3059,66 @@
 msgid "No such key '%s'\n"
 msgstr "没有“%s”这个键\n"
 
-#: ../gio/gsettings-tool.c:427
+#: ../gio/gsettings-tool.c:429
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "提供的值不在有效范围内\n"
 
-#: ../gio/gsettings-tool.c:456
+#: ../gio/gsettings-tool.c:458
 msgid "List the installed (non-relocatable) schemas"
 msgstr "列出安装的(不可重定向的)方案"
 
-#: ../gio/gsettings-tool.c:462
+#: ../gio/gsettings-tool.c:464
 msgid "List the installed relocatable schemas"
 msgstr "列出安装的可重定向方案"
 
-#: ../gio/gsettings-tool.c:468
+#: ../gio/gsettings-tool.c:470
 msgid "Lists the keys in SCHEMA"
 msgstr "列出 SCHEMA 中的键"
 
-#: ../gio/gsettings-tool.c:469 ../gio/gsettings-tool.c:475
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:471 ../gio/gsettings-tool.c:477
+#: ../gio/gsettings-tool.c:483
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:474
+#: ../gio/gsettings-tool.c:476
 msgid "Lists the children of SCHEMA"
 msgstr "列出 SCHEMA 的子对象"
 
-#: ../gio/gsettings-tool.c:480
+#: ../gio/gsettings-tool.c:482
 msgid "List keys and values, recursively"
 msgstr "递归地列出键和值"
 
-#: ../gio/gsettings-tool.c:486
+#: ../gio/gsettings-tool.c:488
 msgid "Gets the value of KEY"
 msgstr "获取 KEY 的值"
 
-#: ../gio/gsettings-tool.c:487 ../gio/gsettings-tool.c:493
-#: ../gio/gsettings-tool.c:505 ../gio/gsettings-tool.c:511
+#: ../gio/gsettings-tool.c:489 ../gio/gsettings-tool.c:495
+#: ../gio/gsettings-tool.c:507 ../gio/gsettings-tool.c:513
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:492
+#: ../gio/gsettings-tool.c:494
 msgid "Queries the range of valid values for KEY"
 msgstr "查询 KEY 的有效值范围"
 
-#: ../gio/gsettings-tool.c:498
+#: ../gio/gsettings-tool.c:500
 msgid "Sets the value of KEY to VALUE"
 msgstr "将 KEY 的值设为 VALUE"
 
-#: ../gio/gsettings-tool.c:499
+#: ../gio/gsettings-tool.c:501
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:504
+#: ../gio/gsettings-tool.c:506
 msgid "Resets KEY to its default value"
 msgstr "将 KEY 重设为默认值"
 
-#: ../gio/gsettings-tool.c:510
+#: ../gio/gsettings-tool.c:512
 msgid "Checks if KEY is writable"
 msgstr "查看 KEY 是否可写"
 
-#: ../gio/gsettings-tool.c:516
+#: ../gio/gsettings-tool.c:518
 msgid ""
 "Monitors KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3127,11 +3128,11 @@
 "如果没有指定 KEY,则监视 SCHEMA 中的所有键。\n"
 "使用 ^C 停止监视。\n"
 
-#: ../gio/gsettings-tool.c:519
+#: ../gio/gsettings-tool.c:521
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:523
+#: ../gio/gsettings-tool.c:525
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -3140,7 +3141,7 @@
 "未知命令 %s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:531
+#: ../gio/gsettings-tool.c:533
 msgid ""
 "Usage:\n"
 "  gsettings COMMAND [ARGS...]\n"
@@ -3182,7 +3183,7 @@
 "使用 'gsettings help 命令' 查询详细的帮助。\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:552
+#: ../gio/gsettings-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3197,11 +3198,11 @@
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:557
+#: ../gio/gsettings-tool.c:559
 msgid "Arguments:\n"
 msgstr "参数:\n"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:563
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3209,19 +3210,19 @@
 "  SCHEMA    方案的名称\n"
 "  PATH      可重定向方案的路径\n"
 
-#: ../gio/gsettings-tool.c:566
+#: ../gio/gsettings-tool.c:568
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       方案中(可选)的键\n"
 
-#: ../gio/gsettings-tool.c:570
+#: ../gio/gsettings-tool.c:572
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       方案中的键\n"
 
-#: ../gio/gsettings-tool.c:574
+#: ../gio/gsettings-tool.c:576
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     要设的值\n"
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 #, c-format
 msgid "Empty schema name given"
 msgstr "给出的方案名称为空"
@@ -3333,15 +3334,15 @@
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "此操作系统上没有实现 g_socket_get_credentials"
 
-#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1364
+#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368
 msgid "Unknown error on connect"
 msgstr "连接时出现未知错误"
 
-#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1248
+#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252
 msgid "Trying to proxy over non-TCP connection is not supported."
 msgstr "不支持通过非 TCP 连接的代理。"
 
-#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1273
+#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277
 #, c-format
 msgid "Proxy protocol '%s' is not supported."
 msgstr "不支持 %s 代理协议。"
@@ -3439,7 +3440,7 @@
 msgstr "SOCKSv5 代理不支持提供的地址类型。"
 
 #: ../gio/gsocks5proxy.c:402
-msgid "Unkown SOCKSv5 proxy error."
+msgid "Unknown SOCKSv5 proxy error."
 msgstr "未知 SOCKSv5 代理错误。"
 
 #: ../gio/gthemedicon.c:498
@@ -3447,15 +3448,15 @@
 msgid "Can't handle version %d of GThemedIcon encoding"
 msgstr "无法处理 GThemedIcon 编码的版本 %d"
 
-#: ../gio/gtlscertificate.c:270
+#: ../gio/gtlscertificate.c:228
 msgid "No PEM-encoded certificate found"
 msgstr "未找到 PEM 加密的证书"
 
-#: ../gio/gtlscertificate.c:279
+#: ../gio/gtlscertificate.c:237
 msgid "Could not parse PEM-encoded certificate"
 msgstr "无法解析 PEM 加密的证书"
 
-#: ../gio/gtlscertificate.c:300
+#: ../gio/gtlscertificate.c:258
 msgid "Could not parse PEM-encoded private key"
 msgstr "无法解析 PEM 加密的私钥"
 
diff --git a/tests/gobject/Makefile.am b/tests/gobject/Makefile.am
index cf97ac3..0ab5bf6 100644
--- a/tests/gobject/Makefile.am
+++ b/tests/gobject/Makefile.am
@@ -61,7 +61,6 @@
 	ifacecheck				\
 	ifaceinit				\
 	ifaceinherit				\
-	ifaceproperties				\
 	override				\
 	performance				\
 	performance-threaded			\
diff --git a/tests/gobject/ifaceproperties.c b/tests/gobject/ifaceproperties.c
deleted file mode 100644
index 3b758cc..0000000
--- a/tests/gobject/ifaceproperties.c
+++ /dev/null
@@ -1,507 +0,0 @@
-/* GObject - GLib Type, Object, Parameter and Signal Library
- * Copyright (C) 2001, 2003 Red Hat, Inc.
- *
- * 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 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#undef	G_LOG_DOMAIN
-#define	G_LOG_DOMAIN "TestIfaceProperties"
-
-#undef G_DISABLE_ASSERT
-#undef G_DISABLE_CHECKS
-#undef G_DISABLE_CAST_CHECKS
-
-#include <string.h>
-
-#include <glib-object.h>
-
-#include "testcommon.h"
-
-/* This test tests interface properties, implementing interface
- * properties and #GParamSpecOverride.
- *
- * Four properties are tested:
- *
- * prop1: Defined in TestIface, Implemented in BaseObject with a GParamSpecOverride
- * prop2: Defined in TestIface, Implemented in BaseObject with a new property
- * prop3: Defined in TestIface, Implemented in BaseObject, Overridden in DerivedObject
- * prop4: Defined in BaseObject, Overridden in DerivedObject
- */
-   
-static GType base_object_get_type ();
-static GType derived_object_get_type ();
-
-enum {
-  BASE_PROP_0,
-  BASE_PROP1,
-  BASE_PROP2,
-  BASE_PROP3,
-  BASE_PROP4
-};
-
-enum {
-  DERIVED_PROP_0,
-  DERIVED_PROP3,
-  DERIVED_PROP4
-};
-
-/*
- * BaseObject, a parent class for DerivedObject
- */
-#define BASE_TYPE_OBJECT          (base_object_get_type ())
-#define BASE_OBJECT(obj)	  (G_TYPE_CHECK_INSTANCE_CAST ((obj), BASE_TYPE_OBJECT, BaseObject))
-typedef struct _BaseObject        BaseObject;
-typedef struct _BaseObjectClass   BaseObjectClass;
-
-struct _BaseObject
-{
-  GObject parent_instance;
-
-  gint val1;
-  gint val2;
-  gint val3;
-  gint val4;
-};
-struct _BaseObjectClass
-{
-  GObjectClass parent_class;
-};
-
-GObjectClass *base_parent_class;
-
-/*
- * DerivedObject, the child class of DerivedObject
- */
-#define DERIVED_TYPE_OBJECT          (derived_object_get_type ())
-typedef struct _DerivedObject        DerivedObject;
-typedef struct _DerivedObjectClass   DerivedObjectClass;
-
-struct _DerivedObject
-{
-  BaseObject parent_instance;
-};
-struct _DerivedObjectClass
-{
-  BaseObjectClass parent_class;
-};
-
-/*
- * The interface
- */
-typedef struct _TestIfaceClass TestIfaceClass;
-
-struct _TestIfaceClass
-{
-  GTypeInterface base_iface;
-};
-
-#define TEST_TYPE_IFACE (test_iface_get_type ())
-
-/* The paramspecs installed on our interface
- */
-static GParamSpec *iface_spec1, *iface_spec2, *iface_spec3;
-
-/* The paramspecs inherited by our derived object
- */
-static GParamSpec *inherited_spec1, *inherited_spec2, *inherited_spec3, *inherited_spec4;
-
-static void
-test_iface_default_init (TestIfaceClass *iface_vtable)
-{
-  inherited_spec1 = iface_spec1 = g_param_spec_int ("prop1",
-						    "Prop1",
-						    "Property 1",
-						    G_MININT, /* min */
-						    0xFFFF,  /* max */
-						    42,       /* default */
-						    G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
-  g_object_interface_install_property (iface_vtable, iface_spec1);
-
-  iface_spec2 = g_param_spec_int ("prop2",
-				  "Prop2",
-				  "Property 2",
-				  G_MININT, /* min */
-				  G_MAXINT, /* max */
-				  0,	       /* default */
-				  G_PARAM_WRITABLE);
-  g_object_interface_install_property (iface_vtable, iface_spec2);
-    
-  inherited_spec3 = iface_spec3 = g_param_spec_int ("prop3",
-						    "Prop3",
-						    "Property 3",
-						    G_MININT, /* min */
-						    G_MAXINT, /* max */
-						    0,	       /* default */
-						    G_PARAM_READWRITE);
-  g_object_interface_install_property (iface_vtable, iface_spec3);
-}
-
-static DEFINE_IFACE (TestIface, test_iface, NULL, test_iface_default_init)
-
-
-static GObject*
-base_object_constructor  (GType                  type,
-			  guint                  n_construct_properties,
-			  GObjectConstructParam *construct_properties)
-{
-  /* The constructor is the one place where a GParamSpecOverride is visible
-   * to the outside world, so we do a bunch of checks here
-   */
-  GValue value1 = { 0, };
-  GValue value2 = { 0, };
-  GParamSpec *pspec;
-
-  g_assert (n_construct_properties == 1);
-
-  pspec = construct_properties->pspec;
-
-  /* Check we got the param spec we expected
-   */
-  g_assert (G_IS_PARAM_SPEC_OVERRIDE (pspec));
-  g_assert (pspec->param_id == BASE_PROP1);
-  g_assert (strcmp (g_param_spec_get_name (pspec), "prop1") == 0);
-  g_assert (g_param_spec_get_redirect_target (pspec) == iface_spec1);
-
-  /* Test redirection of the nick and blurb to the redirect target
-   */
-  g_assert (strcmp (g_param_spec_get_nick (pspec), "Prop1") == 0);
-  g_assert (strcmp (g_param_spec_get_blurb (pspec), "Property 1") == 0);
-
-  /* Test forwarding of the various GParamSpec methods to the redirect target
-   */
-  g_value_init (&value1, G_TYPE_INT);
-  g_value_init (&value2, G_TYPE_INT);
-  
-  g_param_value_set_default (pspec, &value1);
-  g_assert (g_value_get_int (&value1) == 42);
-
-  g_value_reset (&value1);
-  g_value_set_int (&value1, 0x10000);
-  g_assert (g_param_value_validate (pspec, &value1));
-  g_assert (g_value_get_int (&value1) == 0xFFFF);
-  g_assert (!g_param_value_validate (pspec, &value1));
-  
-  g_value_reset (&value1);
-  g_value_set_int (&value1, 1);
-  g_value_set_int (&value2, 2);
-  g_assert (g_param_values_cmp (pspec, &value1, &value2) < 0);
-  g_assert (g_param_values_cmp (pspec, &value2, &value1) > 0);
-  
-  g_value_unset (&value1);
-  g_value_unset (&value2);
-
-  return base_parent_class->constructor (type,
-					 n_construct_properties,
-					 construct_properties);
-}
-
-static void
-base_object_set_property (GObject      *object,
-			  guint         prop_id,
-			  const GValue *value,
-			  GParamSpec   *pspec)
-{
-  BaseObject *base_object = BASE_OBJECT (object);
-  
-  switch (prop_id)
-    {
-    case BASE_PROP1:
-      g_assert (pspec == inherited_spec1);
-      base_object->val1 = g_value_get_int (value);
-      break;
-    case BASE_PROP2:
-      g_assert (pspec == inherited_spec2);
-      base_object->val2 = g_value_get_int (value);
-      break;
-    case BASE_PROP3:
-      g_assert_not_reached ();
-      break;
-    case BASE_PROP4:
-      g_assert_not_reached ();
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-base_object_get_property (GObject                *object,
-			  guint                   prop_id,
-			  GValue                 *value,
-			  GParamSpec             *pspec)
-{
-  BaseObject *base_object = BASE_OBJECT (object);
-
-  switch (prop_id)
-    {
-    case BASE_PROP1:
-      g_assert (pspec == inherited_spec1);
-      g_value_set_int (value, base_object->val1);
-      break;
-    case BASE_PROP2:
-      g_assert (pspec == inherited_spec2);
-      g_value_set_int (value, base_object->val2);
-      break;
-    case BASE_PROP3:
-      g_assert_not_reached ();
-      break;
-    case BASE_PROP4:
-      g_assert_not_reached ();
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-base_object_notify (GObject    *object,
-		    GParamSpec *pspec)
-{
-  /* The property passed to notify is the redirect target, not the
-   * GParamSpecOverride
-   */
-  g_assert (pspec == inherited_spec1 ||
-	    pspec == inherited_spec2 ||
-	    pspec == inherited_spec3 ||
-	    pspec == inherited_spec4);
-}
-
-static void
-base_object_class_init (BaseObjectClass *class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (class);
-
-  base_parent_class= g_type_class_peek_parent (class);
-
-  object_class->constructor = base_object_constructor;
-  object_class->set_property = base_object_set_property;
-  object_class->get_property = base_object_get_property;
-  object_class->notify = base_object_notify;
-
-  g_object_class_override_property (object_class, BASE_PROP1, "prop1");
-
-  /* We override this one using a real property, not GParamSpecOverride
-   * We change the flags from READONLY to READWRITE to show that we
-   * can make the flags less restrictive
-   */
-  inherited_spec2 = g_param_spec_int ("prop2",
-				      "Prop2",
-				      "Property 2",
-				      G_MININT, /* min */
-				      G_MAXINT, /* max */
-				      0,	       /* default */
-				      G_PARAM_READWRITE);
-  g_object_class_install_property (object_class, BASE_PROP2, inherited_spec2);
-
-  g_object_class_override_property (object_class, BASE_PROP3, "prop3");
-  
-  inherited_spec4 = g_param_spec_int ("prop4",
-				      "Prop4",
-				      "Property 4",
-				      G_MININT, /* min */
-				      G_MAXINT, /* max */
-				      0,	       /* default */
-				      G_PARAM_READWRITE);
-  g_object_class_install_property (object_class, BASE_PROP4, inherited_spec4);
-}
-
-static void
-base_object_init (BaseObject *base_object)
-{
-  base_object->val1 = 42;
-}
-
-static DEFINE_TYPE_FULL (BaseObject, base_object,
-			 base_object_class_init, NULL, base_object_init,
-			 G_TYPE_OBJECT,
-			 INTERFACE (NULL, TEST_TYPE_IFACE))
-
-static void
-derived_object_set_property (GObject      *object,
-			     guint         prop_id,
-			     const GValue *value,
-			     GParamSpec   *pspec)
-{
-  BaseObject *base_object = BASE_OBJECT (object);
-
-  switch (prop_id)
-    {
-    case DERIVED_PROP3:
-      g_assert (pspec == inherited_spec3);
-      base_object->val3 = g_value_get_int (value);
-      break;
-    case DERIVED_PROP4:
-      g_assert (pspec == inherited_spec4);
-      base_object->val4 = g_value_get_int (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-derived_object_get_property (GObject                *object,
-			     guint                   prop_id,
-			     GValue                 *value,
-			     GParamSpec             *pspec)
-{
-  BaseObject *base_object = BASE_OBJECT (object);
-
-  switch (prop_id)
-    {
-    case DERIVED_PROP3:
-      g_assert (pspec == inherited_spec3);
-      g_value_set_int (value, base_object->val3);
-      break;
-    case DERIVED_PROP4:
-      g_assert (pspec == inherited_spec4);
-      g_value_set_int (value, base_object->val4);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-derived_object_class_init (DerivedObjectClass *class)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (class);
-
-  object_class->set_property = derived_object_set_property;
-  object_class->get_property = derived_object_get_property;
-
-  /* Overriding a property that is itself overridding an interface property */
-  g_object_class_override_property (object_class, DERIVED_PROP3, "prop3");
-
-  /* Overriding a property not from an interface */
-  g_object_class_override_property (object_class, DERIVED_PROP4, "prop4");
-}
-
-static DEFINE_TYPE (DerivedObject, derived_object,
-		    derived_object_class_init, NULL, NULL,
-		    BASE_TYPE_OBJECT)
-
-/* Helper function for testing ...list_properties()
- */
-static void
-assert_in_properties (GParamSpec  *param_spec,
-		      GParamSpec **properties,
-		      gint         n_properties)
-{
-  gint i;
-  gboolean found = FALSE;
-
-  for (i = 0; i < n_properties; i++)
-    {
-      if (properties[i] == param_spec)
-	found = TRUE;
-    }
-
-  g_assert (found);
-}
-
-int
-main (gint   argc,
-      gchar *argv[])
-{
-  BaseObject *object;
-  GObjectClass *object_class;
-  TestIfaceClass *iface_vtable;
-  GParamSpec **properties;
-  guint n_properties;
-  
-  gint val1, val2, val3, val4;
-	
-  g_log_set_always_fatal (g_log_set_always_fatal (G_LOG_FATAL_MASK) |
-			  G_LOG_LEVEL_WARNING |
-			  G_LOG_LEVEL_CRITICAL);
-  g_type_init ();
-
-  object = g_object_new (DERIVED_TYPE_OBJECT, NULL);
-
-  /* Test setting and getting the properties
-   */
-  g_object_set (object,
-		"prop1", 0x0101,
-		"prop2", 0x0202,
-		"prop3", 0x0303,
-		"prop4", 0x0404,
-		NULL);
-  g_object_get (object,
-		"prop1", &val1,
-		"prop2", &val2,
-		"prop3", &val3,
-		"prop4", &val4,
-		NULL);
-
-  g_assert (val1 == 0x0101);
-  g_assert (val2 == 0x0202);
-  g_assert (val3 == 0x0303);
-  g_assert (val4 == 0x0404);
-
-  /* Test that the right spec is passed on explicit notifications
-   */
-  g_object_freeze_notify (G_OBJECT (object));
-  g_object_notify (G_OBJECT (object), "prop1");
-  g_object_notify (G_OBJECT (object), "prop2");
-  g_object_notify (G_OBJECT (object), "prop3");
-  g_object_notify (G_OBJECT (object), "prop4");
-  g_object_thaw_notify (G_OBJECT (object));
-
-  /* Test g_object_class_find_property() for overridden properties
-   */
-  object_class = G_OBJECT_GET_CLASS (object);
-
-  g_assert (g_object_class_find_property (object_class, "prop1") == inherited_spec1);
-  g_assert (g_object_class_find_property (object_class, "prop2") == inherited_spec2);
-  g_assert (g_object_class_find_property (object_class, "prop3") == inherited_spec3);
-  g_assert (g_object_class_find_property (object_class, "prop4") == inherited_spec4);
-
-  /* Test g_object_class_list_properties() for overridden properties
-   */
-  properties = g_object_class_list_properties (object_class, &n_properties);
-  g_assert (n_properties == 4);
-  assert_in_properties (inherited_spec1, properties, n_properties);
-  assert_in_properties (inherited_spec2, properties, n_properties);
-  assert_in_properties (inherited_spec3, properties, n_properties);
-  assert_in_properties (inherited_spec4, properties, n_properties);
-  g_free (properties);
-
-  /* Test g_object_interface_find_property()
-   */
-  iface_vtable = g_type_default_interface_peek (TEST_TYPE_IFACE);
-
-  g_assert (g_object_interface_find_property (iface_vtable, "prop1") == iface_spec1);
-  g_assert (g_object_interface_find_property (iface_vtable, "prop2") == iface_spec2);
-  g_assert (g_object_interface_find_property (iface_vtable, "prop3") == iface_spec3);
-
-  /* Test g_object_interface_list_properties()
-   */
-  properties = g_object_interface_list_properties (iface_vtable, &n_properties);
-  g_assert (n_properties == 3);
-  assert_in_properties (iface_spec1, properties, n_properties);
-  assert_in_properties (iface_spec2, properties, n_properties);
-  assert_in_properties (iface_spec3, properties, n_properties);
-  g_free (properties);
-
-  g_object_unref (object);
-
-  return 0;
-}
diff --git a/tests/testglib.c b/tests/testglib.c
index b4e29f0..158808a 100644
--- a/tests/testglib.c
+++ b/tests/testglib.c
@@ -1038,6 +1038,7 @@
   g_hash_table_destroy (hash_table);
 }
 
+#ifndef G_DISABLE_DEPRECATED
 static void
 relation_test (void)
 {
@@ -1110,6 +1111,7 @@
 
   relation = NULL;
 }
+#endif
 
 static void
 gstring_tests (void)
@@ -1539,7 +1541,9 @@
   g_test_add_func ("/testglib/GTree", binary_tree_test);
   g_test_add_func ("/testglib/Arrays", test_arrays);
   g_test_add_func ("/testglib/GHashTable", hash_table_tests);
-  g_test_add_func ("/testglib/Relation", relation_test);
+#ifndef G_DISABLE_DEPRECATED
+  g_test_add_func ("/testglib/Relation (deprecated)", relation_test);
+#endif
   g_test_add_func ("/testglib/File Paths", test_paths);
   g_test_add_func ("/testglib/File Functions", test_file_functions);
   g_test_add_func ("/testglib/Parse Debug Strings", test_g_parse_debug_string);